保护邮箱地址(反垃圾邮件)
不请自来的电子邮件(通常被称为垃圾邮件)是电子通信领域面临的最大问题之一。据统计:垃圾邮件占全部电子邮件通信的比率高达 80%。
现在的邮箱(如 Gmail)自身通常提供反垃圾邮件的增强过滤——根据预定义的受信任地址(白名单)和垃圾邮件地址(黑名单)识别不请自来的电子邮件的功能。除此之外,我们还应该注意在日常上网过程中保护我们的邮箱地址。
注册服务时……
例如 Gmail 用户在信任度低的站点注册时,使用 +
号:如果 Gmail 邮箱地址是 [email protected]
,可以填写 [email protected]
,这样既无需开设新的电子邮箱,又能保证可以正常接收邮件。
考虑一下网上购物时的情况:你买东西的每一个网站都想留下你的电子邮件地址,以便给你发送货款收据、送货通知之类信息。通常可以肯定,它们也会利用你提供的邮件地址向你发送打折券、促销信息之类内容。由于来自这些网站的邮件又可能包含有关你购买产品的重要信息(例如通知、订单等),因此把这些网站加入垃圾邮件的黑名单并不是一个好主意。
在这种情况下,你可以针对每一个购物网站创建一个电子邮箱。但是这个办法效率不高,容易造成混乱。而在 Gmail 邮箱地址中使用 +
就可以帮助我们解决这样的问题。
接下来你可以设置过滤条件,把所有发向 [email protected]
的邮件自动存档。通过这种操作,所有来自购物网站的邮件会自动从当前收件箱中转移出去,成为 Gmail 邮箱里的历史邮件。这样,那些邮件就不会分散你的注意力,当你搜索邮件或者查看收件箱的时候,这些邮件也都还在。另一个办法是,你可以给所有发向 [email protected]
的邮件自动加上诸如“购物”之类的标签,然后可以根据需要,对相关的邮件进行查看或归类。
这个方法的不足是——很多网站不接受含有 +
的邮箱。
写博客时……
另外,我们还应该在公共站点或者个人博客上保护邮箱地址。最简单的方法是用一些其他字符代替 @
,如 [email protected]
会被垃圾邮件机器人一下子识别出这是邮箱,而用 yourname在gmail.com
可能就安全一些(注意:避免一些已经被用烂了的字符替换——用 #
替换 @
在过去垃圾邮件过滤不成熟的时候有些用,现在用处已经不是很大了),或者直接用一张图片。
如果自己可以直接控制博客代码,可以参考下面的一些方法。
1) HTML 源代码迷惑方法,比如:
yourname<!-- >@. -->@<!-- >@. -->gmail<!-- >@. -->.<!-- >@. -->com
2) 使用 CSS :after
:
<style type="text/css">
p.email:after { content: "yourname\40gmail.com"; }
</style>
<p class="email">email me: </p>
3) HTML 和 CSS:
<style type="text/css">
p span.displaynone { display:none; }
</style>
<p>yourname@<span class="displaynone">null</span>gmail.com</p>
4) HTML + CSS + JavaScript:
.cryptedmail:after {
content: attr(data-name) "@" attr(data-domain) "." attr(data-tld);
}
<a data-name="info" data-domain="test" data-tld="com" href="#" class="cryptedmail" onclick="window.location.href = 'mailto:' + this.dataset.name + '@' + this.dataset.domain + '.' + this.dataset.tld"></a>
如果网站禁用了 JavaScript,click 事件会无法工作,但是邮箱地址仍可正常显示。
5) 使用 JavaScript,定义 function
:
<script type="text/javascript">
function gen_mail_to_link(lhs,rhs,subject) {
document.write("<a href=\"mailto");
document.write(":" + lhs + "@");
document.write(rhs + "?subject=" + subject + "\">" + lhs + "@" + rhs + "<\/a>");
}
</script>
使用时这样引用:
<script type="text/javascript">
gen_mail_to_link('yourname','gmail.com','Hey! there.');
</script>
<noscript>
<em>Email address protected by JavaScript. Activate JavaScript to see the email.</em>
</noscript>
6) 使用 CSS 反序(参考链接)。例如:
<span id="email" style="unicode-bidi:bidi-override; direction: rtl;">
moc.liamg@emanruoy
</span>
这样看上去就是正常的 [email protected]
,但如果复制粘贴出来就会发现是反的。可以通过 JavaScript 解决:
<script type="text/javascript">
var reversedEmail = document.getElementById("email").innerText;
document.getElementById("email").addEventListener('copy', function(e) {
var selection = window.getSelection().toString();
if (selection.indexOf(reversedEmail) >= 0) {
var normalEmail = selection.split("").reverse().join("");
e.clipboardData.setData("text/plain", normalEmail);
}
e.preventDefault();
});
</script>
7) 极客一点的方法——使用 base64 编码/解码,编码方法如下:
$ echo -n '[email protected]' | base64
eW91cm5hbWVAZ21haWwuY29t
解码:
$ echo -n eW91cm5hbWVAZ21haWwuY29t | base64 -d
[email protected]
注意:在 macOS 上面,需要使用 -D
:
$ echo -n eW91cm5hbWVAZ21haWwuY29t | base64 -D
[email protected]
参考文章:
Silvan Mühlemann 研究对比了 9 种隐藏邮件地址的方法,以及一些 CSS 的 tricks。
- Anti-spam measure: Against bots harvesting email addresses
- Effective method to hide email from spam bots
最近更新: