【问题标题】:Apache .htaccess RewriteRule to send semalt referrer spambots back to sourceApache .htaccess RewriteRule 将 semalt referrer 垃圾邮件发送回源
【发布时间】: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


    【解决方案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

    至于正则表达式,这是一个很好的测试工具https://regex101.com/

    【讨论】:

    • 我实际上并不想将所有 'bots 发送到 semalt.com,我想将 'bots 发送回推荐人。
    • 这个表达式RewriteCond %{HTTP_REFERER} (semalt\.com|simple-share-buttons\.com) [NC] RewriteRule ^(.*)$ %{HTTP_REFERER} [L] 可以很好地发送回引荐来源网址。但我想指出的是,simple-share-buttons 不是爬虫,它不会产生任何影响,因为这种引荐来源(幽灵)永远不会到达您的网站
    • 我正在使用这两种方法,当我发现另一个垃圾邮件发送者时,我将它们添加到列表中并且我正在使用主机名过滤。我只是没有看到试图找出哪些是实际的推荐垃圾邮件,哪些是幽灵推荐垃圾邮件。谢谢。
    • 每周都会有 1 到 2 个新幽灵,而总体上只有几个爬虫。如果您只添加爬虫,您将有 3 或 4 行,但是,如果您添加所有幽灵,您的 .htacces 文件中将有一个巨大的不必要列表,不会产生任何影响。尽管这些额外行的影响很小,但最好保持文件干净。由于您在 GA 中应用过滤器,您将阻止垃圾邮件,但有些人认为仅使用 htaccess 文件会起作用。主机名过滤的一个问题是指仅包含您的主机名的过滤器?
    • 是的,通过设置仅显示来自有效主机名的数据的“包含”过滤器。我认为这是我找到的最清晰的教程:analyticsedge.com/2015/01/…
    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2016-04-22
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多