【问题标题】:how to ban crawler 360Spider with robots.txt or .htaccess?如何使用 robots.txt 或 .htaccess 禁止爬虫 360Spider?
【发布时间】:2012-08-31 13:27:53
【问题描述】:

由于 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 并记录在访问日志中。

【问题讨论】:

  • 使用 .htaccessnginx 重写模块,robots.txt 不阻止任何它只是规则列表
  • 如果不是秘密,如何用.htaccess 阻止它? :)

标签: .htaccess search-engine web-crawler bots robots.txt


【解决方案1】:

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

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

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

【讨论】:

  • 这似乎是我需要的,但由于某种原因它不起作用。我添加了SetEnvIfNoCase Referer ^360Spider$ block_them Deny from env=block_them,但仍然在日志中看到那个蜘蛛。顺便说一句,我也屏蔽了&lt;Files .*&gt; Order Deny,Allow Deny From All &lt;/Files&gt;,后面还有一些重写规则。
  • SetEnvIfNoCase user-agent 360Spider$ block_them。 “360Spider”位于用户代理标题的末尾。
【解决方案2】:

我使用以下方法,它有很大帮助!检查 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>

【讨论】:

    【解决方案3】:

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

    此处配置示例: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

    【讨论】:

    • 您也可以使用 .htaccess,如其他答案中所见,但要考虑到总会有其他 IP 和引用者/代理试图弄乱您的服务器,之前可能会造成很多损害您重新配置以阻止它们...
    • 是的,这是我来不及问的第二个问题的答案 :) 谢谢 :)
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      是的……我也讨厌他们!

      【讨论】:

      • 他们似乎也使用 101.226.16{8,9}。
      【解决方案6】:

      我的.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 中放入任何您想显示给机器人的内容。

      很有效。

      【讨论】:

        【解决方案7】:

        SetEnvIfNoCase 用户代理 360Spider 被阻止

        【讨论】:

          【解决方案8】:

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

          命令拒绝,允许
          从 216.86.192.196 拒绝

          在 .htaccess 中

          【讨论】:

          • Spider 使用 30 个甚至更多不同的 IP :(
          • 这只是日志的一部分 :)
          猜你喜欢
          • 1970-01-01
          • 2010-12-10
          • 2012-01-13
          • 1970-01-01
          • 1970-01-01
          • 2016-01-25
          • 1970-01-01
          • 1970-01-01
          • 2012-04-29
          相关资源
          最近更新 更多