如何阻止垃圾邮件发送者从 mailto 链接获取电子邮件地址? [复制]

Posted

技术标签:

【中文标题】如何阻止垃圾邮件发送者从 mailto 链接获取电子邮件地址? [复制]【英文标题】:How to stop spammers from getting the email address from a mailto link? [duplicate] 【发布时间】:2010-10-20 16:07:47 【问题描述】:

复制:

Best way to obfuscate an e-mail address on a website? Effective method to hide email from spam bots What are some ways to protect emails on websites from spambots?

防止垃圾邮件发送者从您的 mailto 链接获取电子邮件地址的最佳方法是什么?我的印象是 javascript 可能是一个解决方案。我不知道我目前的解决方案是否是万无一失的,所以这就是我问的原因。

这是我目前正在做的事情:

<script language="JavaScript"><!--
var name = "emailusername";
var domain = "yahoo.com";
var text = "emailusername@yahoo.com";
document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
document.write(text + '</a>');
// --></script>

有没有更好的方法?我不喜欢在任何我想放置邮件链接的地方都有这段代码。

【问题讨论】:

【参考方案1】: Best way to obfuscate an e-mail address on a website? Effective method to hide email from spam bots What are some ways to protect emails on websites from spambots?

【讨论】:

【参考方案2】:

Javascript 有帮助,但这无济于事。使用这种类型的脚本,电子邮件地址在 html 源代码中仍然可见。

“最佳”选项使用客户端 javascript 来“构建”电子邮件地址的各个部分,因此整个电子邮件地址永远不会在 HTML 源代码中单独显示。浏览器在客户端上为你把它放在一起。

【讨论】:

【参考方案3】:

一个简单的修复:

<script language="JavaScript"><!--
var name = "emailusername";
var domain = "yahoo.com";
document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
document.write(name + '@' + domain + '</a>');
// --></script>

这与 Reed 建议的基本相同,但使用现有代码。

【讨论】:

【参考方案4】:

这甚至不是一个好方法。垃圾邮件发送者将抓住整个事情并使用正则表达式匹配地址。他们不会费心寻找mailto:。此外,您可以使用 Javascript 想到的任何方案都已经被垃圾邮件发送者所攻击和反击。事实上,他们可能只是能够运行 javascript 并获取地址。

你可以

A) 过滤垃圾邮件 B) 使用表单提交邮件(垃圾邮件发送者可能仍会使用该表单。)

【讨论】:

【参考方案5】:

您在正确的轨道上,但是在其中包含 emailusername 有点违背了目的(大多数蜘蛛机器人不会费心区分 HTML 和脚本代码,而只是寻找出现在电子邮件中的任何内容-喜欢在页面上)。

我听说一些蜘蛛机器人现在有能力运行 Javascript,并且会自行解决这种混淆。

【讨论】:

【参考方案6】:

没有 110% 万无一失的方法可以防止这种情况发生,除了只会阻碍电子邮件使用的愚蠢技巧,例如将所有电子邮件地址作为图像等。

至少就我个人而言,我已经接受地址至少会在某种程度上被收集。我使用这个小 php 函数对所有电子邮件地址进行 html 编码。这样一来,所有真正的浏览器都可以完美地使用它们,但愚弄最愚蠢的收割机。就像我说的,这不是 110%,但我很满意。

function turboencode($s)
    $tempstr = "";
    for($i = 0; $i < strlen($s); $i++)
        $c = substr($s, $i, 1);
        $tempstr .= "&#" . ord($c) . ";";
    
    return $tempstr;

【讨论】:

【参考方案7】:

防止收获的最佳方法是根本没有 mailto: 链接。

除此之外,计数器并不多。 CSS 内容和图像之类的东西已经被尝试和规避过了,而 JavaScript 是一个半途而废的解决方案(也就是说它不起作用。)

一种可能的对策是混淆:像这样在您的地址中添加废话:

mailNO`at`SPAMyahoo`dot`com

大多数自动收割机(最初)在检测到它时会遇到一些麻烦。或者,可以使用诸如 cmets 之类的东西来迷惑大多数收割机。 (RFC822 描述了电子邮件地址的完整语法,其中包括 cmets 作为地址规范的一部分。)

另一个计数器是使用带有某种验证码的表单。

它们都不是完全有效的。

【讨论】:

以上是关于如何阻止垃圾邮件发送者从 mailto 链接获取电子邮件地址? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 AWS ELB 以阻止某些 IP 地址? (已知的垃圾邮件发送者)[关闭]

如何阻止 Gmail 将我的网络应用程序发送的邮件标记为垃圾邮件? [关闭]

如何在iOS(safari)中获取mailto链接以打开Outlook应用程序?

mailto发送邮件

mailto链接多个正文行

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