SaveSaveSaveSave ← 所有指南
简体中文

指南 · 链接风险 · · Stefan Tsezarov

从右往左读

网址会准确告诉你它去往哪里。只是不按你阅读的顺序告诉你。

有人告诉过你点击链接之前要先检查。这是好建议,但大多数人检查错了地方。

一个链接可以带着熟悉的公司名称,却通向完全不同的地方。这个名称可能在子域名里、在路径里,或在 @ 符号之前。在手机上,除非你先展开链接,否则真正的域名可能被截断。

一个习惯就能解决大部分问题:

从右往左读域名。

本指南教你如何不打开链接就检查它。它不能证明链接是安全的。它能帮你在点击之前识破常见的手法。

下面是:主要的手法、如何在不打开任何东西的情况下逐一检查,以及结构扫描能告诉你什么、不能告诉你什么。

01一个地址指向哪里

看这个地址:

https://metamask.io.secure-verify.example/login

浏览器把它分成协议、主机和路径。主机是你实际连接的地方。路径由运营这个主机的人选定,想写什么都可以。

  1. https://协议
  2. metamask.io.子域名——由下方的所有者选定
  3. secure-verify.example可注册域名——真正的目的地
  4. /login路径——由同一个所有者选定

https://metamask.io.secure-verify.example/login 的四个部分,按顺序排列。

在这个主机中,可注册域名是 secure-verify.example。它左边的一切都是子域名,由 secure-verify.example 的所有者控制。所有者可以随意创建任意数量的子域名,几乎可以随便命名——包括把一个子域名命名为 metamask.io。

所以 metamask.io 在这里并不是目的地。它只是左边的一个标签。

“可注册域名”是什么意思

真正重要的部分是可注册域名:个人或公司真正能注册的名称。它是公共后缀加上紧挨着它的那一个标签。通常看起来像 example.com。在某些国家代码结构中,它看起来像 example.co.uk 或 example.com.au。

浏览器和安全工具使用公共后缀数据来找到这个边界。不要以为每种后缀的标签数量都一样。实用的方法是:

从右往左读主机,直到遇到公共后缀,
然后取紧挨在它前面的那个标签。

这就是可注册域名。

这个边界可不是脚注。我们自己的扫描器在 2026 年 9 月 19 日之前一直在数标签,结果判定 coinbase.co.uk 的所有者是 co.uk,把一个普通的正当链接标记成了品牌仿冒。一个对真实网站大呼小叫的工具会被关掉,然后它就保护不了任何人。改了什么、仍然无法判断什么,见技术透明度。

02左边的名称

一个可信的名称可以出现在子域名或路径中,却什么也控制不了。

属于它 https://metamask.io/download
毫无意义 https://metamask.io.wallet-check.example/download

同样的手法也适用于路径,在那里读起来更自然:

https://cdn-assets-9931.example/metamask/verify

在这两个误导性的例子中,可注册域名分别是 wallet-check.example 或 cdn-assets-9931.example。品牌名只出现在由该域名所有者填写的位置上。

在手机上,很长的地址可能把真正的域名挤出视线。判断之前先展开或复制链接。

03形似字符

这里的地址本身没有任何巧妙之处。有人注册了一个看起来就像另一个域名的域名。

熟悉的拼写仿冒改了什么
metamaskmetarnaskrn 可能被当成 m
paypalpaypa1数字 1 可能被当成小写的 l
binanceb1nance数字 1 可能被当成小写的 i

在这个字号下差别很明显。在地址栏里往往不明显。

仿冒域名是真实的域名。这不是浏览器的漏洞。它之所以奏效,是因为我们的眼睛会把相似的形状“取整”。

看第三行:同一个字符替代的字母和第二行不同。这就是为什么机器检测比听起来要难——修正一种拼写,你能抓住 paypa1,却会和 b1nance 擦肩而过。我们的扫描器会尝试名称可能被读成的几种方式,而不是把它归约成一种。

一种相关的变体完全不需要形似字符。它只是在真实名称上加几个词:

metamask-wallet.example · secure-metamask.example · ledgerlive-verify.example

