Email 让网页上的机器人程序保护电子邮件地址安全?

Email 让网页上的机器人程序保护电子邮件地址安全?,email,obfuscation,Email,Obfuscation,在网页上放置电子邮件地址时,是否将其作为文本放置,如下所示: joe.somebody@company.com 还是用一个聪明的技巧来愚弄收割机机器人的电子邮件地址?例如: HTML转义字符: joe.somebody@co&#

在网页上放置电子邮件地址时,是否将其作为文本放置,如下所示:

joe.somebody@company.com
还是用一个聪明的技巧来愚弄收割机机器人的电子邮件地址?例如:

HTML转义字符:

joe.somebody@company.com
function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");
joe.somebodyNOSPAM@company.com

joe.somebody AT company.com
Javascript解密程序:

&#106;&#111;&#101;&#46;&#115;&#111;&#109;&#101;&#98;&#111;&#100;&#121;&#64;&#99;&#111;&#109;&#112;&#97;&#110;&#121;&#46;&#99;&#111;&#109;
function XOR_Crypt(EmailAddress)
{
    Result = new String();
    for (var i = 0; i < EmailAddress.length; i++)
    {
        Result += String.fromCharCode(EmailAddress.charCodeAt(i) ^ 128);
    }
    document.write(Result);
}

XOR_Crypt("êïå®óïíåâïäùÀãïíðáîù®ãïí");
joe.somebodyNOSPAM@company.com

joe.somebody AT company.com

你用什么,或者说你有什么麻烦吗?

我一般不麻烦。我曾经在一个每天收到几千封垃圾邮件的邮件列表上。我们的垃圾邮件过滤器(spamassassin)每天可以过滤1到2封邮件。有了这么好的过滤器,为什么让合法的人很难联系到你呢?

我不想麻烦了——这是在错误的层面上打垃圾邮件战。特别是对于公司网站,我认为如果你的页面上除了带有mailto超链接的纯文本之外还有其他内容,那会让事情看起来很不专业


到处都是垃圾邮件,你无论如何都需要进行良好的过滤,而任何机器人最终都会理解所有的常见技巧。

试试电子邮件图标生成器。


当然,仍然有一些OCR机器人可能会这样做。

你可以使用reCAPTCHA保护你的电子邮件地址,它们提供免费服务,因此人们必须输入CAPTCHA(完全自动的公共图灵测试,以区分计算机和人)才能看到你的电子邮件:

发明你自己的疯狂电子邮件地址混淆方案。不管它是什么,真的,只要它不太类似于任何常见的方法

问题是,这并没有一个好的解决方案,它们要么相对容易绕过,要么对用户来说相当恼火。如果任何一种方法变得流行,那么就会有人找到一种方法来解决它


因此,与其寻找一种真正的电子邮件地址混淆技术,不如想出自己的方法。这些机器人作者并不关心你的网站,他们不会坐在那里写一些东西来绕过你用css和元素边框呈现的文本,或者你完全奇怪的、容易破解的javascript加密。不管它是否琐碎,没有人会为了给你发垃圾邮件而试图绕过它。

我自己做whateverDOC@whatever.com然后在它旁边写上“删除大写字母”

唯一安全的方法当然是首先不要将电子邮件地址放在网页上。

另一种可能是唯一的,技术可能是使用多个图像和几个纯文本字母来显示地址。这可能会混淆机器人程序。

HTML:

<a href="#" class="--mailto--john--domain--com-- other classes goes here" />
<a href="mailto:me@example.spam" id="lnkMail">moc.elpmaxe@em</a>

将电子邮件地址保存到png文件的脚本将是一个安全的解决方案(如果您有足够的空间并且允许在页面中嵌入图像)

这就是我们使用的(VB.NET):

我们覆盖呈现,并在传出HTML出门之前通过它运行传出HTML。这将呈现通常呈现给浏览器的电子邮件地址,但在源代码中类似于此:

