前言
也就是防止爬虫爬到形如 mailto:john.doe@example.com
的邮件地址来发骚扰邮件,而同时又想在网页上保留 mailto 链接。
最早看到这种的是在马普所的网站的个人页面(比如这个),只是我当时查了一会也搞不懂它的原理,当然现在试了试也没搞懂。
但只是要加密一下链接,方法当然不止这个。简单(即符合直觉)一点的方法自然是利用 JavaScript。
实现
我搜索到 jumk.de 上一种可能的实现,是一种简单的凯撒密码。我寻思自己用不到这个……我只需要避免明文的邮件地址出现。所以我参考 MDN 的 base64 页面,这么做:
.href=decodeURIComponent(escape(window.atob(something_base64))); location
其中放上事先以 base64 编码好的 mailto:{邮箱地址}
,然后包装成 JS 匿名函数放在 <a>
的 href
里。大概如
<a href="javascript:(function(){
location.href=decodeURIComponent(
escape(
window.atob('bWFpbHRvOmpvaG4uZG9lQGV4YW1wbGUuY29t')));})()">
john.doe@example.com</a>
效果是这样的:john.doe@example.com
当然这样的方式如果足够流行(我并没有做广泛的调查)还是可能被爬的,那我也服气。反正目前这对我就够用了。
还有是用伪元素代替 @
.
这种分隔符,在保证显示效果的同时防止写上明文。这太简单,就不说了。
效果在此处可以看到。