Ada*_*ich 130 html javascript email obfuscation
过去几天我一直在努力更新我的个人网站.我的个人网站的URL是(我的名字).(我的姓).com,因为我的姓氏很不寻常,我很幸运能够拿起域名.我的电子邮件地址是(我的名字)@(我的姓).com.所以真的,当它归结为猜测时,它并不是很难.
无论如何,我想将mailto:链接集成到我的网站,以便人们可以联系我.而且,尽管我的电子邮件地址不是很难猜测,但我宁愿不让垃圾邮件机器人收集它,只是抓取网站的电子邮件地址模式并将它们添加到他们的数据库中.
我最好的方法是混淆我的电子邮件地址,最好是链接形式?我所知道的方法是:
<a href="mailto:x@y.com">e-mail me</a>
Run Code Online (Sandbox Code Playgroud)
它有效,但这也意味着,一旦我的网站访问谷歌,我将趟垃圾邮件,因为垃圾邮件机器人很容易选择我的电子邮件地址.
<img src="images/e-mail.png" />
Run Code Online (Sandbox Code Playgroud)
这是不太理想的,因为访客不仅无法点击它向我发送电子邮件,而且更聪明的垃圾邮件机器人可能能够检测到图像包含的字符.
我知道可能没有完美的解决方案,但我只是想知道每个人都认为最好的.我绝对愿意在必要时使用JavaScript,因为我的网站已经使用了大量的JavaScript.
chr*_*der 99
我将字符编码为HTML实体(类似这样).它不需要启用JS,似乎已经停止了大部分垃圾邮件.我想智能机器人可能仍会收获它,但我没有遇到任何问题.
Cha*_*rch 82
就个人而言,我已经放弃了隐藏我的电子邮件地址.我发现更容易研究更好的垃圾邮件过滤解决方案而不是担心混淆.您可能需要花费数天的时间来寻找混淆地址的最佳方法,然后只需要一个人将您的地址卖给垃圾邮件发送者,所有这些工作都是无用的.
Jos*_*dan 68
当前接受的解决方案是创建一个允许用户通过电子邮件发送给您的联系表单.如果你从那里收到大量的垃圾邮件(我不在我的网站上),那么你可以添加一个优秀的验证码,那时你将远离"低悬的果实".
事实是,如果您提供一个用户可以点击的链接,用To:字段中的地址弹出他们的电子邮件客户端,那么计算机就可以从页面中解密电子邮件地址,因此可以垃圾邮件机器人.
Bob*_*ers 43
您提到这是针对您的个人网站的.在我的个人网站上(例如,bobsomers.com)我只有一段说明:
在新网站启动之前与我联系的最佳方式是向我发送电子邮件.我的电子邮件地址是我在这个网站上的名字.如果你无法从这个提示中弄清楚,那么,你可能会发现电子邮件比查明我的地址更具挑战性.
人们似乎能够很好地解决这个问题,因为我一直都会收到合法的电子邮件.有时最好的解决方案不需要编写任何代码.:)
Ric*_*aca 36
reCAPTCHA提供简单的电子邮件混淆服务.您无需设置帐户即可立即开始使用.您可以将该服务用作链接或弹出窗口.
验证码解决后,您的电子邮件地址显示为href/mailto,以便配置其电子邮件客户端以使用其浏览器的用户可以单击/按下该电子邮件地址.
Fab*_*oni 15
混淆href锚点的一种轻量级方法是对它进行base64编码:
> btoa('mailto:email@example.com')
< "bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t"
Run Code Online (Sandbox Code Playgroud)
然后包括硬编码:
<a href="javascript:window.location.href=atob('bWFpbHRvOmVtYWlsQGV4YW1wbGUuY29t')">E-Mail</a>
Run Code Online (Sandbox Code Playgroud)
或动态服务器端,例如PHP:
<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')">E-Mail</a>
Run Code Online (Sandbox Code Playgroud)
与字符串还原相结合,它可能是相当垃圾邮件保存:
<a href="javascript:window.location.href=atob('<?= base64_encode("mailto:email@example.com") ?>')" style="unicode-bidi: bidi-override; direction: rtl;"><?= strrev("email@example.com") ?></a>
Run Code Online (Sandbox Code Playgroud)
Bri*_*per 14
显然使用CSS来改变文本的方向非常有效.该链接还测试了一堆其他混淆方法.
无论你使用什么,都不可避免地会被打败.您的主要目标应该是避免让用户烦恼.
Sam*_*ler 12
不要在这里使用任何混淆技术,因为它可能是电子邮件收集者首先查找人们如何混淆电子邮件的第一个地方.如果您必须在网站上显示您的电子邮件地址,请不要只是逐字复制其他人的方法; 以某种独特的方式模糊它,没有其他网站使用过,以便收割者在访问您的网站之前不会知道您的方法.
你可以像谷歌那样在谷歌代码(和群组)上做.显示电子邮件的标准和可点击的部分("...").单击表示您想要知道该电子邮件,并要求您填写验证码.之后,您可以看到电子邮件(以及其他人?).
我的其实很简单:
<h3 id="email">hello@gmail.com</h3><!-- add a fake email -->
$(document).ready(function(){
//my email in reverse :)
var s = 'moc.elibomajninbew@htiek';
var e = s.split("").reverse().join("");
$('#email').html('<a href="mailto:'+e+'">'+e+'</a>');
});
Run Code Online (Sandbox Code Playgroud)
我使用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('<a href="javascript:sendEmail(\''
+ name + '\', \'' + domain + '\')">');
document.write(realName);
document.write('</a>');
}
使用一个JS函数来写出一个调用另一个的链接意味着有两层保护.
小智 5
正如上面的海报所说,我还使用了来自jottings 网站的JavaScript 混淆。
该网页会生成一些可以改进的 JavaScript。该mailto:文本字符串是明确的,并通过机器人识别(可发现这一点,并unobfuscate这个字符串),但如果进入jottings.com网页形式的电子邮件地址mailto:addr@site.tld,而不是addr@site.tld,然后删除文本mailto:从生成的 JavaScript 中,突然有一些 JavaScript 看起来似乎与电子邮件根本没有任何关系 - 只是网络中充满的随机 JavaScript。可以通过删除链接文本来进一步改进这一点 - 我用我的电子邮件地址的图像替换了我的图像,该图像采用了一种相当晦涩的字体。然后,以防万一 jottings.com 上的这种方法变得流行,我将输出 JavaScript 中的变量名称随机化,以使机器人难以发现 jottings.com 生成的 JavaScript 代码实例。
显然,其中一些改进可以内置到记事本身的机制中,并且由于代码是公开可用的,因此这将相对容易。
一个例子可能会使这更清楚一点。我在上面的链接中使用了 Jottings Obfuscator 来模糊mailto:foo@bar.com(注意,我通过输入字符串mailto:foo@bar.com而不是 来欺骗 jottings 网站的原始意图foo@bar.com)和文本“Send Me Email”,其中的 jottings 变成了这个 Javascript:
<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature by Andrew Moulden, Site Engineering Ltd
// This code is freeware provided these four comment lines remain intact
// A wizard to generate this code is at http://www.jottings.com/obfuscator/
{ coded = "3A1OTJ:rJJ@VAK.GJ3"
key = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
shift=coded.length
link=""
for (i=0; i<coded.length; i++) {
if (key.indexOf(coded.charAt(i))==-1) {
ltr = coded.charAt(i)
link += (ltr)
}
else {
ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
link += (key.charAt(ltr))
}
}
document.write("<a href='mailto:"+link+"'>Send Me Email</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>
Run Code Online (Sandbox Code Playgroud)
找回后,我将其粘贴到编辑器中,然后:
mailto:我最终得到了这个:
<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption kkeoy feature by Andrew Moulden, Site Engineering Ltd
// This kudzu is freeware provided these four comment lines remain intact
// A wizard to generate this kudzu is at http://www.jottings.com/obfuscator/
{ kudzu = "3A1OTJ:rJJ@VAK.GJ3"
kkeoy = "J0K94NR2SXLupIGqVwt8EZlhznemfaPjs7QvTB6iOyWYo3rAk5FHMdxCg1cDbU"
shift=kudzu.length
klonk=""
for (variter=0; variter<kudzu.length; variter++) {
if (kkeoy.indexOf(kudzu.charAt(variter))==-1) {
lutu = kudzu.charAt(variter)
klonk += (lutu)
}
else {
lutu = (kkeoy.indexOf(kudzu.charAt(variter))-shift+kkeoy.length) % kkeoy.length
klonk += (kkeoy.charAt(lutu))
}
}
document.write("<a href='"+klonk+"'><img src='contactaddressimage.png' alt='Send Me Email' border='0' height='62' width='240'></a>")
}
//-->
</script>
<noscript>
<img src="contactaddressimage.png" border="0" height="62" width="240">
<font face="Arial" size="3"><br> </font></p>
</noscript>
Run Code Online (Sandbox Code Playgroud)