htaccess block * bot and bot *

时间:2012-10-30 10:44:13

标签: .htaccess block bots

我无法阻止两个糟糕的机器人继续从我的网站吸收带宽,而且我确定它与他们使用的用户代理名称中的*有关。

现在,我正在使用以下代码阻止坏机器人(这是摘录)......

# block bad bots
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^spider$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^robot$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^crawl$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^discovery$
RewriteRule .* - [F,L]

当我尝试RewriteCond %{HTTP_USER_AGENT} ^*bot$ [OR]RewriteCond %{HTTP_USER_AGENT} ^(*bot)$ [OR]时,我收到错误。

猜猜有一种非常简单的方法可以做到这一点,我还没有找到谷歌。

3 个答案:

答案 0 :(得分:1)

正则表达式模式中的星号(*)需要进行转义,因为它被解释为正则表达式的一部分。
RewriteCond %{HTTP_USER_AGENT} ^\*bot$
应该做的。

答案 1 :(得分:0)

我认为你错过了一个点.,将你的状况改为:

RewriteCond %{HTTP_USER_AGENT} ^.*bot$ [OR]

答案 2 :(得分:0)

但这怎么会阻止Bad Bot访问呢?

我为一家安全公司(也是Botopedia.org的PM)工作,我可以说99.9%的坏机器人不会在其用户代理字符串中使用任何这些表达式。

大部分时间Bad Bots会使用看似合法的用户代理(冒充浏览器和像botbot这样的VIP机器人)而你根本无法通过用户代理数据过滤它们。

对于有效的机器人检测,您应该查看其他标志,如:

1)可疑签名(即标题顺序参数)

或/和

2)可疑行为(即早期robots.txt访问或请求率/模式)

然后你应该使用不同的挑战(即JS或Cookie甚至CAPTCHA)来验证你的怀疑。

您所描述的问题通常被称为“寄生阻力”。

这是一个非常现实和严重的问题,我们实际上仅在几个月前发表了一篇关于它的研究。

(我们发现在平均大小的网站上,51%的访问者将是机器人,31%是恶意的)

老实说,我不认为你能用几行RegEx来解决这个问题。

我们免费提供Bot过滤服务,还有其他几个像我们一样。 (如果需要,我可以认可好的服务)

GL