首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >htaccess block *bot和bot*

htaccess block *bot和bot*
EN

Stack Overflow用户
提问于 2012-10-30 18:44:13
回答 3查看 3.3K关注 0票数 1

我在阻止两个不好的机器人时遇到了麻烦,这两个机器人不断地从我的网站上吸收带宽,我确信这与他们使用的用户代理名称中的*有关。

现在,我正在使用以下代码来阻止不好的机器人(这是一个摘录)……

代码语言:javascript
复制
# 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]时,我得到一个错误。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-30 18:56:33

正则表达式模式中的星号(*)需要转义,因为它被解释为正则表达式的一部分。

RewriteCond %{HTTP_USER_AGENT} ^\*bot$

应该能行得通。

票数 1
EN

Stack Overflow用户

发布于 2012-10-30 19:05:01

我认为您缺少一个点.,请将您的条件更改为:

代码语言:javascript
复制
RewriteCond %{HTTP_USER_AGENT} ^.*bot$ [OR]
票数 0
EN

Stack Overflow用户

发布于 2012-10-30 22:06:30

但是这将如何防止Bad Bot访问呢?

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

大多数时候,坏机器人会使用看起来合法的用户代理(模仿浏览器和像Googlebot这样的VIP机器人),你不能仅仅通过用户代理数据来过滤它们。

为了有效地检测机器人,你应该看看其他的标志,比如:

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

或/和

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

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

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

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

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

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

我们免费提供我们的机器人过滤服务,还有其他几个像我们这样的。(如果需要,我可以支持好的服务)

总帐

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13137311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档