如何在网站上显示电子邮件地址以避免垃圾邮件?

Jac*_*ack 57 html mailto email jsp

我在我的网站上显示电子邮件如下

 <a href="mailto:inf@example.com">Email</a>
Run Code Online (Sandbox Code Playgroud)

但是我在使用woorank.com分析我的网站时阅读了以下内容,我该怎么做才能避免这种情况?

恶意机器人刮网搜索电子邮件地址,纯文本电子邮件地址更容易被垃圾邮件发送.

Jaz*_*zyP 31

在过去,我已经看到这用javascript完成.基本上,您将电子邮件地址分配给javascript变量,并使用这些变量更改元素的内容.您还可以为禁用javascript的用户提供后备,如果需要,可以将其指向表单的方向.这是一个例子

var user = 'foo',
    domain = 'bar.com',
    element = document.getElementById('email');

    element.innerHTML = user + '@' + domain;
    //OR
    //'<a href="mailto:' + user + '@' + domain + '">Email</a>'  
Run Code Online (Sandbox Code Playgroud)

这种方式机器人永远不会看到电子邮件地址,因为他们不加载JavaScript.


Jan*_*nen 29

好吧,你可以每天找出不同的方式.这是一个使用jQuery.

<a class="mail" href="mailto:john@badmail.mydomain.com">e-mail</a>
Run Code Online (Sandbox Code Playgroud)

然后使用jQuery处理单击.

$('a.mail').on('click', function(){
    var href = $(this).attr('href');
    $(this).attr('href', href.replace('badmail.', ''));
});
Run Code Online (Sandbox Code Playgroud)

我之所以喜欢这样,是因为我可以让垃圾邮件发送者通过虚拟邮件域垃圾邮件,认为他们收到了另一封电子邮件.如果我维护自己的垃圾邮件过滤器,我可以收集样本到我的坏桶.

此外,这种方法允许您使用动态数据渲染页面非常干净,并且只需在整个站点上使用javascript片段一次即可处理实际用户点击.

也适用于手机.

  • 我喜欢这种给垃圾邮件发送者误报的解决方案。总是比给他们一个他们最有可能接受的挑战更好:p (2认同)

Sin*_*1ty 21

在网站上隐藏电子邮件有多种不同的选择,通常使用电子邮件地址的HTML实体版本(如Aziz-Saleh建议的那样),但从实际的网页设计角度来看,只需将电子邮件地址放在网站上即可不是最友好的用户.

例如,mailto:链接会自动触发浏览器打开用户选择的电子邮件应用程序 - 但请考虑这一点.并非每个人都有专门的电子邮件应用程序 例如,我不使用Outlook(我是Windows用户),除非我安装了Windows Live Mail,否则我的计算机无法打开该链接.我认为如果您已登录,Chrome可以打开GMail的链接,但我需要检查一下.

最终,通过使用mailto:,您可能会疏远部分用户群,而这些用户群首先无法使用该链接.

我建议使用电子邮件表单,有很多易于学习的教程可用于PHP和您的语言JSP,例如此链接:在JSP中发送电子邮件甚至在StackOverflow上

通过使用您的服务器发送电子邮件,您可以更严格地控​​制电子邮件的生成方式,允许用户输入的数据,甚至可以向他们发送回复电子邮件(由服务器生成)以确认您拥有收到他们的消息.这是一种经过实践检验的现实方法,允许客户和访客与您联系,同时仍然保护和控制整个过程.

TL; DR:原始mailto:链接可能会疏远没有专用电子邮件程序的人,而如果您使用JSP表单,则可以控制他们与您联系的方式,使用哪些信息(您可以使用字段和HTML5 required属性来强制某些输入字段),您可以甚至回复do-not-reply一封电子邮件,以便他们知道他们的消息被听到(只是不要忘记询问他们的电子邮件地址)

  • 你说得对,但使用"联系页面"的唯一问题是用户无法将我的电子邮件地址添加到他们的联系人列表中; 因此,每次他们想要发送电子邮件都需要访问该网站. (7认同)
  • 我强烈建议*不*使用联系页面.键入太小的表单字段是一件麻烦事,也无法附加任何内容,我猜想在发送的文件夹中发送邮件的人的百分比远远高于不使用邮件程序的人的百分比. (5认同)
  • @lmenus 由于用户必须在表单中输入她的电子邮件地址,网站所有者必须确保根据 GDPR 处理她的电子邮件地址。用户的电子邮件地址在发送到服务器之前必须加密(应该没有问题。您的网站无论如何都应该使用 https)。用户必须被告知其电子邮件地址的使用方式、存储时间等。 (2认同)

Azi*_*leh 18

解决方案1:

你可以使用许多公开的电子邮件地址编码器(谷歌的第一个结果):

http://www.wbwip.com/wbw/emailencoder.html

这将电子邮件编码为其字符实体值,这将需要更多的逻辑形式刮刀来解码它.

因此,一个电子邮件,如:test@gmail.com成为&#116;&#101;&#115;&#116;&#064;&#103;&#109;&#097;&#105;&#108;&#046;&#099;&#111;&#109;可以在一个mailto被使用.

解决方案2:

使用在线电子邮件到图像转换器(再次在谷歌的第一个结果):

http://www.email2image.com/Convert-Email-to-Image.aspx

使它成为一个图像.其他服务使您可以通过以下API自动执行此操作:

