piapia123
zh

邮箱地址防爬虫编码

编码

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

把邮箱地址转成几种「看起来正常、抓起来没用」的写法。原理很朴素:把 `me@example.com` 写成 `me@…`(也就是 HTML 实体),浏览器会把它还原成原样显示,读者看到、点击、复制都毫无差别;而垃圾邮件爬虫抓到的是一串实体字符,除非它专门去解码,否则这条地址进不了它的库。这是二十年来最省事、也最不打扰读者的做法。⚠️ 但它挡的是「顺手抓邮箱」的普通爬虫,不是安全措施 —— 会解 HTML 实体的爬虫照样能拿到,别把它当成保护敏感地址的手段。真要彻底隐藏,只能不放明文地址(改用联系表单)。

功能

  • 五种写法一次给出:十进制实体、十六进制实体、可粘贴的 <a> 标签、百分号编码、JS 转义
  • 「只编码 @ 和 .」模式:页面上的地址与明文完全一样,爬虫拿到的却已不是可用地址
  • 可直接粘贴的完整链接 —— 连 href 里的地址也一并编码了
  • 每行可单独复制,不用从长串里手划
  • 全部在浏览器本地完成,邮箱不会被上传到任何地方

使用方法

  1. 把邮箱地址粘贴或输入进输入框
  2. 按需要勾选「只编码 @ 和 .」
  3. 复制「可直接粘贴的链接」那一行,粘进网页源码
  4. 在浏览器里确认显示正常、点击能唤起邮件客户端

常见问题

这真的能挡住垃圾邮件爬虫吗?
能挡掉相当一部分,但挡不住全部 —— 要按这个预期使用。绝大多数爬虫用简单正则从 HTML 里捞 `xxx@yyy.zzz`,实体编码后这个模式就不存在了,它们会漏掉。但专门对抗混淆的爬虫会先解一遍 HTML 实体再匹配,对它们无效。所以这是一个成本极低、收益也有限的措施:花一分钟加上没有坏处,但不要指望它解决所有垃圾邮件,更不要用它来隐藏你不想公开的地址。
「只编码 @ 和 .」有什么好处?
它把改动降到最小:页面上显示的仍是 `me@example.com`(因为浏览器会把 `&#64;` 还原成 @),源码里却已经没有一处连着的 `me@example.com` 字符串了。好处是你自己日后在源码里搜这个地址还能搜到大部分(`me` 和 `example` 都是明文),维护时不会一头雾水。代价是防爬虫强度略低一点点 —— 对有经验的爬虫来说,两者差别不大。
粘上去之后点击没反应 / 显示不对?
先确认粘的是哪一行:「可直接粘贴的链接」那一行本身就是完整的 `<a href="mailto:…">…</a>`,直接放进正文即可;如果只想要地址文本,用实体那一行。另外,粘进 Markdown 文件、富文本编辑器或某些 CMS 的所见即所得模式时,实体可能被编辑器转义成 `&amp;#109;`(把 & 又转了一次)—— 那样浏览器会显示成字面的 `&#109;`。遇到这种情况请切到 HTML 源码模式再粘贴。
有没有更彻底的办法?
有三条路,按彻底程度排:一是不放明文地址,改用联系表单,或者写成「需要邮箱请发消息给我」让访客主动问;二是用图片代替地址(爬虫读不到,但手机端复制麻烦,且屏幕阅读器无法朗读,有可访问性问题);三是用 JS 在页面加载后拼出地址,比实体编码强一些,代价是禁用 JS 的访客看不到。实际经验是:实体编码对偶尔发帖的个人站点足够,商业化站点直接上表单。

相关工具