阻止垃圾邮件发件人从您的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链接的任何地方都有这块代码。
答案 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的表格。
它们都不是完全有效的。