apple.com 里藏着一个 xn-- :这类假域名专骗"看形状"

apple.com 里藏着一个 xn-- :这类假域名专骗

一、Punycode 解决的是兼容问题

DNS 只认英文字母、数字和连字符。中文、日文、俄文这些非拉丁字符的域名,必须转换成一串 ASCII 才能被全球 DNS 正确解析——这个转换规则就是 Punycode(RFC 3492)。

原始域名编码后
中文.comxn--fiq228c.com
慕课网.中国xn--now726d.xn--fiqs8s
日本語.wsxn--vi8hiv.ws

规则很朴素:非 ASCII 部分转成 xn-- 开头的串。所以看到一个域名里带 xn--,说明它的原文里有非英文字符。

二、现代浏览器把危险藏起来了

Chrome、Firefox 会自动把 Punycode 还原成 Unicode 显示,用户看到的是"漂亮"的原文。这个设计本意是体验友好,却制造了一个安全盲区——

地址栏显示的是"看起来像"的样子,真实解析用的却是那串 xn--。两者的差别,肉眼看不出来。

旧版 IE 会直接显示编码串,反而不容易被骗。这不是说旧浏览器更安全,而是说明:看得懂原始编码,是一种防御能力。

三、形似字符:钓鱼的核心手法

不同语言的字符集里,有很多"长得几乎一样"的字母。典型例子是西里尔字母里的 а、е、о,与拉丁字母 a、e、o 在多数字体下几乎无法区分。攻击者用这些字符拼出 apple.com、paypal.com 的"孪生域名",配合 Punycode 编码,就成了一个能骗过眼睛的假站点。

识别方法只有两个:

  • 复制网址,粘到文本编辑器里看原始形态,出现 xn-- 就要警惕;
  • 用带钓鱼检测的转换工具,把可疑域名粘进去解码,看它还原后到底是什么字符。

四、两种模式与三条限制

模式做什么典型用途
编码Unicode 域名 → xn-- 串配置 DNS、排查解析异常
解码xn-- 串 → 还原原文识别可疑域名到底是什么

三条限制要记住:

  • 长度:编码后单个域名标签不得超过 63 个字符,超了就是无效域名;
  • 非法字符:空格、@、:、/、\ 这类不符合域名规范的字符会被移除或标记;
  • 浏览器差异:现代浏览器自动显示原文,旧版可能直接显示编码串,同一域名在不同设备上"长相"不同。

五、给普通人的三条操作建议

第一,涉及登录、支付的页面,别从聊天记录或邮件里的链接点进去,手动输入官网地址或走收藏夹。

第二,看到"域名里有奇怪字符"的站点,先解码再决定。这一步花不到十秒。

第三,把自己常用的几个关键站点存进书签——书签记的是真实地址,不会因为显示层被伪装而骗到你。

一句话收尾:Punycode 本身是中性的技术,它让中文域名能用;骗人的是"形似字符"。你能做的,是别只用眼睛判断网址。