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