常见站点模拟登陆(长期维护):https://github.com/IMWoolei/fuck-login
爬虫的任务不仅仅是采集数据
,自动刷访问量
、自动发布内容
等都属于爬虫所涉及的范围。
而完成自动刷访问量、发布这些功能往往都需要在登陆状态下进行,另外HTTP是无连接\无状态
的,所以实现登陆的目的是在本地生成Cookies
,以记录本次会话状态。
另外携带Cookies
的请求,可以在爬虫中解决一些反爬机制、采集数据量有限的问题,如在知乎信息采集中缺少Cookies
会无法获取目标信息,采集搜狗微信时未登陆情况下只能请求前10页…
账号密码明文提交,不做任何加密,如GitHub
、豆瓣
、CSDN(现在已更新了)
等站点;
账号密码进行加密或JS
生成附带信息,如SHA1
、MD5
、HMAC
、AES
、Base64
等多种加密方式,如搜狐新闻,拉勾网;
额外需要提交验证码信息,多数站点都会选择这种方式,bilibili
的极验、搜狗微信
的数字字母、知乎的中文汉字等;
预登陆操作,即登陆之前首先向服务器获取登陆信息,用于构造本次登录,如新浪微博;
等等…
项目地址:https://github.com/IMWoolei/fuck-login
接下来会不断新增站点和维护原有的登陆程序。
为了保证执行效率,所有的登陆方式都不使用Selenium/Appnium
来实现,直接创建session
进行记录本次会话。
主要的思路如下:
账号和密码是否进行了加密
无加密,直接提交;
有加密,通常是js
执行生成的加密字符串,找到加密代码块;
是否附带了其他的必要的登陆信息,如表单中的name
+value
;
初始的会话Cookies
信息是否存在登陆的必要信息
Header
信息中的set-cookie
;Cookies
由js
生成,构建js
生成Cookies
的方法;是否存在验证码
PC-Web
进行登陆时会出现验证码,而使用移动浏览器Web
页面时则不会出现验证码;PC-Web
中登陆时会出现滑块验证码
,而在移动浏览器Web
页面时是字母+数字的文字验证码
,如果有可用的打码平台或识别模型,文字验证码更为方便接入;