<script language="JavaScript">document.write('<a '+'clas'+'s='+'"Mail'+'Link'+'" hr'+'ef'+'="ma'+'ilto:%69%6E%66%6F%40%62%69%63%75%73%61%2E%6F%72%67">&#105;&#110;&#102;&#111;&#64;&#98;&#105;&#99;&#117;&#115;&#97;&#46;&#111;&#114;&#103;</a>');</script>
document.write('&&105;&110;&102;&111;&64;&98;&105;&99;&117;&115;&97;&111;&114;&103;);

显然这不是万无一失的,但希望能减少一定数量的收获,而不会给访问者带来困难。

使用联系方式。将您的所有电子邮件地址放入数据库,并创建一个HTML表单(主题、正文、发件人…),该表单将用户在表单中填写的电子邮件内容(以及用于在数据库中查找此人电子邮件地址的id或名称)提交到服务器端脚本,然后向指定的人发送电子邮件。电子邮件地址在任何时候都不会公开。您可能还需要实施某种形式的验证码来阻止垃圾邮件。

这取决于您的具体需求。对于我工作的大多数网站,我发现用“联系我/我们”的形式将电子邮件从系统发送给任何需要联系的人更有用。我知道这并不完全是你正在寻找的解决方案,但它确实可以完全防止收割,到目前为止,我从未见过通过这样的形式发送垃圾邮件。它会发生,但这是非常罕见的,你永远不会收获


这也让你有机会在发送信息之前记录信息,如果你愿意的话,可以为你提供额外的保护,防止失去联系。

免费的Gmail有一个很棒的垃圾邮件过滤器

如果你不想直接使用Gmail,你可以将邮件发送到Gmail,并在邮件通过他们的垃圾邮件过滤器后使用Gmail转发将邮件发送回你

在更复杂的情况下,当您需要显示@business.com地址时,可以显示public@business.com并将所有邮件转发到gmail帐户,然后由该帐户将邮件转发回real@business.com

我想这不是你问题的直接解决办法,但可能会有帮助。 Gmail是免费的,而且有这么好的垃圾邮件过滤器,这使得使用它成为一个非常明智的选择

我每天在我的gmail帐户中收到大约100封垃圾邮件,但我记不起其中一封是什么时候进入我的收件箱的


总之,无论是Gmail还是其他邮件,都要使用好的垃圾邮件过滤器。让用户重新键入或修改显示的电子邮件地址就像使用DRM防止盗版一样。把负担加在“好人”身上不应该是做任何事情的方式

我不介意。你只会惹恼老练的用户,迷惑老练的用户。正如其他人所说,Gmail为个人/小型企业领域提供了非常有效的垃圾邮件过滤器,而公司过滤器通常也非常好。

我写了一篇()文章,其中使用了我能想到的各种解析技巧(不同种类的HTML实体、URL编码、注释、多行属性、软连字符、不明显的mailto:URL结构等)

它不会停止所有的收割机,但OTOH完全符合标准,对用户透明

另一个很好的方法(您还可以使用
 <span id="email">  </span>   // blank tag

 <script>
 var parts = ["info", "XXXXabc", "com", "&#46;", "&#64;"];
 var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2];
 document.getElementById("email").innerHTML=email; 
 </script>
 info(AT)XXXabc(DOT)com 
<script type="text/javascript">
    $(function () {
        setTimeout(function () {
            var m = ['com', '.', 'domain', '@', 'info', ':', 'mailto'].reverse().join('');

            /* Set the contact email url for each "contact us" links.*/
            $('.contactUsLink').prop("href", m);
        }, 200);
    });
</script>
<a href="mailto:me@example.spam" id="lnkMail">moc.elpmaxe@em</a>
#lnkMail {
  unicode-bidi: bidi-override;
  direction: rtl;
}
$('#lnkMail').hover(function(){
  // here you can use whatever replace you want
  var newHref = $(this).attr('href').replace('spam', 'com');
  $(this).attr('href', newHref);
});
<link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css">

<p>myemail<i class="fa fa-at" aria-hidden="true"></i>mydomain.com</p>