1. 通过headers字段来反爬
1.1 通过headers中的user-agent字段来反爬
- 反爬原理:爬虫默认情况下没有user-agent,而是使用模块默认设置
- 解决办法:请求签添加user-agent即可,或者使用user-agent池来解决
1.2 通过referer字段或者其他字段来反爬 - 反爬原理:爬虫默认情况下不会带上referer字段,服务器端通过判断请求发起的源头,以此判断请求是否合法
- 解决办法:添加referer字段
1.3 通过cookies字段反爬 - 反爬原理:通过检查cookies来查看发起请求的用户是否具备相应权限,以此来反爬
- 解决办法:进行模拟登录,成功获取cookies后进行数据爬取
2. 通过请求参数来反爬
2.1 通过html静态文件中获取请求数据(github登录数据)
反爬原理:通过增加获取请求参数的难度来进行反爬
解决方案:仔细分析抓包得到的每一个包,搞清楚请求之间的联系
2.2 通过发送请求获取请求数据
反爬原理:通过增加获取请求参数的难度进行反爬
解决方案:仔细分析抓包得到的每一个包,搞清楚请求之间的联系,搞清楚请求参数的来源
2.3通过js生成请求参数
反爬原理:js生成了请求参数
解决方案:分析js,观察加密的实现过程,通过js2py获取js执行结果,或者使用selenium来实现
2.4通过验证码来反爬
反爬原理:对方服务器通过弹出验证码强制验证用户浏览行为
解决方法:打码平台或者是机器学习的方法识别验证码