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

时间:2009-04-20 20:14:29

标签: javascript spam-prevention mailto

重复:

  

阻止垃圾邮件发件人从您的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>

有更好的方法吗?我不喜欢在我想放置mailto链接的任何地方都有这块代码。

7 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

Javascript有帮助,但这无济于事。使用此类脚本在html源中仍然可以看到电子邮件地址。

“最佳”选项使用客户端javascript来“构建”部分电子邮件地址,因此整个电子邮件地址永远不会在HTML源中以单件形式显示。浏览器会在客户端为您整理它们。

答案 2 :(得分:0)

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

你可以

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

答案 3 :(得分:0)

你走在正确的轨道上,但让emailusername在某种程度上打败了目的(大多数蜘蛛机器人都不愿意区分HTML和脚本代码,只是寻找出现的任何东西电子邮件在页面上。)

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

答案 4 :(得分:0)

一个简单的解决方法:

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

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

答案 5 :(得分: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;
}

答案 6 :(得分:0)

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

除此之外,没有多少柜台。像CSS内容和图像这样的东西已经被尝试和规避,JavaScript是一种中途非解决方案(也就是说它不起作用。)

一个可能的计数器是混淆:在你的地址添加废话,如:

mailNO`at`SPAMyahoo`dot`com

大多数自动化收割机(最初)在检测时会遇到一些麻烦。或者,像评论这样的东西可以用来混淆大多数收割者。 (RFC822描述了电子邮件地址的完整语法,其中包含注释作为地址规范的一部分。)

另一个计数器是使用带有某种CAPTCHA的表格。

它们都不是完全有效的。