1.封 User-agent:判断用户师傅是浏览器访问。
解决方法:添加多个UA/更换UA
2.封ip:判断请求来源的ip地址,如果一个ip过于频繁的访问一个网站,有可能会当做爬虫封掉。
解决方法:使用代理ip发送请求
案例:拉钩招聘数据
3.封cookie:同一个账号,请求频率过高或请求数量过高,会被禁掉 。服务器会对每个访问的人返回set-cookie,并需要在下一次请求的时候带上set-cookie的值。
解决方法:换小号/控制请求频率/带上set-cookie的值,使用多个账号做随机cookie
案例:招聘狗的简历数据。
4. ajax异步传输: 服务器与客户端交互的过程中使用ajax技术传输数据包到客户端,通过浏览器的渲染,最终展示到用户面前。
解决办法:在响应的json数据中找到对应的真实数据
5.js加密:网页的开发者会将重要的信息放在js代码中,通过浏览器的渲染展示出来。而爬虫不具备自动渲染的能力,所以无法读取js时间产生的信息。 动态cookie的某个值也可能是js加密出来的。
解决方案:无界面浏览器和模拟加密过程,写出加密的方法,然后把加密后的内容返回出来,使用python代码执行j,得到结果
案例:网易云音乐,中国商标网,中国国际航空
6.普通验证码:当某一用户访问次数过多,就会自动的让请求跳转到验证码页面,只有输入正确的验证码之后才能继续访问。
解决方法:使用第三方打码平台例如;超级鹰
案例:人人网
7.滑块验证码:当某一用户访问次数过多,就会自动的让请求跳转到验证码页面,只有输入正确的验证码之后才能继续访问。
解决方法:
1.使用pillow识别出滑块验证码的缺口,计算出要移动的距离
2.将移动距离分为多个小段,再用selenium控制鼠标移动,前面几个小段加速移动,后面几个小段减速移动
3.为了避免被识别出是机器人,先随便来回移动下验证码,再讲它移动到合适的位置
案例:天眼查,中国保温网
8.特殊验证码:点击字或者特殊符号
解决方法:
1.使用百度接口或者pillow识别出字体或者特殊符号
2.将鼠标移动到字或者特殊符号对应的坐标,在触发点击事件
案例:招聘狗的企业登录,知乎登录,当当网登录
9.自定义字体:部分网站会通过自定义字体的方式对重要数据进行伪装处理
解决方法:下载字体文件,用python的fontools库解析字体文件,获得字符映射
1.若不是每次动态变化的字体文件,可以手动写字与字符的映射来获取数据。
2.若是每次动态变化的字体,则需要识别字体轮廓对应的字,在动态做字与字符的映射来获取数据。
案例:58简历数据,猫眼电影数据
10.中文乱码:返回的响应数据中的中文是乱码的
解决方法:用原生二进制字符串手动解码
案例:国家信息安全漏洞共享平台
11.只显示定量的数据:响应返回的数据不全,只有一部分。
解决方法:认真分析网站,尽可能多的匹配查询条件,尽可能对的找不同获取数据的url
案例:百度失信被执行人数据
12.响应的数据非json非HTML
解决方法:当做字符串处理,用正则表达式匹配
案例:百度失信人,球探网,中国竞彩网
13.动态变化的cookie
解决方法:设置全局cookie,当cookie失效的时候,重新发请求获得到cookie的url,然后更新掉全局的cookie
案例:大街网招聘数据。
后续追加。。。。。。。。。。。。。。