使用 htaccess 阻止特殊目录的所有 bots/crawlers/spider

Posted

技术标签:

【中文标题】使用 htaccess 阻止特殊目录的所有 bots/crawlers/spider【英文标题】:Block all bots/crawlers/spiders for a special directory with htaccess 【发布时间】:2012-05-30 22:26:54 【问题描述】:

我正在尝试为一个特殊目录阻止所有机器人/爬虫/蜘蛛。我怎样才能用htaccess 做到这一点?稍微搜索了一下,找到了基于用户代理拦截的解决方案:

RewriteCond %HTTP_USER_AGENT googlebot

现在我需要更多的用户代理(对于所有已知的机器人),并且该规则应该只对我的单独目录有效。我已经有一个 robots.txt,但并不是所有的爬虫都会查看它......通过 IP 地址阻止不是一个选项。还是有其他解决方案?我知道密码保护,但我必须先询问这是否是一种选择。尽管如此,我还是在寻找基于用户代理的解决方案。

【问题讨论】:

【参考方案1】:

您需要启用 mod_rewrite。将其放在该文件夹中的 .htaccess 中。如果放在其他地方(例如父文件夹),则需要稍微修改 RewriteRule 模式以包含该文件夹名称)。

RewriteEngine On

RewriteCond %HTTP_USER_AGENT (googlebot|bingbot|Baiduspider) [NC]
RewriteRule .* - [R=403,L]
    我只输入了几个机器人 - 您自己添加任何其他机器人(字母大小写无关紧要)。 此规则将以“403 Access Forbidden”结果代码响应此类请求。如果您确实需要,您可以更改为另一个响应 HTTP 代码(考虑到您的要求,403 在这里最合适)。

【讨论】:

从哪里获得机器人列表?我可以使用RewriteRule /var/www/html/myweb/.* - [R=403,L]吗? 1) 例如 -- 检查您的服务器日志、浏览器字符串字段 -- 以某种方式分析它们并从中提取唯一部分以识别机器人(在您看到几个示例后应该不是问题)。也许已经存在这样的列表,但我从来没有为此烦恼过; 2)不,你不能在那里使用物理路径(实际 URL 的路径部分应该在那里 -- 如有必要请查阅手册 -- httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule)【参考方案2】:

为什么要将 .htaccess 或 mod_rewrite 用于专门针对 robots.txt 的作业?这是 robots.txt sn-p 您需要阻止一组特定目录。

User-agent: *
Disallow: /subdir1/
Disallow: /subdir2/
Disallow: /subdir3/

这将阻止目录/subdir1//subdir2//subdir3/ 中的所有搜索机器人。

更多解释请看这里:http://www.robotstxt.org/orig.html

【讨论】:

检查原始问题:“...我已经有一个 robots.txt 但不是所有爬虫都看它...” @LazyOne:我很想知道哪些爬虫会忽略 robots.txt? 检查您的网络服务器日志——您会找到它们。当然 - 大牌(如 Google、Bing 等)不会这样做,但一些较小的(或假冒的)经常请求 robots.txt 中禁止的页面(例如客户帐户区域等,其中用户必须登录/内容仅特定于该用户)。如果 OP 想对付他们——那为什么不呢——现在是他的时间了。 当然,如果一个机器人忽略了 robots.txt,它可能是在伪造它的 HTTP_USER_AGENT。这只是阻止不谎报身份的机器人,但也会故意忽略 robots.txt 想要这个的另一个原因,而不是 robots.txt:如果你不是网站管理员,你可能无法更改机器人.txt,但您可以在自己的目录中放置 .htaccess。 robots.txt 链接坏了【参考方案3】:

我知道这个话题是“旧的”,但对于那些也来到这里的人(就像我一样), 你可以看这里great 5g blacklist 2013。 这是一个很大的帮助,不仅对 wordpress,而且对所有其他网站都是如此。工程真棒恕我直言。 另一个值得一看的可能是Linux reviews anti spam through .htaccess

【讨论】:

以上是关于使用 htaccess 阻止特殊目录的所有 bots/crawlers/spider的主要内容,如果未能解决你的问题,请参考以下文章

apache_conf Block Known Bots将以下代码段添加到.htaccess以阻止已知机器人的访问。

使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区

.htaccess 阻止除我的 ip 之外的所有内容

弹性 beanstalk .htaccess 文件不允许指定 IP 通过

.htaccess 重定向对 Google bot 有啥影响?

如何阻止对根文件夹中除 index.php 之外的所有 .php 的访问(通过 .htaccess)?