高手们你们是怎么防爬虫的?有没有开源项目专做防爬虫?
高手们你们是怎么防爬虫的?有没有开源项目专做防爬虫?
1楼(未知网友)
robots.txt
2楼(站大爷用户)
1.爬过一个网站。这个网站有些内容必须用他们提供的客户端才能看到。客户端和服务器之间虽然是http通讯,但是每次都产生不同的KEY在URL中。且每个用户每天有数量限制。
上面的策略不能应用普通网站。
2.有的网站需要10多次认证,每次认证都产生不同的key(而且是多个)放到cookie中。
光分析那些认证的request就醉了。
后果:用户登录很慢,而且有时候还登录不上
3楼(站大爷用户)
不断的调整和对抗的过程
4楼(未知网友)
如何对付网络爬虫
一直误认为所有网站都希望爬虫来爬的,因为这样增加网站访问量嘛,看了你的问题才知道不是这样。自以为是害死人啊。
5楼(匿名用户)
我就说说怎么“反反爬虫”的吧,你通过这个想想怎么“反爬虫”。
欢迎评论里添加更多”反爬虫“的方式,我来告诉你们怎么“反反爬虫“
ip次数限制:每个请求都用代理,还用不同的代理。
复杂的js交互:用code开浏览器,模拟各种鼠标键盘事件。
验证码:OCR或者用在线人工打码的服务。
token: 买email地址/买token/使用用户的token
6楼(站大爷用户)
能防的爬虫都是因为你的网站资源没那么吸引人,只要数据够分量,爬虫就能基本能搞定。
楼上说的速度问题,爬虫可以随意控制爬取间隔,多IP,延时爬取,分布式。封IP?云主机有的是IP让你来封。
验证码是个棘手的问题,简单点的有图像识别。复杂的?有人工打码啊,1w码才要10块钱~~~你有100块钱的页面吗?
数据混淆,也很容易啊,反正都是解析页面,大不了用浏览器爬取。
内容才是王道啊同学!alexa排名上去了再考虑防爬好吗!
7楼(站大爷用户)
防爬虫,简单来说,就是在尽量减少对正常用户的干扰的情况下尽可能的加大爬虫的成本。
而反防爬虫,或者说制造隐蔽性强的爬虫,就是尽量模拟正常用户的行为。
这两者是动态博弈的。大公司基本都有防爬的项目,以保护数据安全。
你去试试爬几个大网站就知道了。
比如,github 用的是 rate limit , 就搜索接口而言,对非登录用户限制非常严格,一小时只允许几十次搜索。而对登录账号则很宽松。这样就把行为统计规约到了账号上,毕竟换账号成本比 ip 高。
而谷歌则更复杂,比如它会在网页中执行一段 js , js 中做一些校检,然后服务器端将请求数据对比,这样那些不支持动态解析的爬虫就都死了。
另外谷歌也会维护一份代理 ip列表,这样即使你使用代理也很容易死,当然很多收费代理使用的是一些黑科技,确实可以绕过这份列表。
阿里内部也有一套专门的防爬系统,用的一个比较复杂的建模策略,能够直接无视代理 ip 的更换,从行为模式上检测出爬虫。比如一些特定数据受到非正常量级的请求,那么就可以判定有人在做坏事了。
当然防爬有误报是正常的,所以一般反爬系统都要做一个容限,只有超过一定阀值了才会 bang 掉你。即使 bang 掉了,一般也是让你填一个验证码。无论你是做验证码识别,还是花钱人肉打码,他的目的其实都达到了:增加爬取者的成本。
所以简单来说,一个成功的爬虫,需要这几个特点:
模拟浏览器提交。
简单的,使用 webkit 来提交数据,这个基本可以过大多数浏览源检测的反爬系统了。
但是有的反爬系统检测浏览源的时候,会根据大众浏览器的一些特性,比如 IE,Firefox,Chrome 等的私有 js 函数来判定浏览器,这样 webkit ,以及一些封装好的 无界面浏览器 也被当成爬虫了。当然,你也可以利用调用 chromuim 来爬取数据,但是这个资源开销就更大了。
控制单 ip/账号 频率。
挂私有代理来爬的就不说了,大家都会用,但是对于一般人来说,几万 ip 差不多是极限了,所以一个 ip 还是得多次请求,账号同理。而控制了爬取速度,则意味着爬完一圈需要更多时间。时间都是成本。
控制爬取策略。
如果简单的只对目标数据进行爬取,那么如果反爬系统对访问概况和用户行为进行分析,其实很简单就能判定爬虫的那堆 ip : 你除了这堆数据什么都没访问,一看就不是正常用户。
当然策略这个东西,就需要更多的博弈了。爬虫要增加迷惑度,需要去访问一些无关的东西,最后是研究正常用户的访问流程,然后模拟一遍。再者,控制速度。毕竟反爬系统的统计区间是肯定有限制的,不可能拿一个月的数据都分析一遍找出爬虫。
以上,其实懂了爬虫的策略,反爬策略也很明朗了。
爬虫成本
反爬系统的存在,意义就在于增加这个成本。当然也需要衡量自身的成本,毕竟不能本末倒置,反爬成本太高就没价值了。
8楼(未知网友)
1.反爬虫其实非常非常简单,反反爬虫才麻烦。(你没看错,是“反反爬虫”,我没打错字)。
2.反爬虫的关键是抓住爬虫的特点:爬虫是机器,不是人:
特点1:非人,所以爬虫访问速度快,访问次数多。
特点2:非人,所以人做不到的事情爬虫能做到。
特点3:非人,所以人能做到的事情爬虫做不到。
3.针对以上三个特点,反爬虫的具体策略也就呼之欲出。
特点1、2、3对应的策略的例子,详见评论。
除此之外其实还有一种技术压制型策略,大家猜猜?可以发评论。