这里只谈数据采集/爬虫开发过程中可能遇到一些问题/反爬机制,以及如何解决(问题解决思路),其他的暂时不谈。
可能会遇到的一些问题:
- 目标网站/app没有做反扒机制,那这就很好搞了,你就放开了随便爬,爬他个天荒地老、海枯石烂,只要服务器不到。
- 目标网站/app会做一些简单的Referer、host、head请求头验证等。
- 目标网站会做一些登录之类的cookie验证(如淘宝)。
- 目标网站会一些高级的用户行为检测判断来访者是否是真人用户。
- js渲染模板、token验证机制 ,或者有验证码。
- 请求频繁要验证,ip被限制,拉黑等
解决方案:
2.curl自己设置伪造Referer、host、head即可。
3.两个解决办法,简单就是登录目标网站后手动复制cookie字符串,写程序里,请求的时候带上cookie就可完美解决。
4.目前能用到这种复杂技术的网站极少极少,至少目前为止我就碰到过一个国外网站是这样的。解决方案是:可采用php内置v8引擎解决运行,或者向插入一些js代码、chrome扩展采集、c#桌面开发调webkit从浏览器内核去数据。
5.目标网站的token是一个比较棘手麻烦的东西,不过这不算什么,就没有哥解决不了的问题:看此token从哪里来的,也模拟去请求然后获得此token,或者直接先去模板里提取token然后拿到token再请求接口数据、若是js加密生成的token,那我们只需从js入手,找到加密算法即可(也有可能js也加密了,要先解密js)、如果人访问的时候没有验证码,而程序爬的时候有,那一定是被检测出有爬虫了特征了,对于这个问题,其实比较棘手,要么被检测出来到原因,要么对接打码平台识别验证或者自己手写php识别也行。
7.如果是服务器限制每分钟每个ip/用户只能请求多少次,那如果是ip的话,我们只需要换ip就可以换解决,如果是限制用户,那我们就换cookie(里面存的是sessionid)以实现切换用户帐号的目的、ip被限制拉黑同上准备大量ip池就ok ,期间发现被限制ip就换ip,目前代理的有这么几种方式:pptp、vpn(加密流量传输,有更好的隐匿性和流量混淆功能,带网络速度会可能慢)。
反爬虫几乎和爬虫同时诞生,它们是相爱相杀的连个技术,如果没有爬虫就没有反扒,而反扒技术又反过来又可以促进爬虫技术的发展,是不是很有趣?