我在我的网站上展示电子邮件如下
<a href="mailto:inf@example.com">Email</a>
但是我在使用woorank.com分析我的网站时读到了以下内容,我应该怎么做以避免这种情况发生?
恶意机器人会扫描网络以寻找电子邮件地址,而明文电子邮件地址更容易被收到垃圾邮件。
我在我的网站上展示电子邮件如下
<a href="mailto:inf@example.com">Email</a>
但是我在使用woorank.com分析我的网站时读到了以下内容,我应该怎么做以避免这种情况发生?
恶意机器人会扫描网络以寻找电子邮件地址,而明文电子邮件地址更容易被收到垃圾邮件。
过去我看到过使用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>'
这样机器人就看不到电子邮件地址,因为它们不加载javascript。
<a href="mailto<!--comment-->me@...
或者<a href=""><span class="hidden">text</span>
来实现。 - Eoin好的,你可以每天想出不同的方法。这里是一个使用jQuery的例子。
<a class="mail" href="mailto:john@badmail.mydomain.com">e-mail</a>
然后使用jQuery处理点击事件。
$('a.mail').on('click', function(){
var href = $(this).attr('href');
$(this).attr('href', href.replace('badmail.', ''));
});
我喜欢这个的原因是我可以让垃圾邮件发送者认为他们获取了另一个电子邮件地址。 如果我维护自己的垃圾邮件过滤器,我可以将样本收集到我的坏桶中。JavaScript解决方案的问题在于禁用JS的人也看不到电子邮件地址。虽然这只是少数人,但你需要结合多种技术以获得最佳结果。
这里详细介绍了许多技术,但我仅提供了解决方案:https://www.ionos.co.uk/digitalguide/e-mail/e-mail-security/protecting-your-e-mail-address-how-to-do-it/
评论
<p>If you have any questions or suggestions, please write an e-mail to:
us<!-- abc@def -->er@domai<!-- @abc.com -->n.com.
</p>
隐藏的段落
<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>
反转字符串 这可能不适用于多语言站点。
<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>
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>
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>
仅使用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>
mailto:
链接会自动触发浏览器打开用户选择的电子邮件应用程序-但请考虑一下。并非每个人都有专用的电子邮件应用程序。例如,我不使用Outlook(我是Windows用户),除非我安装了Windows Live Mail,否则我的计算机无法打开该链接。我认为Chrome可以在您登录后将链接打开到GMail中,但我需要检查一下。mailto:
,您可能会疏远无法首先使用该链接的用户群体。JSP
语言使用,例如这里的链接:在JSP中发送电子邮件甚至在StackOverflow
通过使用您的服务器发送电子邮件,您可以更加紧密地控制电子邮件的生成方式,用户允许输入的数据以及您甚至可以发送一封由服务器生成的回复电子邮件以确认您已收到他们的消息。这是一种经过验证的现实世界方法,允许客户和访问者与您联系,同时仍然授予您对整个过程的保护和控制。TL;DR: 原始的 mailto:
链接可能会使没有专用电子邮件程序的人感到陌生,而如果你使用 JSP 表单,你可以控制他们如何联系你、使用哪些信息(你可以使用字段和 HTML5 的 required
属性来强制执行某些输入字段),甚至你还可以回复一个 do-not-reply
电子邮件,这样他们就知道他们的消息被收到了(只要不要忘记索取他们的电子邮件地址)
解决方案 1:
您可以使用许多公开可用的电子邮件地址编码器,例如(Google 上的第一个结果):
http://www.wbwip.com/wbw/emailencoder.html
这将把电子邮件编码为其字符实体值,这将需要更多逻辑来解码它。
因此,像test@gmail.com
这样的电子邮件会变成test@gmail.com
,也可以在 mailto 中使用。
解决方案 2:
使用在线电子邮件转换为图像的工具(同样是 Google 上的第一个结果):
http://www.email2image.com/Convert-Email-to-Image.aspx
将其转换为图像。其他服务通过 API 自动执行此操作,例如:
https://www.mashape.com/seikan/img4me-text-to-image-service#!endpoint-Main
个人而言,我想出了一个非常直接和有趣的解决方案。我将以下代码放在我希望我的电子邮件地址出现的位置:
<script>(function whatever(){var s='@',n='nabil',k='kadimi.com',e=n+s+k,l='<a href=mailto:{{spam@uce.gov}}>{{spam@uce.gov}}</a>'.replace(/{{.+?(}})/g,e);document.write(l)})()</script>
使用正则表达式爬取网站并查找电子邮件的机器人将抓取FTC(联邦贸易委员会)的电子邮件地址(spam@uce.gov)。合法的访问者将在使用该代码构建后看到您的电子邮件地址。
##扩展
<script>
(function whatever() {
var s = '@'
, n = 'nabil'
, k = 'kadimi.com'
, e = n + s + k
, l = '<a href=mailto:{{spam@uce.gov}}>{{spam@uce.gov}}</a>'.replace(/{{.+?(}})/g, e)
;
document.write(l);
})();
</script>
##演示
<script></script>
<a href=mailto:{{spam@cia.gov}}>{{spam@fbi.gov</a>}}
这部分。这段代码会让机器人获取CIA/FBI的地址并向他们发送垃圾邮件吗?提前谢谢你。 - A.Alessio a 标记的 href 属性。
其他HTML标记
任何没有"MIME类型"text/html"或"application/xhtml+xml"的页面
我与CloudFlare无关,只是欣赏他们免费提供的一切。
<a href="mailto:info@example.com">info@example.com</a>
这是info@example.com的编码
document.write
并拆分电子邮件地址。但要真正防止垃圾邮件...那就是另一回事了。 - user1932079