使用内联JavaScript加密电子邮件地址



我有以下JavaScript代码:

<script type='text/javascript'>
    var v2="xxxxx";
    var v7=unescape("%2%3432jklsjdkls%");
    var v5=v2.length;
    var v1="";
    for(var v4=0;v4<v5;v4++){
        v1+=String.fromCharCode(v2.charCodeAt(v4)^v7.charCodeAt(v4));
    }
    document.write('<a href="javascript:void(0)" onclick="window.location='mailu0074ou003a'+v1+'?subject='+''">'+'test(at)test(dot)com</a>');
 </script>

这个代码在一行,我没有其他的可能性,除了这个。现在我必须更改电子邮件地址,但我需要无法创建的v2v7

你知道这个片段是从哪里来的吗?你知道另一种安全的算法吗(不仅采用ASCI值)?这里使用ASCII码、XOR连接和加密的值+密钥。

我会做一些更简单、同样有效的事情,比如:

<a href="javascript:window.location.href = 'mailto:' + ['john','smith.com'].join('@')">john<!---->@<!---->smith.com</a>

  • mailto:链接已模糊,机器人无法读取
  • html评论被用作垃圾邮件,因此垃圾邮件机器人不会读取链接的文本,同时对用户隐藏。可以有任何类型的垃圾,例如<span>display: none

这里提到了两个外部工具。对于这两种情况,您都需要首先通过电子邮件生成Javascript代码。

JavaScript电子邮件加密程序

<!-- Add these lines to <head></head> -->
<script type="text/javascript"> <!--
function UnCryptMailto( s )
{
    var n = 0;
    var r = "";
    for( var i = 0; i < s.length; i++)
    {
        n = s.charCodeAt( i );
        if( n >= 8364 )
        {
            n = 128;
        }
        r += String.fromCharCode( n - 1 );
    }
    return r;
}
function linkTo_UnCryptMailto( s )
{
    location.href=UnCryptMailto( s );
}
// --> </script>
<!-- Use above link to generate your crypted email (example): -->
<a href="javascript:linkTo_UnCryptMailto('nbjmup;uftuAuftu/dpn');">test [at] test [dot] com</a>

反垃圾邮件电子邮件链接模糊器

<script type="text/javascript" language="javascript">
<!--
// Email obfuscator script 2.1 by Tim Williams, University of Arizona
// Random encryption key feature coded by Andrew Moulden
// 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 = "34M3@34M3.nmp"
  key = "594NIGdDgELkcwoAbPQirZaYCn1mWhURt0syV7Ojpqf8H3XMFvlezJTS2ux6KB"
  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+"'>Example</a>")
}
//-->
</script><noscript>Sorry, you need Javascript on to email me.</noscript>

这个工具最初是由亚利桑那大学的Tim Williams构思和编写的。随机的代码每次使用该工具时生成不同的加密密钥是由Andrew Molden编写的。凯尔特制作有限公司的Ross Killen也创建了一个PHP版本,使这项技术能够在网络应用程序中使用。

如果作者的学分等保持原样,此代码将作为免费软件分发

虽然我发现许多解决方案都很复杂,但一个简单的javascript只需在脚本中替换域名就可以了。

<a class="email" data-email="support"></a>
<script>
var emailLinks = document.getElementsByClassName('email');
for (i = 0; i < emailLinks.length; i++) {
    var ctrl = emailLinks[i];
    var email = ctrl.getAttribute('data-email') +  '@' + document.location.host;
    ctrl.href= 'mailto:' + email;
    ctrl.innerText = email;
}
</script>

我刚刚发现这个页面列出了2018年1.5年实验中测试的许多方法,例如

  • 使用CSS的direction: rtl
  • 添加一些"null"跨度,包括一个更高级的css来隐藏它
  • 使用一些花哨的JS来混淆mailto链接

垃圾邮件机器人似乎越来越先进了。

另一个很好的工具是谷歌的reCAPTCHA工具,它实际上通过允许用户在显示完整的电子邮件地址之前输入屏幕上看到的字符来保护提供的电子邮件地址。请参阅此处的链接:reCAPTCHA

最新更新