它们每一个都把品牌放在可注册域名的位置上。名称既没有放错位置,也没有拼错。只是多了些搭配的词。公司确实会合法地拥有多个域名,所以这本身不能证明什么——但一个陌生的“品牌加词”域名,不应仅仅因为包含品牌名就被当作官方域名。

不要只相信你的眼睛。把域名和你已经信任的东西比较:一个保存好的书签,或官方应用。

04国际化域名和 Punycode 域名

国际化域名让人们可以用希腊文、西里尔文、阿拉伯文和中文等文字书写域名。为了让旧系统继续工作,许多这样的名称还有一种以 xn-- 开头的 ASCII 形式。这就是 Punycode。

Punycode 并不自动意味着危险信号。许多正当的组织使用国际化域名。但一个意料之外的 Punycode 链接值得仔细看看,尤其是在你并未要求、涉及金钱、账户访问或紧急验证的消息中。

有几个西里尔字母的写法和拉丁字母几乎一样——а、е、о、р、с——所以一个被替换过的名称在屏幕上可能几乎一模一样,而在网络上却是一个毫不相干的域名。

浏览器可能显示 Unicode 形式或 ASCII 形式,取决于域名和浏览器自己的规则。扫描器可以发现 Punycode,却无法证明它显示出来是什么样子。标记 Punycode 是提醒你复查;并不证明是欺诈。

05@ 符号

在 HTTP 或 HTTPS URL 中,@ 之前的任何内容都是用户信息。它不是目的地主机。

https://ledger.com@ledgerlive-verify.example/device
  1. https://协议
  2. ledger.com用户信息——不是目的地
  3. @分隔符
  4. ledgerlive-verify.example主机——你实际到达的网站
  5. /device路径

https://ledger.com@ledgerlive-verify.example/device 的五个部分,按顺序排列。

主机是 ledgerlive-verify.example。文字 ledger.com 并不是你要访问的网站。

这是一种连仔细阅读都能骗过的手法,因为熟悉的名称确实在那里、确实是地址的一部分、而且确实拼写正确。@ 之前出现熟悉的名称,并不能说明这个链接归谁所有。

06短链接和二维码

短链接在你展开或打开之前隐藏了目的地。bit.ly、t.co 和 cutt.ly 这样的服务很普通,出于正当理由被广泛使用——这也正是它们适合用来掩护的原因之一。

二维码完全隐藏了地址。码本身可能没问题,但你无法从图片中检查目的地。

我们的扫描器会标记它认识的短链接服务,但不会替你解析它们。如果它去打开陌生人的链接,就会联系攻击者的服务器,并告诉对方这个链接被检查过了。

如果你需要展开一个短链接,请使用你信任的服务,并在检查之前把返回的任何内容都视为不可信。

07一个实例

按它实际到达时的样子去读:在手机上、在一条通知里、关于一台你拥有的设备。

虚构示例 · 保留域名

Ledger Live — device verification required Your device was flagged during a routine firmware audit on 2 September. Until it is re-verified, outgoing transfers from the connected accounts are paused. Re-verify your device here: https://ledger.com@ledgerlive-verify.example/device If that link does not open on your phone, use the mirror: https://xn--ledgr-2we.example/verify Verification closes in 48 hours. Devices not verified by then will need to be re-paired at a service centre. Ledger Support

这条消息中没有任何地方索要秘密。没有恢复短语,没有私钥,没有密码。它只要你点一下——而这正是攻击所在,因为一旦你到了那边,另一端的页面就可以提出下一个请求。

告诉我它哪里有问题

这条消息同时使用了几种手法:

  1. 主链接把 ledger.com 放在 @ 之前,那里是用户信息而不是目的地。主机是 ledgerlive-verify.example。
  2. 这个主机在可注册域名的位置上带着品牌名和附加的词——所以即使你找到了地址中正确的部分,它读起来仍然像官方的。
  3. 备用链接使用了一个 Punycode 域名,以贴心的镜像站的面目出现。它前面那句话预先解释了第一个链接为什么可能打不开,于是打不开就显得在意料之中,而不是可疑。
  4. 它增加了紧迫感和后果:48 小时,并说转出功能已被暂停。
  5. 它只要你点一下。一旦你到了那边,另一端的页面会提出下一个请求。

