URL 解析器
URL 解析,是指把一条网址按 RFC 3986 拆成协议、用户信息、域名、端口、路径、查询参数和锚点七段。本工具粘贴即拆:参数排成 key/value 表格,%xx 与加号自动解码,中文、双重编码、GBK 老网址都能还原;redirect 或回调里套着的网址可展开成子表,utm 等跟踪参数一键清掉,也能反过来改字段拼回网址。全程在浏览器本地计算,网址不上传,也不会去访问它。
这条网址用 https 协议访问 shop.example.com:443,路径是 /商品/手机,带 4 个查询参数,其中 2 个是跟踪参数,并带一个锚点。
分段高亮
下面这条是你的原文,按七段着色。点一段(手机上直接点、键盘上 Tab 过去也行)就会选中它, 下面结构表里对应那一行同时高亮;再点一下取消。
结构拆解
| 字段 | 原文 | 解码后 | 说明 |
|---|---|---|---|
| https | https | ||
| (无) | (无) | ||
| shop.example.com | shop.example.com | 可注册域 example.com | |
| 443 | 443 | 是这个协议的默认端口,可以省略 | |
| /商品/手机 | /商品/手机 | ||
| q=%E5%8D%8E%E4%B8%BA&page=2&utm_source=weixin&utm_medium=share | 4 个参数 | ||
| comment | comment |
查询参数(4)
规范化与清洗
去掉默认端口 :443;去掉 2 个跟踪参数
相对路径转绝对网址
浏览器口径对照
| 字段 | 本工具(RFC 3986) | 浏览器 new URL() | 为什么不一样 |
|---|---|---|---|
| 端口 | 443 | (无) | 浏览器会把与协议默认端口相同的端口整段抹掉,RFC 3986 只说它可以省略、没说必须省略 |
| 路径 | /商品/手机 | /%E5%95%86%E5%93%81/%E6%89%8B%E6%9C%BA | 浏览器会把中文与空格重新编码成 %xx,解析器必须保留原文才能让你看清输入到底是什么 |
按七段拼回网址
下面这条由上面拆出来的七段原样拼回,用来验证解析没有丢字节;带口令的网址口令会显示成掩码。
编辑并拼回
这一块是可以改的:七段随便填,参数能改名、改值、删行、加行,拖着行或者按上移下移都能排序, 下面那条网址会实时跟着变。改的只是这份草稿,上面的原始解析一个字节都不动; 中文和空格会按所在位置自动编码回去。
| 参数名 | 参数值 | 无等号 | 操作 |
|---|---|---|---|
解析、解码、规范化全部在你自己的浏览器里完成,不联网、不上传,也不会去访问你粘进来的这条网址: 不发请求、不查 DNS、不取网页标题,所以短链也还原不了。本地只保存解码选项与规范化开关这些视图偏好,网址本身不会被记下来。
URL 解析是什么:一条网址被拆成哪几段
URL 解析,就是把一条网址按 RFC 3986 拆成协议、用户信息、域名、端口、路径、查询参数和锚点七段, 并说清楚每一段从哪儿开始、到哪儿结束。这件事也叫网址解析、URL 分解或者 URL 拆解, 说的都是同一个动作:把一串看起来连成一团的字符,还原成它本来的结构。
| 字段(URL 组成部分) | 这条网址里的值 | 它管什么 | 能省吗 |
|---|---|---|---|
| 协议 scheme | https | 决定用什么方式访问,冒号前那一截 | 不能省 |
| 用户信息 userinfo | (无) | @ 之前的用户名与口令,现在极少用 | 可省 |
| 域名 host | shop.example.com | 真正要访问的那台机器 | http 与 https 不能省 |
| 端口 port | 443 | 冒号后的数字,默认端口可以不写 | 可省 |
| 路径 path | /商品/手机 | 域名之后、问号之前的那一段 | 可省 |
| 查询参数 query | q=%E5%8D%8E%E4%B8%BA&page=2&utm_source=weixin&utm_medium=share | 问号之后、井号之前,用与号分隔 | 可省 |
| 锚点 fragment | comment | 井号之后的部分,不会发给服务器 | 可省 |
网址解析器先看协议,协议决定后面怎么读
冒号前那一截是协议。本工具内置 44 种协议的默认端口与写法特征, 遇到没见过的协议也照常按通用规则拆,只是不知道它的默认端口。 有一类协议没有双斜杠,比如 mailto: 和 tel:, 它们冒号后面整段是「不透明路径」,不再拆域名和端口,但问号后面照样有参数。
| 协议 | 默认端口 | 说明 |
|---|---|---|
| http | 80 | 明文传输,现在基本都会跳到 https |
| https | 443 | 默认端口 443,写出来反而不规范 |
| ws | 80 | 与 http 同端口的长连接协议 |
| wss | 443 | 与 https 同端口的长连接协议 |
| ftp | 21 | 现代浏览器已陆续停止支持 |
| ftps | 990 | FTP 的 TLS 变体,不是 SFTP |
| sftp | 22 | 跑在 SSH 上,与 FTPS 无关 |
| ssh | 22 | 远程登录,常见于 git 仓库地址 |
URL 端口解析与 IPv6 URL 解析这两处最容易读错
端口是域名后面冒号跟的那串数字。难点在于冒号不止一处:https://u:p@a.com:8443/x 里 有两个冒号,只有最后一个是端口分隔符;而 http://[::1]:8080/ 里方括号内全是地址, 要先把方括号剥掉才轮到端口。本工具按「先取最后一个 @、再剥方括号、最后取最后一个冒号」的顺序拆, IPv6 地址里的区域标识(写成 %25eth0)也会单独列出来。
URL 片段解析:锚点解析和查询参数不是一回事
井号之后是锚点,也叫片段。它和查询参数最大的差别是:锚点根本不会发给服务器,只在浏览器里起作用。 所以统计参数、排查接口问题时,锚点里的内容是不算数的。前端路由是个例外,#/user/1?tab=2 这种写法把参数塞进了锚点里,本工具遇到会顺手也把它拆出来并给一句说明。
怎么在线解析 URL 参数:重复键与数组写法
网址参数是什么意思?就是问号之后、井号之前那一段用与号串起来的键值对, 服务端靠它知道你要第几页、筛的是哪个条件、人是从哪儿来的。 URL 参数解析的第一步就是按与号把这段切成若干片,每片在第一个等号处切成键和值。 听起来简单,真正麻烦的是四种「不那么标准」的写法,它们恰恰是线上最常见的形态。 本页把解析 URL 参数的结果直接排成表格,序号、键、值、类型、标记五列,一眼看完。 在线 URL 解析这件事看着只是切字符串,难点全在这些不标准却又极常见的写法上。
| 写法 | 例子 | 本工具怎么读 | 为什么要区分 |
|---|---|---|---|
| 重复键 | ?id=1&id=2&id=3 | 三行,每行都标「重复」 | 服务端取第一个还是最后一个各家不同 |
| 空值与裸键 | ?a=&b | a 是空值,b 是无等号的裸键 | 两者在多数框架里语义不同,不能混为一谈 |
| 方括号数组 | ?tag[]=new&tag[]=hot | 归到同一个基名 tag 下 | PHP 与部分 Node 框架的约定,只归组不改写原文 |
| 分号分隔 | ?a=1;b=2 | 默认当成一个参数,开开关后切成两个 | 2014 年前分号也是合法分隔符,老系统还在用 |
URL 参数查看:把 query string 解析成一张可核对的表
很多人做 URL 参数转表格是为了核对,比如投放链接里到底带了几个参数、有没有漏掉必填项。 查询字符串解析这件事在英文检索里叫 query string 解析,说的是同一件事。 本页的表格支持切换「显示解码后」和「显示编码原文」两列视角——排查问题时, 你需要看得见原始字节,而不是只看到一个被美化过的结果。
URL 参数名区分大小写吗,重复键取哪一个
HTTP 的查询参数名是区分大小写的,这一点和请求头不同:?A=1&a=2 是两个不同的参数, 本工具不会把它们合并。而同名参数出现多次时,取第一个、取最后一个还是取成数组, 规范并没有规定,各家框架各行其是,所以本页只如实告诉你「这个名字出现了几次」,不替你拍板。
URL 里的 %xx 和中文乱码怎么还原
把网址粘进本页就还原好了:本工具对七段结构和每一个参数分别做百分号解码, 解不通的那一处只报出坏在第几个字节、其余部分照常显示,而不是整串报错; 按 UTF-8 解不出来的中文会另给一条 GBK 提示,但编码不会被悄悄换掉。
网址里只能出现有限的一批 ASCII 字符,中文、空格、井号这些都要先变成字节、再把每个字节写成 百分号加两位十六进制,这就是百分号编码。URL 解码在线做的就是反过来这一步: 把 %E4%B8%AD%E6%96%87 还原成「中文」。URL 编码解析要注意的是, 它是按字节而不是按字符工作的,所以一个汉字通常占三组 %xx。
URL 加号空格:查询串里的加号是空格,路径里的不是
这是几乎所有中文教程都含糊带过的一条规则,也是本页刻意做成开关的原因。 在查询串里,加号是空格的历史写法,?q=hello+world 解出来是 hello world; 而在路径里加号就是加号本身,/a+b 解出来还是 a+b。 想表达字面的加号,规范写法是 %2B:?q=1%2B1 解出来是 1+1。 本工具的「加号当空格」开关只作用于查询串,路径与锚点不受影响,这样往返才不会坏。
URL 中文乱码与 URL 参数乱码:多半是 GBK 老网址
按 UTF-8 解不出来的中文参数,绝大多数来自 2010 年前的老站,它们用的是 GBK 编码, 比如 %D6%D0%CE%C4 按 GBK 才是「中文」。本工具的判据是「严格 UTF-8 解码失败, 并且字节里存在 GB18030 双字节区的组合」,命中时只给一句提示, 让你自己切到 GBK 再看,而不是悄悄换编码。静默换编码会给出一个看着对其实错的结果, 比直接报错危险得多,这也是百分号编码解析这类工具最该守住的底线。
双重编码还原:判断被编码了几遍,比直接多解一次安全
%253A 这种串是百分号自己又被编码了一遍的结果,需要解两次才能读懂。 本工具报「像是编码了两遍」要同时满足三条:解一次之后还留着 %xx 的形态、再解一次能严格解通、 再解一次的结果和解一次不同且百分号占比更低。少了第三条,?q=100%25 这种「值里本来就有一个百分号」的参数会被毁掉, 所以默认永远只解一次,要不要再解一次由你点。
redirect 与回调里的嵌套网址怎么展开
展开的办法是:在参数表里找到 redirect_uri、target 这类跳转参数, 点它那一行的「展开嵌套网址」,被编码过的子网址就会就地拆成一张子表, 子表里的参数照样逐条解码,最多可以展开 3 层。
中文场景里最高频的一类网址,是参数里又套着一条网址:外链跳转中间页、OAuth 授权回调、 SSO 单点登录跳转,三种形态都长这样。嵌套 URL 展开要解决的问题是—— 外层看着是自家域名,真正要去的地方藏在被编码过的参数值里。
| 场景 | 参数名 | 值里装着什么 |
|---|---|---|
| 外链跳转中间页 | target / jump / url | 点了以后真正要打开的那个站外地址 |
| OAuth 授权回调 | redirect_uri | 授权成功后带着 code 回到的自家地址 |
| SSO 单点登录 | service / next | 登录成功后跳回去的业务系统地址 |
redirect 参数解析:认出这 34 个常见键名
本工具内置一张常见跳转参数名表,共 34 个, 命中它并且值形如网址时,才会把这个值当成可展开的子网址。 点参数行上的「展开嵌套网址」,子网址会就地拆成子表,子表里的参数照样逐条解码; 最多展开 3 层,层层编码的链接不必手工解三遍。
开放重定向检测:跳到别的主机时会明说
当跳转参数里装着一条跨主机的绝对网址时,本页会给一条提示,写清楚点开会去哪个域名。 这类参数如果服务端没做白名单,就是开放重定向:攻击者可以把它做成一条「看起来是自家域名」 的链接,点开却跳去别处。本工具只陈述事实,不下「这是钓鱼」的结论,判断权在你手里。
浏览器 new URL() 与 RFC 3986 的解析差异
浏览器的 new URL() 和 RFC 3986 在下面 9 类情况下 会对同一条网址给出不同答案,每一条都可以自己复现。原因是两者的目标不同:new URL() 遵循的是 WHATWG URL 标准,为了兼容二十多年的历史写法做了大量额外处理; 而 RFC 3986 是更严格的语法规范,只按语法分段、不做任何补救。 本工具的主解析刻意不用 new URL(),因为它会把原文改掉—— 而解析器的价值恰恰在于原样呈现,再把差异指给你看。
| 输入 | 本工具(RFC 3986 严格) | 浏览器 new URL() | 为什么不一样 |
|---|---|---|---|
http://example.com:80/a | 80 | (空) | 浏览器会把与协议默认端口相同的端口整段抹掉,RFC 3986 只说它可以省略、没说必须省略 |
http://example.com\foo | example.com\foo | example.com | 浏览器把特殊协议里的反斜杠当成斜杠,这是为兼容 Windows 习惯留的口子,RFC 里反斜杠只是普通路径字符 |
http://ex ample.com/a | ex ample.com | example.com | 浏览器会先删掉网址里的制表符与换行再解析,所以肉眼可见的断裂在它那里不存在 |
http://0x7f.1/ | 0x7f.1 | 127.0.0.1 | 浏览器沿用了 C 语言的 inet_aton 写法,十六进制、八进制、整数形式都会被当成 IP 地址,钓鱼链接常用这招 |
http://EXAMPLE.com./A | EXAMPLE.com. | example.com. | 浏览器对特殊协议的主机做小写归一,路径则原样保留,因为路径是大小写敏感的 |
foo://Example.com:80/A | Example.com | Example.com:80 | 非特殊协议不走小写归一,也不抹端口,同一条规则在不同协议上结果不同 |
mailto:a@b.com?subject=hi | a@b.com | a@b.com | 没有双斜杠的协议整段是不透明路径,浏览器把它放在 pathname 上,主机为空 |
http://a/路径 空格?q=中文 | /路径 空格 | /%E8%B7%AF%E5%BE%84%20%E7%A9%BA%E6%A0%BC | 浏览器会把中文与空格重新编码成 %xx,解析器必须保留原文才能让你看清输入到底是什么 |
http://a/b/../c | /b/../c | /c | 浏览器一律消除点段,本工具默认保留原文,勾上「点段消除」才动它 |
为什么 URL 解析器不直接用浏览器的结果
因为它会丢掉你最需要看到的东西:中文和空格被重新编码成 %xx、与协议相同的默认端口被抹掉、 反斜杠被当成斜杠、制表符被直接删掉、点段一律被消除。 这些改动在打开网页时是好事,在排查问题时却会掩盖真正的原因。 何况没写协议头的输入它直接抛异常,而排查场景里恰恰经常只拿到半条网址。
浏览器把这三种域名写法当成了 IP 地址
0x7f.1、2130706433、010.0.0.1 这三种写法, 浏览器都会按 C 语言留下来的老规矩当成 IP 地址处理。本工具按域名解析, 同时在对照表里写明浏览器会解成哪个地址——这条差异是识别可疑链接时最实用的一条。
怎么用 URL 解析看出钓鱼网址和开放重定向
钓鱼网址识别没有魔法,靠的是把网址拆开、逐段确认「真正的主机到底是哪一段」。 下面三招覆盖了绝大多数伪装手法,本页对每一招都会给出提示,但只陈述事实、不下结论。
钓鱼网址识别第一招:@ 之前的都不是域名
https://www.example.com@192.0.2.10/login 看起来是 example.com, 真正的主机却是 @ 后面的那个地址,前面那一整段只是用户名。 本工具遇到「用户名长得像域名」时会专门提示,并把真实主机点名写出来。
钓鱼网址识别第二招:punycode 转换后看域名
国际化域名会被编码成 xn-- 开头的形态,中文域名转码之后肉眼很难分辨。 本工具把两种形态并排给出:中文.com 与 xn--fiq228c.com 互为表里。 遇到 xn-- 开头却解不出合法文字的域名,会直接报错, 因为那通常意味着这串被改过。
钓鱼网址识别第三招:域名里混了两种文字
西里尔字母和希腊字母里有一批字符和拉丁字母长得几乎一样,混进域名标签里就成了同形异义域名。 本工具会逐个标签判断文字体系,一旦发现拉丁字母和这两种文字混排就给一条提示, 告诉你「看起来像但不是同一个域名」。另外,网址里直接带口令的写法也会被点出来: 口令会进浏览器历史和服务器日志,本页只显示掩码,明文不会出现在任何结果里。
URL 规范化:两条网址算不算同一条
URL 规范化要回答的问题是:HTTP://Example.COM:80/a/./b/../c 和 http://example.com/a/c 是不是同一条网址。答案是「按规范等价」, 但不同的服务端未必这么认,所以本页把九项处理拆成九个独立开关,你自己决定开哪几个。
| 开关 | 改了什么 | 什么时候别开 |
|---|---|---|
| 协议名转小写 | 把 HTTP 变成 http | 几乎没有例外,可以一直开 |
| 域名转小写 | 把 Example.COM 变成 example.com | 域名不区分大小写,但路径区分,别顺手把路径也小写了 |
| 去掉默认端口 | 去掉 https 的 :443、http 的 :80 | 要向别人证明端口确实写了的时候 |
| 消除路径点段 | 把 /a/b/../c 收成 /a/c | 服务端把点段当普通目录名处理的老系统 |
| 域名显示成中文 | 把 xn-- 形态解回中文 | 要给程序读的时候,机器一律认 xn-- 形态 |
| 参数按名排序 | 按参数名重排 | 签名接口对参数顺序敏感,排序会直接把签名弄错 |
| 去掉空参数 | 去掉空值与裸键 | 有些接口拿「参数在不在」当开关用 |
| URL 去除 utm 等跟踪参数 | 删掉 utm、spm、fbclid 这一族 | 要复盘投放来源的时候 |
| 去掉锚点 | 删掉井号及其后面的部分 | 前端路由把页面状态放在锚点里的时候 |
URL 末尾斜杠加不加,算不算同一条网址
/a 和 /a/ 是两条不同的路径,规范没说它们等价,服务端也常按不同资源处理, 所以九个勾选开关之外还单独给了一个「末尾斜杠」下拉,默认是「保持」,一个字都不动; 选「补上」时只给最后一段不带扩展名的路径补,/a/b.html 不会被补成 /a/b.html/,那是另一个资源;选「去掉」时只去掉路径长于一个斜杠的那种, 根路径的单斜杠会留着。真正被 RFC 3986 第 6.2.3 节认定等价的只有一种情况: 有域名而路径为空,http://example.com 与 http://example.com/ 是同一条, 本页的规范化结果统一按后者输出。所以判断两条网址算不算同一条时,先看差别落在哪一段—— 落在域名后的空路径上可以放心当成一条,落在路径末尾就要当成两条。
URL 去除 utm 等跟踪参数:分享前先清一遍
从 App 里复制出来的链接往往拖着一长串来源标记,既暴露你从哪儿来,又让链接长得没法看。 去跟踪参数是分享前最该做的一步:勾上「去掉跟踪参数」,本页会用与「提取链接」同一份参数表来清理, 摘要里会写清楚删了几个;如果参数被删光了,结果里也不会留一个孤零零的问号。
相对路径转绝对 URL:base URL 解析按 RFC 3986 的算法来
在「相对路径转绝对网址」那一块填一个基准网址,本页会按 RFC 3986 第 5.2 节的标准算法 把上面那条相对引用解析成绝对网址。这套算法有不少反直觉的地方, 比如 ?y 会继承 base 的路径、.. 退到根目录以上时会停在根目录而不报错、 查询串里的点段不会被消除。本工具把规范里的正常例与异常例全部做成了回归用例,逐条对齐。
批量解析 URL 与导出参数表
切到「批量解析」,每行粘一条网址,一次最多 200 行, 输出协议、主机、路径、参数个数、是否含跟踪参数、解析是否有错六列。 运营核对一批投放链接、开发核对一批回调地址,都是这个用法。 作为一个 URL 在线解析工具,它的批量结果可以直接下载成 TSV,用表格软件继续筛。
批量模式下网址解析器的两个上限
批量模式一次最多 200 行,超出的部分不会解析并会明确告诉你多了多少行; 并且批量模式强制不做嵌套展开,因为 200 条乘 3 层递归 会把手机浏览器的主线程卡住。要展开就切回单条模式,那边层数可调。
URL 解析器英文叫什么:同类工具的英文叫法
英文语境下这类工具通常叫 url parser online,搜 parse url online、query string parser、 url decoder online 找到的都是同一件事;只把域名在中文与 xn-- 形态之间来回换的叫 punycode converter,只看跳转参数会不会被人拿去做开放重定向的叫 open redirect checker, 这两件事本页顺手一起做了。英文文档里把问号后面那一段叫 query string、 把井号后面那一段叫 fragment,和本页的「查询参数」「锚点」一一对应,对着读不会错位。
URL 解析器和站内其他网址工具怎么分工
只想把一整串文本做转码,去 URL 编码解码; 要从一篇文章或一份网页源码里把所有网址捞出来,去 提取链接; 参数值是 JWT 就去 JWT 解码,是时间戳就去 时间戳转换。本页对这些值只做提示和内链,不越界代劳, 免得站内出现两个功能重叠的页面。
示例库共 12 条,协议表 44 条,数据更新于 2026.09。 本页示例、正文算例与回归用例取自同一份数据,正文里的数字不写死。 当前示例解析出 4 个参数,其中 2 个是跟踪参数, 域名是 shop.example.com。
如何使用URL 解析器
把一条网址粘进上面的输入框,不用点任何按钮,20000 字符以内都能直接贴;没写协议头也能贴,页面会另给一份按 https 补全的参考结果,你的原文一个字都不会被改。
看结构拆解表:七段各一行,原文与解码后并排,空的那几段会明确写「(无)」而不是藏起来,因为「这条网址没有锚点」本身也是一条信息。
往下是查询参数表:每个参数一行,%xx 与加号自动解码,重复键、跟踪参数、空值、数组写法都会打上标记;参数值本身是网址时点「展开嵌套网址」就能就地看子参数。
需要一条干净网址就用规范化那一块:勾上去掉跟踪参数、去掉默认端口等开关,右边会给出清洗后的网址和一行「做了哪几件事」的摘要,复制走即可。
要核对一批投放链接就切到「批量解析」,每行粘一条,最多 200 行,出表后可以下载成 TSV 用表格软件继续核对。
关于URL 解析器的常见问题
- URL 解析器怎么用,能拆出网址的哪些部分?
- 把网址粘进本页最上面的输入框即可,不用点任何按钮。页面会按 RFC 3986 把它拆成协议、用户信息、域名、端口、路径、查询参数和锚点七段,每段同时给出原文和解码后的样子,空的那几段会明确写成「(无)」而不是藏起来。往下是查询参数表,每个参数一行,标出重复键、跟踪参数、空值和数组写法;再往下是提示条、规范化结果和与浏览器解析口径的对照。整个过程在浏览器本地完成,网址不会上传。
- URL 参数怎么在线解析成表格?
- 粘进网址后,问号之后那一段会被自动切成一张表,五列分别是序号、参数名、参数值、值的类型和标记。表格保留参数的原始顺序,重复出现的参数名会标出现了几次,utm 这类跟踪参数会单独打标,没有等号的裸键和值为空的参数也会分开标记,因为它们在多数服务端语义不同。表格右上角可以切换显示解码后还是显示编码原文,核对问题时看得见原始字节很重要。整张表可以复制成 JSON,也可以下载成带 BOM 的 CSV。
- URL 里的中文变成 %E4%B8%AD 怎么还原?
- 直接粘进来就还原好了。百分号编码是按字节工作的:中文先按 UTF-8 变成字节,每个字节再写成百分号加两位十六进制,所以一个汉字通常占三组。本页对每一段和每一个参数分别解码,解不通时只报出坏在第几个字节,其余部分照常显示,而不是像 decodeURIComponent 那样整串抛错。想反过来把中文编码成 %xx,或者想对一整串文本转码,用站内的 URL 编码解码工具更合适,这两个工具分工明确。
- URL 参数出现乱码是什么原因,怎么解决?
- 最常见的原因有三个。一是编码不是 UTF-8:2010 年前的中文站大量使用 GBK,比如 %D6%D0%CE%C4 按 UTF-8 解不出来、按 GBK 才是「中文」,本页发现这种情况会给提示,你可以把解码编码切到 GBK 再看。二是被编码了两遍,%253A 这种要解两次。三是加号被误当成了字面加号或空格。本页对这三种情况都会给出定位到具体参数的提示,并且绝不悄悄换编码,因为静默换编码会给出看着对其实错的结果。
- URL 解析会把网址上传到服务器吗?
- 不会。解析规则和全部计算逻辑随页面一起打包下发,你粘贴的网址在浏览器本地拆解、本地解码,不会出现在任何网络请求的地址、请求体或请求头里。还有一点要特别说明:本页也不会去访问你粘进来的这条网址,不发请求、不查 DNS、不取网页标题和图标,所以它既判断不了链接是不是还能打开,也还原不了短链,因为短链必须真的请求一次才能拿到跳转目标。本地存储里只有解码选项和规范化开关这些视图偏好,网址本身一个字节都不会被记下来。
- URL 解析器手机上能用吗,要装 App 吗?
- 可以,本页是纯前端页面,用手机浏览器直接打开就能用,不需要装任何 App。窄屏下结构拆解表会从并排的四列自动改成堆叠卡片,参数表和对照表放在可以横向滑动的容器里,很长的网址也不会把页面撑出屏幕。常见的用法是:在手机上收到一条来路不明的分享链接,先粘到这里看清楚真正的主机是哪一段、参数里有没有套着别的网址,再决定要不要点开。清洗掉跟踪参数后的短网址也可以直接复制走再转发。
- URL 解析器免费吗,需要注册吗?
- 完全免费,不需要注册、不需要下载客户端,也没有次数限制。之所以能免费,是因为这是纯前端计算:解析、解码、规范化全在你自己的浏览器里跑,我们这边没有按次产生的服务器成本,自然不必用登录或配额来限制你。单条网址的长度上限是两万字符,批量模式一次最多两百行,这两个上限是为了保证页面在手机上也不卡,而不是付费门槛。
- 双重编码的 URL 怎么判断和还原?
- 判据是三条同时成立:解一次之后结果里仍然有百分号加两位十六进制的形态、把它再解一次能严格解通、并且解两次的结果和解一次不同且百分号占比更低。三条都满足,本页才会提示「像是被编码了两遍」,并在那一行给出再解一次的按钮。默认永远只解一次,因为值里合法地含有百分号的情况非常多,比如表示百分之一百的 100%25,自动多解会把正确的值毁掉。这也是本页刻意不做自动多层解码的原因。
- redirect 参数里的嵌套网址怎么展开看?
- 本工具内置一张常见跳转参数名表,像 url、target、redirect_uri、next、service 这些都在里面。当参数名命中这张表、并且值解码后确实是一条网址时,那一行会出现展开按钮,点了就在原地把子网址拆成子表,子表里的参数照样逐条解码,最多展开三层。层数可以在上方调整,调到 0 就完全不展开。如果子网址指向的是另一个主机,页面还会额外给一条提示,写明点开会离开当前站点去哪个域名。
- 中文域名和 xn-- 开头的 punycode 怎么互转?
- 粘进带中文域名的网址,结构表的域名那一行会把两种形态并排给出,比如中文.com 与 xn--fiq228c.com。规范化那一块还有一个开关,决定清洗后的网址输出哪一种形态:给程序读就用 xn--,给人看就用中文。转换按 RFC 3492 实现,双向都做过回归验证。需要说明的是本页只做小写归一加逐标签转码,没有做完整的 UTS-46 映射,遇到全角字符这类需要完整映射才能定论的情况会如实提示,不假装权威。
- URL 里的加号是空格还是加号本身?
- 要看它在哪一段。在查询串里,加号是空格的历史写法,所以 ?q=hello+world 解出来是 hello world;在路径和锚点里,加号就是加号本身,/a+b 解出来还是 a+b。想在查询串里表达字面的加号,规范写法是写成 %2B,?q=1%2B1 解出来是 1+1。本页把这条规则做成了一个开关,而且这个开关只作用于查询串,路径和锚点不受影响,这样编码和解码才能正确往返。绝大多数中文教程都把这一条讲含糊了。
- 相对路径怎么转成绝对 URL?
- 在页面的「相对路径转绝对网址」那一块填一个基准网址,把相对引用放在上面的主输入框里,结果会实时算出来。算法是 RFC 3986 第 5.2 节的标准流程,规范里的正常例和异常例都做成了回归用例。有几处结果比较反直觉:只写问号加参数时会继承基准网址的路径,两个点退到根目录以上时会停在根目录而不是报错,查询串里出现的点段不会被消除。基准网址必须是带协议的绝对网址,否则页面会直接提示,而不是给一个错的结果。
- 怎么去掉网址里的 utm 等跟踪参数?
- 在规范化那一块勾上「去掉跟踪参数」,右边就会给出清洗后的网址,摘要里会写清楚删掉了几个。参数表用的是站内统一维护的一份跟踪参数表,除了 utm 系列,还包含 gclid、fbclid、spm、vd_source、share_source 这些国内外平台常见的来源标记。如果参数被删光了,结果里不会留一个孤零零的问号。要提醒的是,如果你正好要复盘投放来源,就别开这个开关,那些参数本身就是数据。
- URL 解析器支持多长的网址,有条数限制吗?
- 单条网址上限是两万字符,超过会截断并给出提示。超过两千零四十八字符时会另给一条说明,因为部分浏览器和服务器会在这个长度上截断,这是实际部署时的常见坑。批量模式一次最多解析两百行,多出来的部分不会处理并会明确告诉你多了多少行。批量模式里不做嵌套网址展开,因为两百条乘三层递归会把手机浏览器的主线程卡住,需要展开就切回单条模式。查询参数超过两百条时表格会折叠,可以展开看全部。
- 怎么用 URL 解析看出一条链接是不是钓鱼网址?
- 把链接粘进来,重点看三处。第一是用户信息那一行:@ 符号之前的内容都不是域名,https 冒号双斜杠加 www 某某点 com 再加 @ 再加另一个地址,真正访问的是 @ 后面那个。第二是域名的两种形态:xn-- 开头的域名要看解出来的中文是什么,以及浏览器会不会把它当成 IP 地址。第三是域名标签里的文字体系,西里尔字母混进拉丁字母里就是同形异义域名。本页对这三种情况都会给提示,但只陈述事实,不会替你下是不是钓鱼的结论。
- URL 末尾多一个斜杠还算同一条网址吗?
- 要看斜杠加在哪儿。域名后面路径为空和只写一个斜杠是等价的,按 RFC 3986 第 6.2.3 节,example 点 com 和它后面加一个斜杠算同一条,本页规范化时统一按带斜杠的那种输出。但路径末尾的斜杠完全是另一回事:斜杠 a 和斜杠 a 再加斜杠是两条不同的路径,规范没说它们等价,实际部署里常见一条直接返回内容、另一条给一个 301 跳转。所以本页把末尾斜杠做成独立下拉,默认保持原样,要补要去由你自己决定。
- URL 解析和 URL 编码解码有什么区别?
- 解析是拆结构,编码解码是换写法,两件事分在两个页面。本页的 URL 解析器把整条网址切成协议、域名、端口、路径、查询参数、锚点这些段,再对每一段分别解码,回答的是「这条网址由什么组成、哪一段值得怀疑」。站内的 URL 编码解码工具不看结构,它接受任意一段文本,整体做百分号编码或解码,适合你手里只有一个参数值、或者要把一段中文先转成 %xx 再拼进网址的场景。拿到一整条网址用本页,拿到一小段文本用那边。
- IPv6 地址和带端口的 URL 能正确解析吗?
- 可以。IPv6 地址在网址里必须写在方括号里,比如 http 冒号双斜杠加中括号包起来的两个冒号加 1,再加冒号 8080。解析时要先把方括号剥掉才轮到端口,否则地址里的冒号会被误当成端口分隔符,这也是很多简易解析器出错的地方。本页还会校验分组数量、压缩写法只能用一次、末尾嵌入的 IPv4 是否合法,并把区域标识单独列出来。区域标识在网址里要写成百分号二五加名字,这一点按 RFC 6874 处理。