邮箱地址防爬虫编码
编码所有处理都在浏览器本地完成,数据不上传服务器
输入
把文件拖到这里可直接载入
输出
把邮箱地址转成几种「看起来正常、抓起来没用」的写法。原理很朴素:把 `me@example.com` 写成 `me@…`(也就是 HTML 实体),浏览器会把它还原成原样显示,读者看到、点击、复制都毫无差别;而垃圾邮件爬虫抓到的是一串实体字符,除非它专门去解码,否则这条地址进不了它的库。这是二十年来最省事、也最不打扰读者的做法。⚠️ 但它挡的是「顺手抓邮箱」的普通爬虫,不是安全措施 —— 会解 HTML 实体的爬虫照样能拿到,别把它当成保护敏感地址的手段。真要彻底隐藏,只能不放明文地址(改用联系表单)。
功能
- 五种写法一次给出:十进制实体、十六进制实体、可粘贴的 <a> 标签、百分号编码、JS 转义
- 「只编码 @ 和 .」模式:页面上的地址与明文完全一样,爬虫拿到的却已不是可用地址
- 可直接粘贴的完整链接 —— 连 href 里的地址也一并编码了
- 每行可单独复制,不用从长串里手划
- 全部在浏览器本地完成,邮箱不会被上传到任何地方
使用方法
- 把邮箱地址粘贴或输入进输入框
- 按需要勾选「只编码 @ 和 .」
- 复制「可直接粘贴的链接」那一行,粘进网页源码
- 在浏览器里确认显示正常、点击能唤起邮件客户端
常见问题
- 这真的能挡住垃圾邮件爬虫吗?
- 能挡掉相当一部分,但挡不住全部 —— 要按这个预期使用。绝大多数爬虫用简单正则从 HTML 里捞 `xxx@yyy.zzz`,实体编码后这个模式就不存在了,它们会漏掉。但专门对抗混淆的爬虫会先解一遍 HTML 实体再匹配,对它们无效。所以这是一个成本极低、收益也有限的措施:花一分钟加上没有坏处,但不要指望它解决所有垃圾邮件,更不要用它来隐藏你不想公开的地址。
- 「只编码 @ 和 .」有什么好处?
- 它把改动降到最小:页面上显示的仍是 `me@example.com`(因为浏览器会把 `@` 还原成 @),源码里却已经没有一处连着的 `me@example.com` 字符串了。好处是你自己日后在源码里搜这个地址还能搜到大部分(`me` 和 `example` 都是明文),维护时不会一头雾水。代价是防爬虫强度略低一点点 —— 对有经验的爬虫来说,两者差别不大。
- 粘上去之后点击没反应 / 显示不对?
- 先确认粘的是哪一行:「可直接粘贴的链接」那一行本身就是完整的 `<a href="mailto:…">…</a>`,直接放进正文即可;如果只想要地址文本,用实体那一行。另外,粘进 Markdown 文件、富文本编辑器或某些 CMS 的所见即所得模式时,实体可能被编辑器转义成 `&#109;`(把 & 又转了一次)—— 那样浏览器会显示成字面的 `m`。遇到这种情况请切到 HTML 源码模式再粘贴。
- 有没有更彻底的办法?
- 有三条路,按彻底程度排:一是不放明文地址,改用联系表单,或者写成「需要邮箱请发消息给我」让访客主动问;二是用图片代替地址(爬虫读不到,但手机端复制麻烦,且屏幕阅读器无法朗读,有可访问性问题);三是用 JS 在页面加载后拼出地址,比实体编码强一些,代价是禁用 JS 的访客看不到。实际经验是:实体编码对偶尔发帖的个人站点足够,商业化站点直接上表单。
相关工具
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
UTF-8 字节查看
编码一次列出文本的 UTF-8 字节、Unicode 码点、百分号编码、HTML 实体与转义写法,字符数与字节数分开统计。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
JWT 解析与验签
编码把 JWT 拆成 header、payload、signature,支持用密钥验证 HS256/384/512 签名,并把 exp、nbf 换算成可读时间。全部在浏览器本地完成。
Unicode 转义
编码把中文、emoji 这类非 ASCII 字符转成 \uXXXX、\xXX 或 &#xXXXX; 的转义写法,也能还原回来。全部在浏览器本地完成,不上传。