邮箱混淆完全指南:让公开邮箱躲开防爬采集
把网页里的邮箱藏起来,不被爬虫抓去发垃圾邮件。讲清 HTML 实体编码、JS 拼接、at 点替换三种写法的原理、效果和适用场景,真人照样能正常看到点到。
邮箱混淆完全指南:让公开邮箱躲开防爬采集
把联系邮箱放到网页上,几乎是落地页、个人主页、开源项目 README 的标配。问题是,放上去的第二天起,这个地址就开始被采集机器人扫。它们专门爬公开页面,拿一条形如 name@domain.tld 的正则去扫原始 HTML 源码,扫到明文邮箱就丢进垃圾邮件名单。几小时之内,你的收件箱就开始收推广和钓鱼。
混淆的目标只有一个:让原文邮箱字符串不出现在爬虫读到的源码里,而真人和真正的浏览器最后还是能拿到可用的地址。下面把三种主流写法拆开讲,什么时候用哪个,以及它们各自挡得住什么、挡不住什么。
爬虫到底在扫什么
先搞清楚对手。批量采集器不解析页面语义,它做的事很机械:抓 HTML 源码字符串,跑一条邮箱正则,把命中的结果存下来。所以一个明文 <a href="mailto:me@example.com"> 对它来说是送上门的。它不在乎这个链接渲染出来好不好看,它只读源码里的原文。
理解了这一点,混淆的思路就清楚了:只要源码里那段原文 me@example.com 不存在,机械正则就抓不到。难点在于,既要让正则抓不到,又要让浏览器渲染出来给真人用。三种写法就是在这个矛盾里各取一个平衡点。
HTML 实体编码:挡住偷懒的那大半
HTML 实体编码是把每个字符换成数字引用。字母 m 写成 m(十进制)或者 m(十六进制),@ 写成 @。浏览器解析时会把这些还原成原字符正常显示,但页面源码里出现的是一串 &#...,根本没有 @,正则无从下手。
举个真实的例子,a@b.com 用十进制实体编码后,源码里是这样:
a@b.com
访客在浏览器里看到的还是 a@b.com,可以正常点。但纯正则爬虫读到的只有那一串实体引用,扫不出邮箱模式。
实体编码的好处是它仍然能做成真链接,真人体验零损耗。代价是它只挡得住偷懒的那大半爬虫。会先解码实体再匹配的采集器能直接读穿它,所以单独用实体编码,对低成本爬虫有效,对正经采集器不够。重要场景要配上后面讲的 JS 写法。如果你想批量做实体转换,可以用 /zh/t/html-entities-encoder/ 把任意文本转成实体引用。
at 点替换:在纯文本里也能活下来
第二种是纯文本可读混淆,把 @ 写成 (at)、. 写成 (dot),变成 john (at) acme (dot) co。这个写法不依赖 HTML,也不依赖脚本,所以它能在论坛帖、评论区、PDF、推文这些剥掉富文本的环境里活下来。
它的逻辑很直接:源码里既没有 @ 也没有 mailto 形态的 .,正则抓不到;真人一看就懂该怎么把它还原成真地址。代价是它不是可点的链接,访客得手动重打一遍。所以这是个低技术、高兼容的选择,专门用在跑不了 HTML 或脚本的地方。
ROT13 加 JS 拼接:运行时才组装
第三种最强:把地址用 ROT13 打乱后存进一小段内联脚本,浏览器运行脚本时才把它还原并写出真链接。me@example.com 经 ROT13 变成 zr@rknzcyr.pbz,爬虫读 HTML 只看到这串打乱的字母,没有 @ 模式;真浏览器跑脚本时把它转回来,访客点的是正常 mailto。
关键在"运行时才组装":地址在静态源码里始终不成形,只有 JavaScript 执行后才在内存里拼出来,而批量爬虫通常不执行脚本。想了解 ROT13 这个位移逻辑本身,可以在 /zh/t/rot13-encoder/ 里直接试。
我自己的踩坑
我给一个开源项目的文档站加固邮箱时,老老实实把 README 里的维护者邮箱换成了实体编码,自我感觉良好。结果两周后还是开始收垃圾邮件。回头一查,问题出在页脚的结构化数据块:JSON-LD 里的 contactPoint 字段还原原本本写着明文邮箱。爬虫专挑好抓的那个,任你正文混淆得再花,只要页面任何一处留了明文副本,就全白做。从那以后我的习惯是:发布前用 /zh/t/email-address-extractor/ 把整页源码扫一遍,确认没有任何一处漏网的明文邮箱,JSON-LD 和 meta 标签都要查。
怎么选,以及组合使用
没有哪种写法能挡住针对性的爬虫,但能挡掉绝大多数填满收件箱的批量采集。选法可以记成三句话:能跑脚本的页面,用 ROT13 加 JS 链接,再叠一层实体编码,这是最强实战配置;能写 HTML 但不能跑脚本的地方,用实体编码;纯文本环境,用 at 点替换。
混淆只解决"被采集"这一环。如果你是在做表单收集邮箱,那是另一个问题:你需要的是校验用户填的地址是否合法,用 /zh/t/email-validator/ 检查格式和域名更对路。两件事别混在一起想。
想直接生成这四种可粘贴的代码,打开 /zh/t/email-obfuscator/,粘进地址,每种写法都有实时预览和一键复制,所有运算都在你的浏览器里跑,连你自己的邮箱都不离开页面。
Made by Toolora · Updated 2026-06-13