7

由于 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

等等

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

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

User-agent: YoudaoBot
Disallow: /

User-agent: sogou spider
Disallow: /

我添加了行:

User-agent: 360Spider
Disallow: /

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

如果您提议通过 .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]

而且,尽管存在

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

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

4

8 回答 8

8

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

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

RewriteRule ^.*$ http://182.118.25.209/take_a_hike_moron [R=301,L]

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

蹩脚的 360 bot 正在从中国的服务器上被解雇……所以只要您不介意与来自该 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]

是的……我也讨厌他们!

于 2013-01-26T00:47:13.000 回答
7

您的 robots.txt 似乎是正确的。一些机器人只是忽略它(恶意机器人从任何 IP 地址爬取来自全球数百到数百万受感染设备的任何 IP 地址),在这种情况下,您可以使用apache 2.X 的mod_security模块限制每秒的请求数

此处配置示例:http: //blog.cherouvim.com/simple-dos-protection-with-mod_security/

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

于 2012-09-06T17:23:06.883 回答
4

您可以将以下规则放入您的.htaccess文件中

RewriteEngine On  
RewriteBase /  
SetEnvIfNoCase Referer 360Spider$ block_them
Deny from env=block_them

注意:mod_setenvif应在服务器配置中启用Apache 模块

于 2012-09-06T17:20:16.433 回答
3

运行爬虫的人可能会忽略 robots.txt。您可以通过 IP

命令拒绝阻止它们,允许
来自 216.86.192.196 的拒绝

在.htaccess

于 2012-09-06T17:16:31.973 回答
0

SetEnvIfNoCase 用户代理 360Spider 被阻止

于 2012-12-25T23:12:04.627 回答
0

我的.htaccess文件中有这样的行来阻止坏机器人:

RewriteEngine On
RewriteCond %{ENV:bad} 1
RewriteCond %{REQUEST_URI} !/forbidden.php
RewriteRule (.*) - [R=402,L]

SetEnvIf Remote_Addr "^38\.99\." bad=1
SetEnvIf Remote_Addr "^210\.195\.45\." bad=1
SetEnvIf Remote_Addr "^207\.189\." bad=1
SetEnvIf Remote_Addr "^69\.84\.207\." bad=1

# ...

SetEnvIf Remote_Addr "^221\.204\." bad=1
SetEnvIf User-agent "360Spider" bad=1

它将状态码发送402 Payment Required到所有列入黑名单的 IP/用户代理。

您可以将要显示给机器人的任何内容放入forbidden.php.

这是相当有效的。

于 2013-01-15T04:52:27.673 回答
0

我只需要阻止 360Spider。使用 IIS (IIS7) 上的 StreamCatcher 解决,幸运的是,它已经安装,因此只需要进行小的配置更改。详情请见http://needs-be.blogspot.com/2013/02/how-to-block-spider360.html

于 2013-02-18T00:48:23.537 回答
0

我使用以下内容,它有很大帮助!检查 HTTP_USER_AGENT 是否有恶意机器人

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_URI} !^/robots\.txt$
    RewriteCond %{REQUEST_URI} !^/error\.html$

    RewriteCond %{HTTP_USER_AGENT} EasouSpider [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} YisouSpider [NC,OR]
    RewriteCond %{HTTP_USER_AGENT} Sogou\ web\ spider [NC]
    RewriteCond %{HTTP_USER_AGENT} 360Spider [NC,OR]
    RewriteRule ^.*$ - [F,L]
</IfModule>

<Location />
    <IfModule mod_setenvif.c>
        SetEnvIfNoCase User-Agent "EasouSpider" bad_bot
        SetEnvIfNoCase User-Agent "YisouSpider" bad_bot
        SetEnvIfNoCase User-Agent "LinksCrawler" bad_bot

        Order Allow,Deny
        Allow from All
        Deny from env=bad_bot
    </IfModule>
</Location>
于 2014-07-24T21:19:07.960 回答