我遇到了垃圾邮件机器人/抓取工具来到我的网站的问题,其中的请求在apache日志中显示如下:
"GET / HTTP/1.1" 200 7128 "-" "\x09Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
这些请求的奇怪区别在于,由于某种原因,用户代理前面有一个选项卡(\x09
),所以我尝试为这些创建一个.htaccess mod_rewrite过滤器。
到目前为止,我没有成功创建一个适合拒绝这些请求的RewriteCond。我尝试过以下方法:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^\x09Mozilla [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(%0A|%0D|%27|%3C|%3E|%00|%09).* [NC]
RewriteRule ^.* - [F,L]
%09
(制表符)是第二个RewriteCond中最重要的执行子句(为了增加安全性而引入其他人)。
我的语法错误在哪里?如何阻止这些请求?
答案 0 :(得分:1)
好的,最后使用以下内容,似乎是在403错误中阻止机器人:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Mozilla/5\.0.*Windows\ NT\ 5\.1;\ rv:5\.0.*Gecko/20100101\ Firefox/5\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(%0A|%0D|%27|%3C|%3E|%00|%09|\t|\x09).* [NC]
RewriteRule ^.* - [F,L]
答案 1 :(得分:0)
问题是当你输入\ x09时,这不是一个特殊的字符 - 它是字符\,x,0和9.如果你想要一个标签,请尝试使用\ t来代替 - 这是标签的正则表达式版本。所以RewriteCond应该是这样的:
RewriteCond %{HTTP_USER_AGENT} ^\tMozilla [NC,OR]