【发布时间】:2015-06-11 15:09:23
【问题描述】:
推荐人垃圾邮件现在是我分析中的一个大问题,几个月来我一直在与它作斗争。
我知道围绕 semalt.com(和其他推荐垃圾邮件发送者)的僵尸网络讨论。我也知道一些推荐垃圾邮件很可能在没有访问我的网站的情况下被触发(这就是为什么我的.htaccess 指令没有捕捉到所有这些),并且我已经相应地在我的分析/标签管理器中添加了过滤器。
我进行了广泛的研究,包括: How to Block Spam Referrers like darodar.com from Accessing Website? 和 Domain name in mod_rewrite RewriteRule
我希望为任何具有实际爬虫的网站实施代码,将他们的“机器人”发回给他们。我的.htaccess 中有超过 100 个推荐人被列入黑名单,但他们都遵循相同的模式,这就是我现在拥有的:
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*semalt\.com.*? [NC]
RewriteRule ^(.*)$ http://semalt.com/ [L]
RewriteCond %{HTTP_REFERER} ^https?://([^.]+\.)*simple-share-buttons\.com.*? [NC]
RewriteRule ^(.*)$ http://simple-share-buttons.com/ [L]
</IfModule>
我想简化一下(发送推荐垃圾邮件的新域经常弹出)所以我想知道这是否可行:
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} (semalt\.com) [NC]
RewriteRule ^(.*)$ %{HTTP_REFERER} [L]
RewriteCond %{HTTP_REFERER} (simple-share-buttons\.com) [NC]
RewriteRule ^(.*)$ %{HTTP_REFERER} [L]
</IfModule>
它似乎应该可以工作,这让我想知道我是否可以更进一步:
<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} (semalt\.com|simple-share-buttons\.com) [NC]
RewriteRule ^(.*)$ %{HTTP_REFERER} [L]
</IfModule>
我希望尽可能减少自己服务器的负担,并且我不关心协议、子域或包含的路径。
基本上,如果引用的任何部分与该字符串匹配,我想阻止它并将其重定向到自身。
我编写的指令会按我的预期工作吗?它们在 RegEx 匹配模式中是否相当有效?
有没有我不知道的更好的方法来做到这一点?
注意:其中许多网站都在 VPS 上,我可以在其中编辑 httpd.conf,但不是所有的,所以我可以调整的 .htaccess 具体答案是首选。
【问题讨论】:
标签: regex apache .htaccess mod-rewrite referrer-spam