像浏览器那样,把链接拆分为协议、主机、端口、路径、查询字符串和片段。
URL 编码 / 解码器
该工具本身是英文的;本页面将用您的语言对它进行说明。
使用 URL 编码 / 解码器
功能介绍
解码百分号编码的文本,例如隐藏在钓鱼链接中的跳转目标,或用 encodeURIComponent 或 encodeURI 对文本进行编码,以便在 URL 中使用。
它完全在您的浏览器中运行:您输入的任何内容都不会被上传。
如何使用URL 编码 / 解码器
- 粘贴文本. 粘贴经过编码的字符串,例如 url= 或 redirect= 参数的值,或你要编码的普通文本。
- 选择操作. 按 decode 把 %XX 序列还原为字符,按 encodeURIComponent 编码单个值,或按 encodeURI 编码整个地址。
- 查看输出. 结果显示在按钮下方的框中。Error 表示输入对该操作无效。
- 如有需要,再次解码. 每按一次 decode 去掉一层。如果仍能看到 %25、%3A 或 %2F,请把输出粘贴回框中再解码一次。
- 复制或转交. Copy 复制结果。Send to…(发送到…)会把它转交给 Link Unwrapper(链接解包器)、Multi-Layer Decoder(多层解码器)、URL Defanger(URL 无害化工具)或 Homoglyph Checker(同形字符检查器)。
示例
经过编码的跳转目标
https%3A%2F%2Flogin.example.com%2Fverify%3Fuser%3Dalice%40example.com%26step%3D2https://login.example.com/verify?user=alice@example.com&step=2Decode 得到 https://login.example.com/verify?user=alice@example.com&step=2。钓鱼链接常以这种方式携带收件人的电子邮件地址,以便虚假登录页面自动填入。
检查内容
| 信号 | 其含义 |
|---|---|
| 解码结果 | 每个 %XX 序列都会按 UTF-8 变为它所代表的字符。请留意其中是否有第二个完整地址、电子邮件地址或脚本。 |
| 输出中残留 %25 | %25 是经过编码的百分号。如果输出中仍含有 %3A、%2F 或 %25,原文很可能经过了两次编码,这是让人一眼看不出目标地址的常见手法。 |
| Error(错误) | 遇到单独的 %、% 后跟非十六进制字符或不完整的 UTF-8 序列时,解码会失败。编码只会在代理对(surrogate pair)损坏时失败,这在粘贴的文本中很少见。 |
| 加号 | decode 会保留 + 不变。在表单风格的查询字符串中,+ 表示空格,因此请自行按空格理解。 |
| encodeURIComponent 输出 | 对除字母、数字和少数符号(连字符、下划线、点和波浪号)以外的所有字符进行编码,因此 : / ? & = # 和 @ 都会被编码。适用于单个参数值,例如电子邮件地址。 |
| encodeURI 输出 | 保留构成 URL 结构的字符,例如 : / ? & = # @,并对空格和非 ASCII 字母进行编码。 |
| 非 ASCII 字母 | 编码时,每个非 ASCII 字母会被写成两到四个 %XX 字节。以这种方式隐藏的西里尔字母或带重音字母,只有在解码后才会显现。 |
更多示例
双重编码的跳转目标
https%253A%252F%252Fexample.net%252Flogindecode 得到 https%3A%2F%2Fexample.net%2Flogin。再次解码该输出,得到 https://example.net/login。
作为单个参数值的电子邮件地址
alice@example.com&next=/accountencodeURIComponent 得到 alice%40example.com%26next%3D%2Faccount,因此 & 和 / 不会再拆分查询字符串。
带空格和重音字母的完整地址
https://example.org/search?q=café & teaencodeURI 得到 https://example.org/search?q=caf%C3%A9%20&%20tea。& 被保留,因此 tea 会开始一个新参数;对于参数值,请改用 encodeURIComponent。
常见问题解答
三个按钮有什么区别?
encodeURIComponent 会转义除字母、数字和少数符号(如 - _ . ~)以外的所有字符,因此适合单个参数值。encodeURI 会保留 : / ? & = # 等 URL 结构字符,而 decode 则还原 %XX 序列。
为什么解码显示 Error,或留下了 %2F?
格式错误的序列(例如单独的 % 或被截断的 %E0%A4)会导致解码失败,工具会显示 Error。它每次运行只去掉一层,因此双重编码的文本(%252F)需要再解码一次或使用 Multi-Layer Decoder(多层解码器),而且 + 不会被转换为空格。
文本会被发送到任何地方吗?
不会。编码和解码使用本页面中浏览器的内置函数;不会上传任何内容,也不会打开任何链接。
钓鱼链接为什么要编码?
编码会把可读的地址藏在参数中,因此预览、过滤器或匆匆一瞥只能看到第一个主机。跳转服务和邮件扫描器在包装链接时也会对目标地址进行编码。
解码会改变文本中的其他内容吗?
不会。只有 %XX 序列会改变。字母和 + 号保持不变,HTML 实体也不会被转换。
如何解码整个包装链接,例如 Safe Links 地址?
使用 Link Unwrapper。它会找到承载目标地址的参数,并逐层解码。本工具一次性解码整个字符串,因此属于包装部分的内容也会被解码。
为什么带重音的字母或西里尔字母会变成多组 %XX?
ASCII 以外的字符会先写成 UTF-8 字节,然后每个字节单独编码。é 变为 %C3%A9,西里尔字母 а 变为 %D0%B0。