从网站禁止机器人

时间:2014-05-13 12:53:41

标签: bots robots.txt web-crawler

我的网站经常关闭,因为蜘蛛可以访问许多资源。这是主持人告诉我的。他们告诉我禁止这些IP地址: 46.229.164.98 46.229.164.100 46.229.164.101

但我不知道如何做到这一点。

我已经搜索了一下,我现在已将这些行添加到根目录中的.htaccess:

# allow all except those indicated here
<Files *>
order allow,deny
allow from all
deny from 46.229.164.98
deny from 46.229.164.100
deny from 46.229.164.101
</Files>

这是100%正确吗?我能做什么? 请帮我。我真的不知道该怎么做。

2 个答案:

答案 0 :(得分:24)

基于这些

https://www.projecthoneypot.org/ip_46.229.164.98 https://www.projecthoneypot.org/ip_46.229.164.100 https://www.projecthoneypot.org/ip_46.229.164.101

看起来就像机器人http://www.semrush.com/bot.html

一样

如果那就是机器人,他们在页面中说

To remove our bot from crawling your site simply insert the following lines to your
"robots.txt" file:

User-agent: SemrushBot
Disallow: /

当然,这并不能保证僵尸程序符合规则。你可以通过几种方式阻止他。 .htaccess是一个。就像你做的那样。

你也可以做这个小技巧,拒绝在用户代理字符串中有“SemrushBot”的任何ip地址

Options +FollowSymlinks  
RewriteEngine On  
RewriteBase /  
SetEnvIfNoCase User-Agent "^SemrushBot" bad_user
SetEnvIfNoCase User-Agent "^WhateverElseBadUserAgentHere" bad_user
Deny from env=bad_user

这种方法将阻止机器人可能使用的其他IP。

详细了解用户代理字符串阻止:https://stackoverflow.com/a/7372572/953684

我应该补充一点,如果您的网站被蜘蛛占用,通常是,则意味着您有一个写得不好的脚本或一个非常弱的服务器。

编辑:

这一行

SetEnvIfNoCase User-Agent "^SemrushBot" bad_user

如果用户代理字符串SemrushBot开头,则尝试匹配(插入符^表示“以”开头)。如果你想在User-Agent字符串中搜索让我们说SemrushBot ANYWHERE,只需删除插入符号即可:

SetEnvIfNoCase User-Agent "SemrushBot" bad_user

以上意味着User-Agent在任何地方都包含字符串SemrushBot(是的,不需要.*)。

答案 1 :(得分:0)

你做的是正确的但是

您必须在 .htaccess 文件中编写该代码,而不是在Robots.txt文件中。

要拒绝任何搜索引擎抓取您的网站,代码应该是这样的

User-Agent:Google
Disallow:/ 

它将禁止Google抓取您的网站。

顺便说一下,我更喜欢.htaccess方法。