在我的主页上,我正在使用此方法隐藏垃圾邮件机器人的电子邮件:
Contact me
你怎么看待这件事?有效吗?您还知道或使用其他哪些方法?
这是我所使用的方法,与服务器侧包括,例如,其中
emailObfuscator.include
包含以下内容:
要包含地址,我使用JavaScript:
因为自2005年以来我一直通过Gmail收到电子邮件,所以垃圾邮件几乎不是问题.所以,我不能说这种方法有多有效.你可能想要阅读这个产生这个图的研究(尽管它已经很老了):
使用CSS中的内容和attr:
.cryptedmail:after {
content: attr(data-name) "@" attr(data-domain) "." attr(data-tld);
}
看看这种方式,非常聪明并使用CSS.
CSS
span.reverse { unicode-bidi: bidi-override; direction: rtl; }
HTML
moc.rehtrebttam@retsambew
然后,上面的CSS将覆盖读取方向,并以正确的顺序将文本呈现给用户.
希望能帮助到你
干杯
我对此有一个完全不同的看法.我使用MailHide.
MailHide是Google的一个系统,用户需要完成reCAPTCHA测试,然后向他们显示电子邮件.
最初不是我的想法,但我找不到作者:
link
添加尽可能多的x.它非常适合读取,复制和粘贴,并且无法由机器人读取.
我认为唯一可以实现的万无一失的方法是创建一个"联系我"页面,该页面是一个提交到发送到您的电子邮件地址的脚本的表单.这样,您的地址根本不会暴露给公众.出于某种原因,这可能是不合需要的,但我认为这是一个非常好的解决方案.当我被迫将某人的电子邮件地址从他们的网站复制/粘贴到我的邮件客户端并向他们发送消息时,它经常让我感到烦恼; 我宁愿通过他们网站上的表单来做到这一点.此外,这种方法允许您向您发送匿名评论等.请确保使用某种反机器人方案(如验证码)保护您的表单.这里讨论了很多关于SO的内容.
请参阅网页上的机器人安全地建立电子邮件地址?
我喜欢Facebook和其他人呈现您的电子邮件地址图像的方式.
我过去也曾使用过The Enkoder--说老实说非常好!
如果你有php支持,你可以这样做:
和scriptname.php:
我知道很多人都不会喜欢我的答案,但请在翻阅之前考虑一下这里列出的要点.
任何易于机器读取的东西都很容易被垃圾邮件发送者读取.即使他们的行为对我们来说似乎很愚蠢,但他们并不是愚蠢的人.他们是创新和足智多谋的.他们不只是使用机器人来收集电子邮件,他们有大量的方法供他们使用,除此之外,他们只需支付新的电子邮件清单.这意味着,他们在全球范围内有成千上万的黑帽黑客来执行他们的工作.人们准备编写恶意软件的代码,这些恶意软件会刮掉其他人浏览器的屏幕,这些浏览器最终会使您尝试实现的任何方法变得毫无用处.这个帖子已被10多个这样的人读过,他们在嘲笑我们.他们中的一些人可能甚至无聊地流泪,发现我们无法对他们提出新的挑战.
请记住,您最终并不是想节省您的时间,而是节省其他人的时间.因此,请考虑在此花些时间.没有易于执行的魔术子弹可行.如果您在一家在网站上发布100个人的电子邮件的公司工作,并且每人每天可以减少1封垃圾邮件,我们每年都在谈论36500封垃圾邮件.如果删除这样的电子邮件平均需要5秒钟,我们每年谈论50个工作小时.更不用说减少烦恼了.那么,为什么不花几个小时呢?
不仅是您和接收电子邮件的人认为时间是资产.因此,您必须找到一种以这种方式对电子邮件地址进行模糊处理的方法,这样就无法破解它.如果你使用一些广泛使用的方法来混淆电子邮件,那么破解它真的是值得的.因此,如果不是数十或数十万封新鲜的电子邮件,那么饼干将会获得成千上万的信息.对他们来说,他们会得到钱.
所以,继续编写自己的方法.这是一个罕见的情况,重新发明轮子真的得到回报.使用非机器可读的方法,并且优选地需要一些用户交互而不牺牲用户体验.
我花了大约20分钟来编写一个我的意思的例子.在这个例子中,我使用KnockoutJS只是因为我喜欢它而且我知道你不会自己使用它.但无论如何它都无关紧要.这是一种未广泛使用的定制解决方案.破解它不会对此做出奖励,因为这样做的方法只能在广阔的互联网上的单个页面上工作.
这是小提琴:http://jsfiddle.net/hzaw6/
下面的代码并不是一个好代码的例子.但只是快速的代码示例,很难让机器弄清楚我们甚至在这里处理电子邮件.即使可以做到,也不会为大规模执行而付出代价.
是的,我知道它对IE = lte8不起作用,因为'无法获取未定义或空引用的属性'属性'但我只是不在乎,因为它只是方法的演示,而不是实际的实现,并不打算用于生产.随意编写自己的代码,这是更酷,技术上更坚固等.
哦,永远不会用html或javascript命名邮件或电子邮件.对于任何名为邮件或电子邮件的东西来说,刮掉DOM和窗口对象太简单了,并检查它是否包含与电子邮件匹配的内容.这就是为什么你不希望任何变量包含电子邮件的完整形式,这也是你希望用户在分配这些变量之前与页面交互的原因.如果您的javascript对象模型包含DOM就绪状态的任何电子邮件地址,那么您将它们暴露给垃圾邮件发送者.
HTML:
- Phone:
JS
function ViewModel(){ var self = this; self.contacts = ko.observableArray([ { firstName:'John', mPrefix: 'john.doe', domain: 'domain.com', lastName: 'Doe', department: 'Sales', phone: '+358 12 345 6789' }, { firstName:'Joe', mPrefix: 'joe.w', domain: 'wonder.com', lastName: 'Wonder', department: 'Time wasting', phone: '+358 98 765 4321' }, { firstName:'Mike', mPrefix: 'yo', domain: 'rappin.com', lastName: 'Rophone', department: 'Audio', phone: '+358 11 222 3333' } ]); self.msgMeToThis = ko.observable(''); self.reveal = function(m, e){ var name = e.target.attributes.href.value; name = name.replace('#', ''); self.msgMeToThis(name); }; } var viewModel = new ViewModel(); ko.applyBindings(viewModel);
您可以尝试使用hexa中的html实体隐藏字符(例如:@表示@).这是一个方便的解决方案,因为正确的浏览器会将其翻译,您可以拥有正常的链接.缺点是机器人可以理论上翻译它,但它有点不寻常.我用它来保护我博客上的电子邮件.
另一种解决方案是使用javascript来组装地址的一部分并在运行中解码地址.缺点是禁用javascript的浏览器不会显示您的地址.
最有效的解决方案是使用图像,但用户必须手动复制地址是一件痛苦的事.
您的解决方案非常好,因为您只为已禁用javascript的用户添加了一个缺点(手动编写@).你也可以更加安全:
onclick="this.href='mailto:' + 'admin' + '@' + 'domain.com'"
我最喜欢的方法之一是使用php来混淆电子邮件地址,一个典型的例子是将字符转换为HEX值,如下所示:
function myobfiscate($emailaddress){ $email= $emailaddress; $length = strlen($email); for ($i = 0; $i < $length; $i++){ $obfuscatedEmail .= "" . ord($email[$i]).";"; } echo $obfuscatedEmail; }
然后在我的标记中,我将简单地称之为:
然后检查你的来源,你会惊喜万分!
Spambots不会解释这一点,因为它是一个鲜为人知的方法:)
首先,定义css:
email:before { content: "admin"; } email:after { content: "@example.com"; }
现在,无论您要显示电子邮件的何处,只需插入以下HTML:
和田田!