0

推荐人垃圾邮件现在是我分析中的一个大问题,我已经与它作斗争了几个月。

我知道围绕 semalt.com(和其他推荐垃圾邮件发送者)的僵尸网络讨论。我也知道,一些推荐垃圾邮件很可能在没有访问我的网站的情况下被触发(这就是为什么我的.htaccess指令没有捕捉到所有这些),并且我相应地在我的分析/标签管理器中添加了过滤器。

我进行了广泛的研究,包括: 如何阻止像 darodar.com 这样的垃圾邮件推荐人访问网站?mod_rewrite RewriteRule 中的域名

我希望实现代码,任何具有实际爬虫的网站都会将他们的“机器人”发回给他们。我有 100 多个推荐人列入黑名单,.htaccess但他们都遵循相同的模式,这就是我现在拥有的:

<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我可以适应的具体答案都是首选。

4

1 回答 1

1

只是对您给出的第一个示例进行了一些修复,您应该//像这样逃避斜杠

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

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

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

您提出的任何规则都可以正常工作,但它们仅对 semalt 有效。简单的分享按钮不是爬虫,所以它不会有任何效果。

您可以通过检查您的访问日志来证明这一点,如果您查找这 2 个推荐人垃圾邮件,您只会看到 semalt 的记录,而没有来自简单的共享按钮的记录。

阻止 Ghost Spam**的唯一方法是在 GA 中使用过滤器。您可以在此处找到有关此推荐人垃圾邮件的更多信息https://stackoverflow.com/a/29312117/3197362

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

至于 REGEX,这是测试它们的绝佳工具https://regex101.com/

于 2015-04-07T14:00:32.823 回答