钓鱼网址的六种伪装:从地址栏认出假站,同形字与 punycode 速查
一条网址里真正决定你连去哪儿的,只有可注册域那一段;子域、路径、参数、页面标题全由做站的人自己填。这篇先摆三个网址让你判断,再把六种伪装逐个说明白——顶级域偷换、超深子域、连字符抢注、同形异义字、punycode,还有把真实落点藏在 @ 后面那一种,最后是一条三十秒能做完的核对流程。
三个网址摆在这儿,你觉得哪一个属于 example.com 的持有人?
login.example.comexample.com.account-verify.topexample-com.secure-login.top
答案是第一个,而且只有第一个。后两个的落点分别是 account-verify.top 和 secure-login.top,跟 example.com 没有半点关系,它们只是把这几个字母摆在了你眼睛先扫到的位置。
(本文所有可疑网址都以纯文本给出,页面上没有一条是可以点的。示例里用的 example.com 是技术文档专门留出来做举例的域名,不指向任何真实站点。)
第二、三个也答对了的话,后面几节还有能捡的:同形异义字和 punycode 那两种,靠眼力是分不出来的。
I先答那三个:域名要从最后一个点往左读
一条网址里,只有一段字符有归属意义,其余全是做站的人可以随便填的。
| 网址的这一段 | 比如 | 谁说了算 | 它能证明什么 |
|---|---|---|---|
| 协议 | https:// | 任何人都能配 | 传输被加密了,与对方是谁无关 |
| @ 之前的那一段 | user@ | 写链接的人 | 什么都不能,还常被拿来骗人 |
| 子域 | login.、www. | 域名持有人随便起 | 什么都不能 |
| 可注册域 + 公共后缀 | example.com | 只有注册人 | 你到底连去了谁 |
| 路径与参数 | /account/login?from=official | 任何人 | 什么都不能 |
| 标签页标题、页面内容 | 「XX 官方登录」 | 任何人 | 什么都不能 |
这张表里唯一那行「只有注册人」,就是全部判断的落脚点。读法因此很简单:从最右边开始,认出公共后缀,再往左取一段。
「往左取一段」有个例外
顶级域不总是只有一段。co.uk、com.cn、com.au 这类多级后缀本身就占两段,人是在它们下面注册名字的。所以机械地「从右数两段」会在这些后缀上读错,把 co.uk 当成某个人的域名。
浏览器不靠猜,它查一份公开维护的清单。这份清单叫公共后缀列表(Public Suffix List),由 Mozilla 发起、按社区资源的方式维护,收录的是「互联网用户可以在其下直接注册名字」的那些后缀——它的主页写了这个定义,也说明了浏览器拿它做什么:限制 cookie 的作用范围、在界面上突出显示域名里最要紧的那一段、按站点归类历史记录。
换成人话:先找到公共后缀,它左边紧挨着的那一段才是有人真正掏钱注册的名字,两者合起来就是可注册域。example.com.account-verify.top 里的公共后缀是 .top,往左一段是 account-verify,所以这个地址归 account-verify.top 的持有人。前面那串 example.com 只是他给自己的子域起的名字,起成什么样都行。
这套读法对任何网站都成立
银行、邮箱、快递单号查询、报税系统、交易所,规则是同一条,因为它是域名系统本身的规则,跟行业无关。所以这一篇不针对某一家。想看某家交易所的具体样本——仿冒页面长什么样、假客服上来第一句说什么——仿冒站与假客服那一篇以一家为例逐条对着讲,两篇一起看比较完整。
II六种伪装,各骗你哪一眼
先给速查表。左边那列是你在地址栏里看到的形态,右边是它真正的落点。
| 伪装 | 纯文本示例 | 真实落点 | 骗的是你哪一眼 |
|---|---|---|---|
| 顶级域偷换 | example.co、example.com.co | 另一个注册人 | 你只认前面那个单词 |
| 超深子域 | example.com.login.secure-cdn.top | secure-cdn.top | 从左往右读,读到熟悉的词就停了 |
| 连字符抢注 | example-com.top、example-login.top | 那个连字符域名的注册人 | 小字号下点和连字符几乎一样 |
| 同形异义字 | 拉丁 a 被换成西里尔 а | 一个完全不同的域名 | 字形没有可辨差别 |
| punycode 形态 | xn--exmple-4nf.com | 一个含非 ASCII 字符的域名 | 看着像乱码,你直接略过 |
| 落点藏在 @ 之后 | https://[email protected]/ | secure-login.top | 开头那段确实是真域名 |
顶级域偷换与连字符抢注
这两种成本最低。新的顶级域这些年批发式地开放,注册一个便宜到可以按批买;而 .co 和 .com 只差一个字母,手机键盘上还挨着。连字符则更阴,因为在小字号无衬线字体里,连字符和点的宽度差别小到不值得指望。
有一条启发式挺好用:正经站点很少为了一个登录页去注册新域名。登录、找回密码、验证身份这类页面,通常挂在主域的子域或者路径下。所以看到 example-login.top、secure-example.app 这种「品牌词 + 功能词」的独立域名,先当可疑处理,再去主站找对应入口。
超深子域
把品牌词整段搬到最左边,真正的注册域压到最右边,中间用点分开,看上去就像一条正常的多级域名。它专治从左往右的阅读习惯:眼睛扫到熟悉的词,判断就已经做完了,后面那截被当成路径略过去。
这一种在手机上尤其管用,因为地址会被折叠,被折掉的往往正是最右边那两段。
落点藏在 @ 之后
知道这一手的人最少。按网址的通用写法,主机名前面允许放一段用户信息,中间用 @ 隔开。也就是说,https://[email protected]/signin 这条地址里,真正被访问的是 @ 后面那个主机,前面那串真域名只是一段被当作用户名处理的字符。
浏览器对它的处理并不统一:有的会先弹一句警告,有的直接把前缀抹掉再跳转,也有的照单全收。而邮件客户端和聊天软件的预览里,前缀往往原样显示,你看到的第一眼就是那个真域名。还有一种变体是把 @ 写成它的编码形式 %40,更不起眼,检查时一并搜一下这四个字符。
IIIxn-- 开头的那些:同形字与 punycode
域名系统底层只吃一小撮 ASCII 字符。要让中文、俄文、阿拉伯文的名字也能当域名用,就得先把它们编码成 ASCII 再送进解析流程,而这套编码的结果统一以 xn-- 开头。所以 xn-- 不是乱码,它是一个含非 ASCII 字符的域名的机器写法,正规的中文域名也长这样。
问题出在有些非 ASCII 字符和拉丁字母长得一模一样。西里尔小写 а 与拉丁 a、希腊小写 ο 与拉丁 o,在多数正文字体下画出来没有可辨差别,可它们是不同的字符,编码之后指向完全不同的域名。也就是说,两个在你屏幕上一模一样的地址,可以属于两个毫不相干的人。
Unicode 联盟专门为这件事出过一份技术标准:UTS #39《Unicode 安全机制》。它给出一套「易混淆字符」数据,用来判断两个字符串是不是看起来一样,还定义了混合书写系统的检测和几个由严到松的限制等级,最严的一级只允许纯 ASCII——标准原文在这里,它开宗明义说的就是识别域名这类标识符里的仿冒。浏览器决定把一个域名显示成原样还是显示成 xn-- 形式,用的大体是同一类判断。
各家浏览器的具体策略不一样,也一直在调,所以别把「我的浏览器会提醒我」当成一道防线。它提醒了当然好,没提醒也说明不了这个域名干净。
还有一类不需要非 ASCII 字符
全 ASCII 的形近字更常见,也更没人提醒你:小写 l 和大写 I 在不少无衬线字体里几乎同形,数字 0 和字母 o 差一点点,而 r 和 n 挨在一起看着像 m——把 example.com 写成 exarnple.com,小字号下要盯一会儿才分得开。这一类不会触发任何浏览器提示,因为从字符层面看它完全合法。
对付这两类的办法是一样的:别用眼睛比,用工具比。把可疑地址粘进站里的域名真伪校验器,它会标出这串字符里有没有非 ASCII 字符、可注册域那一段落在哪里、折算成拉丁字母之后和你想去的那个域名差几个字符。计算全在你自己的浏览器里完成,输入的内容不会发出去。
IV一条链接进来时,三十秒能做完的核对
顺序固定,一步不过就停下,不必把后面几步做完。
- 先别点。长按或者右键复制链接地址,把判断放在打开之前。
- 搜 @ 和 %40。整条地址里出现这两样中的任何一个,到此为止。
- 从最右边读。认出公共后缀,往左取一段,这一段不对就到此为止。
- 看有没有非 ASCII 字符或
xn--前缀。有就当假的处理,别赌它是正规的中文域名。这一步和上一步都可以交给域名校验器代劳,它一次把两样都标出来。 - 四步都过了,仍然别用这条链接。从书签或者自己敲的地址进站,再走到对应页面。多花二十秒,把最后那点不确定去掉。
显示的文字和真实落点可以毫无关系
网页和邮件里的链接,显示成什么字由作者决定,真正的落点写在另一处属性里,两者之间没有任何强制关联。链接文字写着一个正确的域名,落点是别处,这是最省事的一种伪装。
桌面上把鼠标停在链接上别点,窗口左下角会弹出真实地址;手机上长按会出预览。有一处例外值得记住:不少企业邮箱会把所有外部链接改写成自家安全网关的地址,于是你悬停看到的是网关域名,原始落点被包在参数里,这时候看也白看,只能自己从站内进。
手机、聊天软件、二维码
移动浏览器为了省地方,地址栏默认只留域名附近一小截,中间省略成两个点,被省掉的常常正是超深子域里最该看的那一段。点一下地址栏让它进入编辑状态,完整地址就展开了;或者长按复制出来,粘到备忘录里看。
聊天软件的内置浏览器更彻底,顶上有时只有一个标题,地址根本不露面。遇到这种就选「在浏览器中打开」。二维码是同一类问题的极端形态:扫之前你对落点一无所知,扫出来之后第一件事是看地址,而不是看页面长得像不像。
我给自己定的规矩
从消息里进来的链接,我一律不点,也不做判断——判断本身有出错率,而我不想在赶时间的时候还得指望自己状态好。真要用某个站,我会花几分钟把域名逐字看清楚,存进书签,之后只从书签进。
代价很实在:限时活动的入口我经常错过,换台电脑要重建一遍书签,在别人的机器上等于什么都做不了。另外我不给人发短链接,因为不想让对方养成点短链的习惯。这些都是我自己的取舍,换个每天要处理几十条外部链接的人,恐怕撑不住这套。
地址栏读法能回答的是「我连去了谁」,回答不了「我自愿交出了什么」。所以还有一条与域名无关的硬规矩:助记词、私钥、验证器的备份密钥,任何页面、任何人问起都不给,哪怕域名逐字对得上——真站不会问这些。已经输进去的,走助记词与私钥那一篇说的迁移办法,改密码在那种情况下没有用。密码或验证码被骗走的,则先按两步验证怎么选里说的把验证方式重新排一遍。
- 一条网址里只有可注册域那一段有归属意义,子域、路径、参数、标题都由做站的人填。
- 读法:从最右边认出公共后缀,往左取一段;
co.uk这类多级后缀要多读一段。 - 六种伪装:顶级域偷换、超深子域、连字符抢注、同形异义字、punycode 形态、落点藏在 @ 之后。
xn--开头说明域名含非 ASCII 字符,正规中文域名也这样;但在要输密码的场合,看到它就停。- 全 ASCII 的形近字(l 与 I、0 与 o、rn 与 m)不会触发任何浏览器提示。
- 链接显示的文字和真实落点无关;企业邮箱的安全网关会把落点包起来,看也看不出。
- 核对顺序:先别点,搜 @ 与 %40,从右读公共后缀,查非 ASCII 与
xn--,最后仍从书签进。
提醒一句:浏览器对同形字和 @ 前缀的处理策略各家不同,也会随版本调整,本页写的是编辑组 2026 年 8 月核对时的情况。文中所有可疑网址均为纯文本示例,不指向真实站点。本站不代收资金、不代办账户申诉,也不会主动联系你索要账户信息。加密资产价格波动大,文章只讲操作,不构成投资建议。
V问得最多的六个
域名到底该从哪一头开始读?
从最右边开始。先认出最后那个公共后缀,往左再取一段,这两部分合起来就是可注册域,它决定了你连去谁的服务器。左边所有用点隔开的部分都是子域,由域名持有人随便起,写成什么样都不能说明归属。碰到 co.uk、com.cn 这类多级后缀,公共后缀本身就占两段,要再往左多读一段。
网址开头有 https 和锁形图标,能说明它是真站吗?
不能。锁形图标说明的是这条连接被加密了,别人在中间看不到内容,它不回答对方是谁。证书如今申请门槛很低,做假站的人顺手就能配一张,所以绝大多数钓鱼站都是 https 开头、都带锁。有归属意义的仍然只有可注册域那一段。
xn-- 开头的网址一定是钓鱼站吗?
不一定。域名系统底层只接受一小撮 ASCII 字符,含中文、俄文这类非 ASCII 字符的域名要先编码成 ASCII 才能解析,编码结果统一以 xn-- 开头,正规的中文域名也长这样。但在你准备输密码的场合,看到它就该停一停:同形异义字的伎俩正是靠这一层实现的。
邮件里链接显示的地址和真实地址会不一样吗?
会,而且这是最省事的一种伪装。链接显示成什么字由写邮件的人决定,真正的落点写在另一处属性里,两者可以毫无关系。桌面上把鼠标停在链接上、看窗口左下角弹出的地址,手机上长按调出预览,都能看到真实落点。有些企业邮箱还会把所有外链改写成自家安全网关的地址,那种情况下你看到的不是原始落点,只能自己从站内进。
短链接怎么判断真假?
判断不了,这正是它的功能。缩短后的地址不携带任何关于最终落点的信息,展开工具也只能解出它当下返回的那一跳,而服务端完全可以按来访者返回不同的目标。凡是要你输密码或者动资金的站点,就别用短链接进,自己从书签或手敲的地址进去。
手机上地址栏被省略成两个点,怎么看全?
点一下地址栏让它进入编辑状态,完整地址会展开;或者长按复制出来,粘到备忘录里看。移动浏览器为了省地方通常只留域名附近的一小截,被省掉的往往正是超深子域里最该看的那一段。从聊天软件内置浏览器打开的页面更麻烦,顶上常常只有一个标题,这时候选在浏览器中打开,把地址露出来再判断。