起主要作用的细节是那个限制本身。消息为一种收件人无法独立核实的状态给出了一个听起来很技术化的解释,而在那一刻相信它不需要付出任何代价。

我们的引擎对这条消息返回 FAIL——因为带 @ 的链接、Punycode 主机,以及“品牌加词”的域名。它在不解读任何一句英文的情况下就得出了这个结论。

08打开之前如何读一个地址

1

在主机开始之后的第一个单斜杠处停下

那个斜杠之后的一切都是路径。它可以写任何东西,不能证明网站归谁所有。如果路径之前有 @,在确定主机时忽略它左边的所有内容。

2

找到主机并从右往左读

找到公共后缀以及紧挨在它前面的标签。两者合起来就是可注册域名。

3

把它和你想访问的确切域名比较

不是“看起来是否正式”,也不是“是否包含品牌名”。

4

如果地址被截断,决定之前先把它展开

更好的做法是,通过你自己的书签、你保存的应用或你自己输入的地址打开该服务。

不要先点击后检查。

在到达之前就检查。

09扫描能告诉你什么、不能告诉你什么

把一条消息粘贴到扫描器中,它会检查其覆盖范围内的地址和链接的结构,寻找常见的警示信号。

扫描本身不联系任何东西。它在你的浏览器中运行,消息中的任何链接都不会被抓取或解析。如果你随后在扫描发现的加密地址上点击检查这个地址,那个地址——且只有消息中的那个地址——会发送给地址安全提供方。这是你自己选择的单独一步,技术透明度列出了每个提供方具体收到什么。

扫描能帮助识别扫描不能证明
@ 用户信息手法结构正常的网站就是正当的
裸 IP 主机发送者就是他们自称的人
已识别的短链接服务不解析的情况下短链接的目的地是安全的
Punycode 迹象每个 Punycode 域名显示出来是什么样子
出现在可疑位置的品牌名普通的拼写错误就是恶意的
附加了其他词的品牌名干净的结果意味着不存在诈骗
部分易混淆字符网站在你打开后会安全地运行
可疑的 URL 编码内容在它无法解析的后缀上,域名归谁所有
消息中受支持的加密地址没有发现问题的地址就属于你以为的那个人

结构不等于信誉。

干净的结果只意味着在你提交的文本中,没有出现已覆盖的结构性手法。它不意味着链接、网站、发送者或优惠是安全的。

有三个局限值得单独说明。

不含任何手法的域名对结构检查是隐形的。wallet-refund-centre.example 没有形似字符,没有品牌名,没有任何不对劲的地方。如果它今天早上刚注册、上面挂着一个逼真的钱包登录页面,它会通过这项检查以及大多数类似的检查。信誉系统——维护已知恶意地址列表的服务——回答的是另一个问题,这个扫描器并不做它们的工作。

普通的拼写错误无法可靠地被发现。metamsk.io 是一个打字错误,而不是形似字符替换。扫描器无法发现所有这类错误。这是已知的局限,而不是默认的承诺。

Punycode 只被识别,不被翻译。扫描器可以告诉你某个域名是 Punycode 形式。它不一定能告诉你这种形式拼出的是什么名称。

规则

熟悉的名称出现在那里并不是证据。找到可注册域名。

那是整个地址中最便宜就能放进去的东西——也是读者最容易停下来的地方。


本指南中每一个演示手法的地址都指向保留的示例域名。这些目的地无法解析,也不是真实的服务。这里印出的唯一一个真实域名是 metamask.io,即 MetaMask 的真实网站。它作为正确的例子出现在第 2 节,因为要展示品牌名真正应该出现的位置,需要一个真实的地址来和误导性的地址对照。

示例消息是虚构的。相关:链接另一端的页面通常会索要什么、完全不显示的文字,以及写给 AI 而不是写给你的指令。本文仅供教育用途,不构成理财建议。

在浏览器中读到一条可疑消息?扫描选中文字的书签无需复制粘贴就能检查它,文字始终留在你的浏览器中。