如何使用robots.txt或.htaccess禁用爬虫360Spider?

kov*_*ack 6 .htaccess search-engine robots.txt bots web-crawler

我有一个问题因为360Spider:这个机器人每秒向我的VPS发出太多请求并减慢它(CPU使用率变为10-70%,但通常我有1-2%).我查看了httpd日志并看到了这样的行:

182.118.25.209 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/42957-polovity.html HTTP/1.1" 200 96809 "http://www.hrinchenko.com/slovar/znachenie-slova/42957-polovity.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider
182.118.25.208 - - [06/Sep/2012:19:39:08 +0300] "GET /slovar/znachenie-slova/52614-rospryskaty.html HTTP/1.1" 200 100239 "http://www.hrinchenko.com/slovar/znachenie-slova/52614-rospryskaty.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11; 360Spider
Run Code Online (Sandbox Code Playgroud)

等等

如何通过robots.txt完全阻止这个蜘蛛?现在我的robots.txt看起来像这样:

User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/

User-agent: YoudaoBot
Disallow: /

User-agent: sogou spider
Disallow: /
Run Code Online (Sandbox Code Playgroud)

我添加了一些行:

User-agent: 360Spider
Disallow: /
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.如何阻止这个愤怒的机器人?

如果你提议通过.htaccess阻止它,那么请注意它现在看起来像这样:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Run Code Online (Sandbox Code Playgroud)

而且,尽管存在

SetEnvIfNoCase Referer ^360Spider$ block_them
Deny from env=block_them
Run Code Online (Sandbox Code Playgroud)

这个机器人仍然试图杀死我的VPS并登录访问日志.

小智 8

在.htaccess文件中,只需添加以下内容:

RewriteCond %{REMOTE_ADDR} ^(182\.118\.2)

RewriteRule ^.*$ http://182.118.25.209/take_a_hike_moron [R=301,L]
Run Code Online (Sandbox Code Playgroud)

这将捕获从182.118.2xx.xxx范围启动的所有机器人并将它们发回给自己......

蹩脚的360机器人正在从中国的服务器中被解雇...所以只要你不介意再见那个来自IP范围的蹩脚的中国流量,这将保证让那些小狗消失到达你网站上的任何文件.

你的.htaccess文件中的以下两行也会因为愚蠢到足以自豪地将360spider放入其用户代理字符串中而将其选中.当它们使用其他IP范围(182.118.2xx.xxx)时,这可能很方便

RewriteCond %{HTTP_USER_AGENT} .*(360Spider) [NC]

RewriteRule ^.*$ http://182.118.25.209/take_a_hike_moron [R=301,L]
Run Code Online (Sandbox Code Playgroud)

是的......我也恨他们!


Not*_*aeL 6

你的robots.txt似乎是对的.一些机器人只是忽略它(恶意机器人从任何来自全球各地数百到数百万受感染设备的僵尸网络中的任何IP地址爬行),在这种情况下,你可以使用mod_security模块为apache 2.X 限制每秒的请求数量

这里的配置示例:http://blog.cherouvim.com/simple-dos-protection-with-mod_security/

[编辑]在linux上,iptables还允许每个ip限制tcp:端口连接每(x)秒,这样就可以在内核上启用conntrack功能.请参阅:https://serverfault.com/questions/378357/iptables-dos-limit-for-all-ports