现在 spammer 们很猖狂,因此直接把邮件地址写在网页中似乎不是一个好主意。如何公布你的邮件地址才能既安全又有效?下面分享几种方法,使得邮件地址更难被别有用心的人收集到。
使用 AT 和 DOT
这应该是最古老,也最方便的办法了:
Contact: john.appleseed <AT> gmail <DOT> com
但是它往往还比较有效,因为这种方法形式复杂多变,spammer 们往往难以检测出来。只是…个人认为比较难看。
使用图片代替
这种方式不必多说,有效,但是缺点也很明显:增加了数据载入量、不易复制,有时不美观,等等。 有很多做这种图的网站。如果你用 Gmail,则可以选择Email Icon Generator,因为它有一些预定义的模版,生成的图比较好看。例如:
当然,它也支持自定义:
使用 JavaScript
<p>Contact: <span id="hidden-email"></span></p>
<script>
var a = "john.appleseed" + String.fromCharCode(64) + "gm" + "ail.com";
document.getElementById("hidden-email").innerHTML = a;
</script>
这种方式代码中根本不会出现@
字符,而且也可以直接复制,并且只要启用了 JavaScript 的浏览器都可以正常显示。只不过对于同样启用 JavaScript 的爬虫就无效了。查看 Demo
使用 CSS
使用 display:none
这个方法即在地址中插入一些隐藏的文本,存在于 DOM 中,但是人眼看不到。例如:
<p>Contact: john.apple<span class="hidden">stop spam</span>seed@gmail.com</p>
<style>
.hidden {
display: none;
}
</style>
使用 CSS 反转阅读顺序
即,用从右向左的方式书写你的 Email 地址,然后再用 CSS 把它反过来。这样,在代码中实际出现的 Email 地址就是相反的。如下:
<p class="reversed">moc.liamg@deeselppa.nhoj</p>
<style>
.reversed {
unicode-bidi: bidi-override;
direction: rtl;
}
</style>
但是这样做有一个明显缺点,就是…用户复制出来的内容也是反着的。
备注,通过专用的 HTML 标签也可以做到这个效果,不用自己写 CSS 代码。方法:
<bdo dir="rtl">moc.liamg@deeselppa.nhoj</bdo>
使用 CSS 伪元素 :before 和 :after
<p>Contact: <span id="hidden-email">john.appleseed</span></p>
<style>
#hidden-email:after {
content: "@gmail.com";
}
</style>
使用这种方式,在 DOM 中根本不会出现完整的邮件地址,看到的仅仅是一种「视觉效果」。但是缺点是,用户无法复制隐藏起来的部分。查看 Demo。
注意:如果使用 CSS3 双冒号的写法::before
和::after
,则 IE 8 及以下的浏览器是不支持的。
其他方法
使用 Google reCAPTCHA Mailhide
这是 Google 提供的一项免费服务,用户需要输入一个验证码才能查看邮件地址,因此除了麻烦一些,是非常有效的。点击前往。
使用一个「联系我」表单
如果支持动态页面,则可以使用一个联系表单,用户提交表单之后通过服务器端语言来发送邮件到你的邮箱。使用这种方法绝对不会在网页中暴露邮件地址,并且还可以添加验证码等机制进行验证,甚至提供上传附件等功能。