代码之家  ›  专栏  ›  技术社区  ›  Zaz Volodymyr Null

保护电子邮件地址免受垃圾邮件机器人/网络爬虫攻击

  •  12
  • Zaz Volodymyr Null  · 技术社区  · 14 年前

    如何防止电子邮件蜘蛛从网页上收集电子邮件?做 mailto: 把他们联系起来会增加他们被抓的可能性?URL编码有用吗?

    显然,最好的对策是只向登录的用户显示电子邮件地址,或者提供联系人表单而不是电子邮件地址。但是在纯客户端解决方案方面,有什么可用的呢?

    5 回复  |  直到 6 年前
        1
  •  7
  •   Dagg Nabbit    14 年前

    大多数电子邮件蜘蛛没有javascript解释器,因此如果您真的需要 mailto: 你可以用javascript注入它…只要确保地址在javascript中被隐藏,例如

    myLink.href='mai'+'lto:'+'bob'
               +'@'
               +'example.com';
    

    如果您需要在页面上显示电子邮件地址,一个常见的解决方案是使用类似于PHP的gd的东西生成一个图像(尽管javascript注入也可以这样做)。

    其思想是从HTML中删除电子邮件地址,并用JavaScript注入它们。这样,电子邮件地址就不会以其原始形式出现在任何HTTP通信中,而这正是蜘蛛所看到的。

        2
  •  3
  •   James Black    14 年前

    我倾向于避免 mailto 因为这样人们很容易获取电子邮件地址。

    如果你要在你的网站上有联系页面,那么就有一个表单,当他们提交你的服务器端代码和使用适当的电子邮件地址。

    如果你需要有其他人的地址,可以使用数字、名字、用户名,或者某种方式来识别他们。

    如果你只是在一个范围内有一个电子邮件地址,它很可能会被提取,即使你试图隐藏它,因为这些程序可能相当复杂,因为寻找电子邮件地址是他们的目的。

    和大多数秘密一样,如果你不想让别人得到它们,就不要把它们放在页面上。

        3
  •  1
  •   Scott    14 年前

    我通常将它们分成不同的部分,然后使用JavaScript重新组合它们。最后一个javascript执行document.write来写出HTML。

    var mail = "mailto";
    var namepart = "test.user";
    var domainpart = "example";
    var tld = "com"; 
    var address = namepart + "@" + domainpart + "." + tld;
    document.write("<a href=" + mail + ":" + address + '">' + address + "</a>";
    
        4
  •  1
  •   Zaz Volodymyr Null    10 年前

    几年后,我为另一个网站创建了以下jquery:

    $(".email").each(function() {
        $(this).html( $(this).html().replace("...", "@").replace(/\.\.\./g, ".") );
        $(this).attr( "href", $(this).attr("href").replace("...", "@").replace(/\.\.\./g, ".") );
    });
    

    然后,电子邮件被写为:

    <a href="mailto:bob.smith...example...com" class="email">bob.smith...example...com</a>
    

    它不是完美的,但它非常简单,似乎阻碍了大多数电子邮件收割机。这种方法的优点是,不使用javascript的人可能能够计算出实际的电子邮件地址。


    看看这个 study on various email obfuscation methods .

        5
  •  0
  •   SillySam    6 年前

    如果不需要邮件链接,可以替换 @ 符号与 [ AT ]

    例子:山姆 [ AT ] 范例网站