5

复制:


防止垃圾邮件发送者从您的 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>

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

4

7 回答 7

2

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

“最佳”选项使用客户端 javascript 将电子邮件地址从部分中“构建”出来,因此整个电子邮件地址在 HTML 源代码中永远不可见。浏览器将它放在客户端上。

于 2009-04-20T20:16:58.840 回答
1

一个简单的修复:

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

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

于 2009-04-20T20:19:16.340 回答
0

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

你可以

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

于 2009-04-20T20:17:23.130 回答
0

你走在正确的轨道上,但是emailusername在那里有点违背了目的(大多数蜘蛛机器人不会费心区分 HTML 和脚本代码,只是在页面上寻找任何看起来像电子邮件的东西)。

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

于 2009-04-20T20:19:00.020 回答
0

没有 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;
}
于 2009-04-20T20:20:09.193 回答
0

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

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

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

mailNO`at`SPAMyahoo`dot`com

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

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

它们都不是完全有效的。

于 2009-04-20T20:25:53.810 回答