Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 好的非侵入式反垃圾邮件混淆器?_Javascript_Obfuscation_Spam Prevention_Email Spam - Fatal编程技术网

Javascript 好的非侵入式反垃圾邮件混淆器?

Javascript 好的非侵入式反垃圾邮件混淆器?,javascript,obfuscation,spam-prevention,email-spam,Javascript,Obfuscation,Spam Prevention,Email Spam,我正在尝试设计一个JavaScript电子邮件模糊器,以减少网站上列出的电子邮件中出现垃圾邮件的机会。现在我有了一个基于JavaScript的混淆器,它使用HTML编码和JavaScript的组合,将混淆的电子邮件透明地转换为普通电子邮件 我所做的是: 将链接中href的“mailto:”部分格式化为HTML编码,如下所示: mailto: 我还对电子邮件进行编码,将@符号

我正在尝试设计一个JavaScript电子邮件模糊器,以减少网站上列出的电子邮件中出现垃圾邮件的机会。现在我有了一个基于JavaScript的混淆器,它使用HTML编码和JavaScript的组合,将混淆的电子邮件透明地转换为普通电子邮件

我所做的是:

将链接中href的“mailto:”部分格式化为HTML编码,如下所示:

mailto:
我还对电子邮件进行编码,将
@
符号替换为
(a)
,这样电子邮件的内容如下:

stackoverflow(a)example.com
然后,我使用一些JavaScript来破译所有包含此
(a)
的mailto链接,在电子邮件中签名,并在页面加载时将其转换为
@

这相当有效。对于使用启用了JavaScript的浏览器的人来说,他们看到一切都正常工作。对于没有JavaScript启用的人,我知道的每一个邮件客户端都会认为电子邮件地址无效,但是用户应该能够推断出需要改正的符号。

我想知道是否有更好的方法(侵入性较小(或者最好不是很强),但更能抵御垃圾邮件)来混淆网页上的电子邮件


与任何类型的混淆一样,如果人类或计算机可以轻松地消除混淆,那么垃圾邮件发送者也可以轻松地进行同样的处理。正因为如此,我并不期待一个万无一失的混淆,但是我很好奇,看看还有什么其他的建议。搜索谷歌没有透露任何解决方案,我认为比我目前的解决方案更好。我想知道是否还有其他好的选择。

为计算机混淆电子邮件的一种方法是将电子邮件写成图像而不是文本。通过这种方式,人类阅读电子邮件地址仍然很容易,而计算机阅读电子邮件地址则相当困难


如前所述,使用OCR获取电子邮件并不难。而且纯文本浏览器不支持它们。因此,Scott的解决方案可能是最好的解决方案。

我过去使用过,并取得了相当好的成功。如果你想了解Dan的编码是如何工作的,它可能会给你一些想法,让你制作一个更强大的模糊器。

我使用这个生成器服务有一段时间了,它工作得很好。我通常使用编码地址的一部分和非编码地址的一部分

例如

user@po.com==
user@po.com

我可能会改成


user@po.com==
user@po.com

如果您真的想保护电子邮件地址,那么除了为非JavaScript用户生成图像之外,没有其他方法了。
我曾经用过这样的东西:

<script type="text/javascript">
//<![CDATA[
     scrambler('c.arb@oof||mo');
//]]>
</script>
<noscript>
    <img src="scrambler.php?t=c.arb@oof||mo" alt="Emailadresse" />
</noscript>

想重温这一页吗,丹,并将答案标记为已接受?斯科特的回答对我有用。
function scrambler (text) {
  parts = text.split("||");
  var reverse = function (s) {
    var ret ='';
    for (var i=s.length-1;i>=0;i--)
      ret+=s.charAt(i);
    return ret;
  }
  text = reverse(parts[0])+reverse(parts[1]);
  document.write(text);
}