我想阻止yandex.rusearch机器人的所有请求。 这是非常stream量密集(2GB /天)。 我第一次阻止了一个C类IP范围,但似乎这个僵尸程序出现在不同的IP范围。
例如:
spider31.yandex.ru – > 77.88.26.27 spider79.yandex.ru – > 95.108.155.251等。
我可以在robots.txt中join一些否认,但不确定是否尊重这一点。 我想阻止IP范围的列表。
有人可以提出一些通用的解决scheme。
不要相信你在论坛上读到这个! 相信你的服务器日志告诉你。 如果Yandex服从robots.txt,您会在日志中看到证据。 我亲眼看到Yandex机器人甚至不读取robots.txt文件!
不要浪费时间与长IP列表,只会大大减缓您的网站。
在.htaccess(在每个站点的根文件夹中)中input以下行:
SetEnvIfNoCase User-Agent "^Yandex*" bad_bot Order Deny,Allow Deny from env=bad_bot
我做了,所有的Yandex现在得到403访问被拒绝的错误。
再见了Yandex!
我在这里(名誉)太年轻,发布所有我需要的URL作为超链接,所以请原谅我的加括号的url。
Dan Andreatta的论坛链接 ,还有一个 ,有一些但不是全部你需要的。 您将需要使用他们的方法来查找IP号码,并编写脚本以保持您的列表清新。 然后你想要这样的东西,向你展示一些已知的值,包括他们已经使用的子域命名scheme。 在他们的知识产权范围保持crontabbed的眼睛,也许自动化的东西来估计一个合理的CIDR (我没有发现任何提及他们的实际分配;可能只是谷歌失败@我)。
尽可能准确地find他们的IP范围,这样你就不用浪费时间在用户等待的时候做一个反向的DNS查询( http:// yourdomain / notpornipromise ),而是只做一个比较匹配什么的。 谷歌刚给我看grepcidr ,看起来高度相关。 从链接页面:“grepcidr可用于根据一个或多个无类别域间路由(CIDR)规范或由地址范围指定的任意networking筛选IP地址列表。 我认为它的目的是build立已知的I / O代码是很好的,但是你知道你可以用十亿种不同的方法重现这个function。
我能想到的最多的“一般性解决scheme”,实际上希望分享(说出事物的存在和所有这些),让你开始在你的位置上写下这样的罪犯的数据库,然后花一些时间小时思考和研究如何捍卫和反击行为。 这使您更深入地了解入侵检测,模式分析和蜂巢网,而不是这个具体问题真正保证的范围。 但是,在这个研究的范围内,您提出了这个问题的无数答案。
我发现这是由于Yandex在我自己的网站上有趣的行为。 我不会打电话给我看到我自己的日志虐待,但spider50.yandex.ru消耗我的访问计数的2%,和我的带宽的1%…我可以看到机器人将真正辱骂大型文件和论坛等,这两者都不可用于我今天看到的服务器上的滥用。 有趣的是,有必要进行调查的是bot看着/robots.txt,然后等待4到9个小时,然后询问一个/目录/不在其中,然后等待4到9个小时,询问/ another_directory /,然后可能是一个再多一些,再/ / robots.txt,重复广告有限。 就频率而言,我想他们已经足够好了,而spider50.yandex.ru机器似乎也尊重/robots.txt。
我今天不打算阻止他们离开这个服务器,但是如果我分享Ross的经验,我会的。
对于我们在服务器的情况下处理的微小号码的参考,今天:
Top 10 of 1315 Total Sites By KBytes # Hits Files KBytes Visits Hostname 1 247 1.20% 247 1.26% 1990 1.64% 4 0.19% ip98-169-142-12.dc.dc.cox.net 2 141 0.69% 140 0.72% 1873 1.54% 1 0.05% 178.160.129.173 3 142 0.69% 140 0.72% 1352 1.11% 1 0.05% 162.136.192.1 4 85 0.41% 59 0.30% 1145 0.94% 46 2.19% spider50.yandex.ru 5 231 1.12% 192 0.98% 1105 0.91% 4 0.19% cpe-69-135-214-191.woh.res.rr.com 6 16 0.08% 16 0.08% 1066 0.88% 11 0.52% rate-limited-proxy-72-14-199-198.google.com 7 63 0.31% 50 0.26% 1017 0.84% 25 1.19% b3090791.crawl.yahoo.net 8 144 0.70% 143 0.73% 941 0.77% 1 0.05% user10.hcc-care.com 9 70 0.34% 70 0.36% 938 0.77% 1 0.05% cpe-075-177-135-148.nc.res.rr.com 10 205 1.00% 203 1.04% 920 0.76% 3 0.14% 92.red-83-54-7.dynamicip.rima-tde.net
这是一个共享主机,甚至不打扰带宽的限制,如果抓取采取了类似DDoS的forms,他们可能会注意到,并阻止它,我会的。 所以,我并不生气。 实际上,我更喜欢把自己写在日志中的数据放在一起玩。
Ross,如果你真的为2GB /天输给Yandex而感到愤怒,那么你可能会把这些垃圾邮件放在一边 。 这就是它的目的! 把它们从你不想让他们下载的地方重新包装起来,或者通过HTTP 301直接到垃圾邮件子域,或者自己推出,这样你就可以控制逻辑并获得更多的乐趣。 这种解决scheme为您提供稍后重用的工具,甚至更有必要。
然后开始更深入地查看你的日志中的有趣的这样的:
217.41.13.233 - - [31/Mar/2010:23:33:52 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:33:54 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:33:58 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:00 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:01 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:03 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:04 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:05 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:06 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:09 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:14 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:16 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:17 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:18 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:21 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:23 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:24 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:26 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:27 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)" 217.41.13.233 - - [31/Mar/2010:23:34:28 -0500] "GET /user/ HTTP/1.1" 404 15088 "http://www.google.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 5.1 (build 02228); .NET CLR 1.1.4322; InfoPath.2; .NET CLR 2.0.50727)"
提示:服务器上不存在/ user /目录,也没有超链接。
根据这个论坛 ,yandex机器人行为良好,并尊重robots.txt 。
他们特别说
Yandex的行为与Google的robots.txt非常相似。bot每次进入域时都不会看到robots.txt。
像Yandex,Baudi和Sohu这样的机器人都performance得相当好,因此被允许。 他们中没有一个去过我不希望他们去的地方,而且分析速度并没有打破银行的带宽限制。
就我个人而言,我没有问题,谷歌是迄今为止我所拥有的网站中最具攻击性的爬虫。
我目前的解决scheme是(对于NGINXnetworking服务器):
if ($http_user_agent ~* (Yandex) ) { return 444; }
这是不区分大小写的。 它返回响应444。
该指令查看用户代理string,如果检测到“Yandex”,则连接closures而不发送任何头文件。 444是Nginx守护进程可以理解的自定义错误代码
通过将这些行添加到.htaccess文件中,将所有来自77.88.26.27(或任何IP)的访问者定位到以.shtml结尾的页面:
# permanently redirect specific IP request for entire site Options +FollowSymlinks RewriteEngine on RewriteCond %{REMOTE_HOST} 77\.88\.26\.27 RewriteRule \.shtml$ http://www.youtube.com/watch?v=oHg5SJYRHA0 [R=301,L]
每当Yandex机器人尝试为您的网站build立索引时,它现在都会被rickrolled。 问题解决了。
请人们查看OSI模型。 我build议你在路由级别阻塞这个networking。 这是networkingOSI模型的第三个(第四传输层)。 如果您在服务器级别阻止他们,它是在第四(第5,6,7)层,并已通过。 内核也能够像Apache服务器一样处理这些请求100倍。 RewriteRule over RewriteRule,SetEnv指令等等都只是在窃听你的服务器,而不pipe你是否提供了酷403.一个请求是一个请求,Yandex也是百度做了很多,而谷歌也在后台扫描! 你真的很喜欢被淹没的请求,这将花费你的Web服务器插槽和百度是有目的的这样做的知道。
61.51.16.0 - 61.51.31.255 61.51.16.0/20#(百度中国 - 北京) 14.136.0.0 - 14.136.255.255 14.136.0.0/16#(百度中国 - 香港) 123.125.71.0 - 123.125.71.255 123.125.71.0#(百度中国) 14.208.0.0 - 14.223.255.255 14.208.0.0/12#(百度中国) 95.108.241.0 - 95.108.241.255 95.108.241.0#(YandexBot俄罗斯联邦) 95.108.151.0 - 95.108.151.255 95.108.151.0#(YandexBot俄罗斯联邦) 119.63.192.0 - 119.63.199.255 119.63.192.0/21#(百度日本公司) 119.63.192.0 - 119.63.199.255 119.63.196.0/24#(百度日本公司) 180.76.0.0 - 180.76.255.255 180.76.0.0/16#(北京百度广场百度中国) 220.181.0.0 - 220.181.255.255 220.181.108.0/24#(CHINANET北京网)
新范围:(更新周二,2012年5月8日)
123.125.71.0 - 123.125.71.255 123.125.71.0/24#(百度中国) 202.46.32.0 - 202.46.63.255 202.46.32.0/19#(百度中国)
新的范围:(更新太阳,2012年5月13日)
39.112.0.0 - 39.127.255.255 39.112.0.0/12#韩国 211.148.192.0 - 211.148.223.255 211.148.192.0/19#中国(深圳)