过去几天我一直在努力更新我的个人网站.我的个人网站的URL是(我的名字).(我的姓).com,因为我的姓氏很不寻常,我很幸运能够拿起域名.我的电子邮件地址是(我的名字)@(我的姓).com.所以真的,当它归结为猜测时,它并不是很难.
无论如何,我想将mailto:链接集成到我的网站,以便人们可以联系我.而且,尽管我的电子邮件地址不是很难猜测,但我宁愿不让垃圾邮件机器人收集它,只是抓取网站的电子邮件地址模式并将它们添加到他们的数据库中.
我最好的方法是混淆我的电子邮件地址,最好是链接形式?我所知道的方法是:
e-mail me
它有效,但这也意味着,一旦我的网站访问谷歌,我将趟垃圾邮件,因为垃圾邮件机器人很容易选择我的电子邮件地址.
这是不太理想的,因为访客不仅无法点击它向我发送电子邮件,而且更聪明的垃圾邮件机器人可能能够检测到图像包含的字符.
我知道可能没有完美的解决方案,但我只是想知道每个人都认为最好的.我绝对愿意在必要时使用JavaScript,因为我的网站已经使用了大量的JavaScript.
我将字符编码为HTML实体(类似这样).它不需要启用JS,似乎已经停止了大部分垃圾邮件.我想智能机器人可能仍会收获它,但我没有遇到任何问题.
就个人而言,我已经放弃了隐藏我的电子邮件地址.我发现更容易研究更好的垃圾邮件过滤解决方案而不是担心混淆.您可能需要花费数天的时间来寻找混淆地址的最佳方法,然后只需要一个人将您的地址卖给垃圾邮件发送者,所有这些工作都是无用的.
当前接受的解决方案是创建一个允许用户通过电子邮件发送给您的联系表单.如果你从那里收到大量的垃圾邮件(我不在我的网站上),那么你可以添加一个优秀的验证码,那时你将远离"低悬的果实".
事实是,如果您提供一个用户可以点击的链接,用To:字段中的地址弹出他们的电子邮件客户端,那么计算机就可以从页面中解密电子邮件地址,因此可以垃圾邮件机器人.
您提到这是针对您的个人网站的.在我的个人网站上(例如,bobsomers.com)我只有一段说明:
在新网站启动之前与我联系的最佳方式是向我发送电子邮件.我的电子邮件地址是我在这个网站上的名字.如果你无法从这个提示中弄清楚,那么,你可能会发现电子邮件比查明我的地址更具挑战性.
人们似乎能够很好地解决这个问题,因为我一直都会收到合法的电子邮件.有时最好的解决方案不需要编写任何代码.:)
reCAPTCHA提供简单的电子邮件混淆服务.您无需设置帐户即可立即开始使用.您可以将该服务用作链接或弹出窗口.
验证码解决后,您的电子邮件地址显示为href/mailto,以便配置其电子邮件客户端以使用其浏览器的用户可以单击/按下该电子邮件地址.
混淆href
锚点的一种轻量级方法是对它进行base64编码:
> btoa('mailto:email@example.com') < "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"
然后包括硬编码:
或动态服务器端,例如PHP:
与字符串还原相结合,它可能是相当垃圾邮件保存:
')" >= strrev("email@example.com") ?>
显然使用CSS来改变文本的方向非常有效.该链接还测试了一堆其他混淆方法.
无论你使用什么,都不可避免地会被打败.您的主要目标应该是避免让用户烦恼.
不要在这里使用任何混淆技术,因为它可能是电子邮件收集者首先查找人们如何混淆电子邮件的第一个地方.如果您必须在网站上显示您的电子邮件地址,请不要只是逐字复制其他人的方法; 以某种独特的方式模糊它,没有其他网站使用过,以便收割者在访问您的网站之前不会知道您的方法.
你可以像谷歌那样在谷歌代码(和群组)上做.显示电子邮件的标准和可点击的部分("...").单击表示您想要知道该电子邮件,并要求您填写验证码.之后,您可以看到电子邮件(以及其他人?).
我的其实很简单:
hello@gmail.com
$(document).ready(function(){ //my email in reverse :) var s = 'moc.elibomajninbew@htiek'; var e = s.split("").reverse().join(""); $('#email').html(''+e+''); });
我使用JavaScript混淆,例如看一下这个:
http://www.jottings.com/obfuscator/
我维护的一个网站使用了一种有点简单的JavaScript方式(希望)保持垃圾邮件.
电子邮件链接调用JS函数:
function sendEmail(name, domain) { location.href = 'mailto:' + name + '@' + domain; }
要确保只有启用了JS的用户才能看到该链接,请使用以下命令将其写出:
function writeEmailLink(realName, name, domain) { document.write(''); document.write(realName); document.write(''); }
使用一个JS函数来写出一个调用另一个的链接意味着有两层保护.