一些常用的方法
IP代理
对于IP代理,各个语言的Native Request API都提供的IP代理响应的API, 需要解决的主要就是IP源的问题了
网络上有廉价的代理IP(1元4000个左右), 我做过简单的测试, 100个IP中, 平均可用的在40-60左右, 访问延迟均在200以上
网络有高质量的代理IP出售, 前提是你有渠道
因为使用IP代理后, 延迟加大, 失败率提高, 所以可以将爬虫框架中将请求设计为异步, 将请求任务加入请求队列(RabbitMQ,Kafka,Redis), 调用成功后再进行回调处理, 失败则重新加入队列 每次请求都从IP池中取IP, 如果请求失败则从IP池中删除该失效的IP
Cookies
有一些网站是基于cookies做反爬虫, 这个基本上就是如 @朱添一 所说的, 维护一套Cookies池
注意研究下目标网站的cookies过期事件, 可以模拟浏览器, 定时生成cookies
限速访问
像开多线程,循环无休眠的的暴力爬取数据, 那真是分分钟被封IP的事, 限速访问实现起来也挺简单(用任务队列实现), 效率问题也不用担心, 一般结合IP代理已经可以很快地实现爬去目标内容
一些坑
大批量爬取目标网站的内容后, 难免碰到红线触发对方的反爬虫机制 所以适当的告警提示爬虫失效是很有必有的
一般被反爬虫后, 请求返回的>有的时候,当我们的爬虫程序完成了,并且在本地测试也没有问题,爬取了一段时间之后突然就发现报错无法抓取页面内容了。这个时候,我们很有可能是遇到了网站的反爬虫拦截。
我们知道,网站一方面想要爬虫爬取网站,比如让搜索引擎爬虫去爬取网站的内容,来增加网站的搜索排名。另一方面,由于网站的服务器资源有限,过多的非真实的用户对网站的大量访问,会增加运营成本和服务器负担。
这是一种最基本的反爬虫方式,网站运营者通过验证爬虫的请求头的 User-agent,accep-enconding 等信息来验证请求的发出宿主是不是真实的用户常用浏览器或者一些特定的请求头信息。
通过 Ajax,或 者javascript 来动态获取和加载数据,加大爬虫直接获取数据的难度。
这个相信大多数读者非常熟悉了吧,当我们输错多次密码的时候,很多平台都会d出各种二维码让我们识别,或者抢火车票的时候,会出现各种复杂的验证码,验证码是反爬虫措施中,运用最广,同时也是最有效直接的方式来阻止爬虫的措施之一。
在识别到某些异常的访问的时候,网站运营者会设置一个黑名单,把一些判定为爬虫的IP进行限制或者封杀。
有些网站,没有游客模式,只有通过注册后才可以登录看到内容,这个就是典型的使用账号限制网站,一般可以用在网站用户量不多,数据安全要求严格的网站中。
我们可以在请求头中替换我们的请求媒介,让网站误认为是我们是通过移动端的访问,运行下面的代码后,当我们打开 hupuhtml,我们会发现返回的是移动端的虎扑的页面而不是网页端的。
比如,我们可以设置一个随机的间隔时间,来模拟用户的行为,减少访问的次数和频率。 我们可以在我们爬虫的程序中,加入如下的代码,让爬虫休息3秒左右,再进行爬取,可以有效地避开网站的对爬虫的检测和识别。
代理就是通过访问第三方的机器,然后通过第三方机器的 IP 进行访问,来隐藏自己的真实IP地址。
由于第三方代理良莠不齐,而且不稳定,经常出现断线的情况,爬取速度也会慢许多,如果对爬虫质量有严格要求的话,不建议使用此种方法进行爬取。
可以通过动态的 IP 拨号服务器来变换 IP,也可以通过 Tor 代理服务器来变换 IP。
反反爬虫的策略,一直是在变换的,我们应该具体问题具体分析,通过不断的试错来完善我们的爬虫爬取,千万不要以为,爬虫程序在本机调试之后,没有问题,就可以高枕无忧了。线上的问题,总是千变万化,我们需要根据我们的具体反爬措施,来针对的写一些反反爬虫的代码,这样才能保证线上环境的万无一失。1、useragent模仿谷歌浏览器,获取十几个,爬的过程中不断轮换ip。
2、通过注册等各种方法,获取一个真实账号,模拟登陆,每次请求携带登录产生的cookie。
3、设置定时器,直接爬取所有能爬取的数据。问题:打开网页不能正常加载,服务器拒绝访问
···
···
stealthminjs文件获取 请自行关注大佬公众号获取: 未闻Code 回复关键字:stealth
我们可以用16进制编辑器将chromedriverexe打开,查找var key= '$cdc_asdjflasutopfhvcZLmcfl_ ',将引号中的字符替换成任意字符即可
我们在Linux中安装hexedit:
···
···
安装完成后,运行命令,将chromedriverexe用16进制打开
···
···
通过Tab键将光标定位到右侧栏,按Ctrl+S进行查找'$cdc_asdjflasutopfhvcZLmcfl_ '然后直接输入替换原有字符后替换完成按Ctrl+W保存,Ctrl+X退出。
然后就可以完美避开反爬机制了
参考文案: >
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)