Apache .htaccess RewriteRule将semalt referrer spambots发送回源代码

时间:2015-04-07 05:36:55

标签: regex apache .htaccess mod-rewrite referrer-spam

推特垃圾邮件在我的分析中是一个很大的问题,我已经打了几个月了。

我知道围绕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特定答案都是我可以调整的。

1 个答案:

答案 0 :(得分:1)

对于您提供的第一个示例,只需要修复一下,您应该像{/ p>一样转义斜杠//

 RewriteCond %{HTTP_REFERER} ^https?:\/\/([^.]+\.)*semalt\.com.*? [NC]

但出于规则目的,你只需要这个

RewriteCond %{HTTP_REFERER} ([^.]+\.)*semalt\.com.*? [NC]

您提出的任何规则都可以正常使用,但仅对semalt 有效。简单的共享按钮不是一个爬虫,所以它不会有任何影响。

您可以通过查看访问日志来证明这一点,如果您查找这两个引荐来源垃圾邮件,您只能看到semalt的记录,而不是简单的共享按钮。

阻止Ghost Spam **的唯一方法是使用GA中的过滤器。您可以在https://stackoverflow.com/a/29312117/3197362

找到有关此推荐人垃圾邮件的更多信息

有关推特垃圾邮件的更多一般信息,您可以查看此答案https://stackoverflow.com/a/28354319/3197362

至于REGEX,这是一个测试它们的优秀工具https://regex101.com/