【问题标题】:How to stop spammers from getting the email address from a mailto link? [duplicate]如何阻止垃圾邮件发送者从 mailto 链接获取电子邮件地址? [复制]
【发布时间】:2010-10-20 16:07:47
【问题描述】:
复制:
防止垃圾邮件发送者从您的 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>
有没有更好的方法?我不喜欢在任何我想放置邮件链接的地方都有这段代码。
【问题讨论】:
标签:
javascript
spam-prevention
mailto
【解决方案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 作为地址规范的一部分。)
另一个计数器是使用带有某种验证码的表单。
它们都不是完全有效的。