https://www.mashape.com/seikan/img4me-text-to-image-service#!endpoint-Main

  • 任何值得他们盐的机器人都能破解编码的电子邮件.令人惊讶的是,并非所有人都这样做,但在一般情况下,这不是一个安全的选择.无论如何,如果你选择它,选择一个*少*流行的变体可能会持续更长时间. (7认同)

Eoi*_*oin 14

JavaScript 解决方案的问题是关闭 JS 的人也看不到电子邮件地址。尽管是少数,但您需要多种技术组合才能获得最佳效果。

此处详细介绍了其中许多技术,但我仅提供了解决方案:https : //www.ionos.co.uk/digitalguide/e-mail/e-mail-security/protecting-your-e-mail-address-怎么做/

注释

<p>If you have any questions or suggestions, please write an e-mail to:
us<!-- abc@def -->er@domai<!-- @abc.com -->n.com. 
</p>
Run Code Online (Sandbox Code Playgroud)

隐藏跨度

<style type="text/css">
span.spamprotection {display:none;}
</style>

<p>If you have any questions or suggestions, please write an e-mail to:
user<span class="spamprotection">CHARACTER SEQUENCE</span>@domain.com. 
</p>
Run Code Online (Sandbox Code Playgroud)

反向字符串 这对于多语言站点可能不友好。

<style type="text/css">
span.ltrText {unicode-bidi: bidi-override; direction: rtl}
</style>
<p>If you have any questions or suggestions, please write an e-mail to:
<span class="ltrText"> moc.niamod@resu</span>.
</p>
Run Code Online (Sandbox Code Playgroud)

JavaScript 和许多其他答案一样

<script type="text/javascript">
var part1 = "user";
var part2 = Math.pow(2,6);
var part3 = String.fromCharCode(part2);
var part4 = "domain.com"
var part5 = part1 + String.fromCharCode(part2) + part4;
document.write("If you have any questions or suggestions, please write an e-mail to:
   <href=" + "mai" + "lto" + ":" + part5 + ">" + part1 + part3 + part4 + "</a>.");
</script>
Run Code Online (Sandbox Code Playgroud)

ROT13 加密 依赖于 JavaScript,但也有助于 GDPR,因为它是加密的。

<script type="text/javascript">
function decode(a) {
  return a.replace(/[a-zA-Z]/g, function(c){
    return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) 
                               ? c : c - 26);
  })
}; 
function openMailer(element) {
var y = decode("znvygb:orahgmre@qbznva.qr");
element.setAttribute("href", y);
element.setAttribute("onclick", "");
element.firstChild.nodeValue = "Open e-mail software";
};
</script>
<a id="email" href=" " onclick='openMailer(this);'>E-mail: please click</a>
Run Code Online (Sandbox Code Playgroud)

仅 CSS 借用自此处:仅使用 CSS 保护电子邮件地址

<!doctype html>
<html>
<head>
    <title>Protect e-mail with only css</title>
    <style type="text/css">
        .e-mail:before {
            content: attr(data-website) "\0040" attr(data-user);
            unicode-bidi: bidi-override;
            direction: rtl;
        }
    </style>
</head>
<body>

<span class="e-mail" data-user="nohj" data-website="moc.liamg"></span>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 我使用了你的 CSS Only 解决方案,谢谢。现在真的有人禁用JS了吗?所有网站都经常使用它(我们可以说它是强制性的) (2认同)
  • @OutstandingBill,我们并没有防止复制和粘贴,我们正在防止机器人。这并不意味着你的观点无效,我真的不知道答案。我想说的是,这些类型的解决方案实际上是混淆的,而不是真正的安全性,通常并不是最安全的。我通常会选择 JavaScript 解决方案。 (2认同)

Nab*_*imi 5

就我个人而言,我想到了这个代码,非常简单明了,有点有趣,我将这段代码扔到希望我的电子邮件地址出现的位置:

<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
Run Code Online (Sandbox Code Playgroud)

展开式

<script>
    (function whatever() {
        var s = '@'
            , n = 'nabil'
            , k = 'kadimi.com'
            , e = n + s + k
            , l = '<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g, e)
        ;
        document.write(l);
    })();
</script>
Run Code Online (Sandbox Code Playgroud)

演示版

<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
Run Code Online (Sandbox Code Playgroud)


Rya*_*yan 5

我一直在使用CloudFlare 的免费电子邮件地址混淆功能: https://support.cloudflare.com/hc/en-us/articles/200170016-What-is-Email-Address-Obfuscation-

电子邮件收集者和其他机器人在互联网上漫游,寻找电子邮件地址以添加到垃圾邮件目标收件人的列表中。这种趋势导致不需要的电子邮件数量不断增加。

Web 管理员想出了一些巧妙的方法来防止这种情况,方法是写出电子邮件地址(即,在 cloudflare [dot] com 上提供帮助)或使用电子邮件地址的嵌入图像。但是,您将失去点击电子邮件地址自动发送电子邮件的便利。

通过启用 Cloudflare 电子邮件地址混淆,您网页上的电子邮件地址将对机器人进行混淆(隐藏),同时保持它们对人类可见。事实上,您的网站对访问者来说没有任何明显的变化。

为了防止意外的网站行为,电子邮件地址出现在以下位置时不会被混淆:

  • href任何 HTML 标记属性,标记的属性除外a
  • 其他 HTML 标签
  • 任何 MIME 类型不为“text/html”或“application/xhtml+xml”的页面

我不隶属于 CloudFlare。我只是感谢他们免费提供的一切。