piapia123
zh

URL 解析与查询参数拆解

网络与网页

所有处理都在浏览器本地完成,数据不上传服务器

输入
输出

把一个 URL 拆成协议、用户名、密码、主机、端口、路径、查询串和锚点,并给出浏览器真正会去请求的那个规范化地址。查询参数按表格逐个列出,原始串和解码结果并排,所以 %E4%BD%A0%E5%A5%BD 与中文、a+b 与 a b 之间的差别一眼可见。粘贴进来的地址缺协议时会自动补上 https:// 并注明补了什么,带凭据的地址则不会回显明文密码。

功能

  • 拆出协议、用户名、密码、主机、端口、路径、查询串、锚点与 origin
  • 查询参数表格化:编号、名称、原始值、解码值四列并排
  • 缺协议时自动补 https://;协议相对地址(//example.com/x)补 https:
  • localhost:3000 这类「主机:端口」不会被误判成协议
  • 显示规范化后的地址,也就是浏览器实际发出的那一串
  • 端口没写时给出该协议的默认端口值
  • 带凭据的 URL 不回显明文密码,规范化地址里也一并遮住
  • 非法的百分号序列不会让整次解析失败,其余部件照常给出

使用方法

  1. 把 URL 粘贴进输入框
  2. 需要时调整选项:是否自动补协议、参数怎么显示
  3. 结果实时出现,不需要点运行
  4. 点「复制」取走整份解析结果

常见问题

为什么查询串里的加号被解码成了空格?
查询串里的 + 表示空格,是 application/x-www-form-urlencoded 的约定 —— HTML 表单提交用的就是它,浏览器内置的 URLSearchParams 也遵循这一条。但普通 URL 里的 + 常常是字面加号,比如时区偏移 +08:00,两种解释都说得通。所以表格里同时给出原始值和解码值:需要字面加号时,以原始值那一列为准。
我只输入 example.com 也能解析?
缺协议时会自动补上 https://,并在结果里注明补了什么,不会让你误以为输入本身就是完整地址。如果你的本意是别的协议(http、ftp),请把完整地址粘进来。这个行为可以在选项里关掉,关掉之后缺协议会直接报错。
解析出来的地址和我输入的不一样?
中文路径、参数和锚点会被规范化成百分号编码,默认端口会被省略,多余的路径点段会被合并 —— 这正是浏览器实际请求的地址。想看你输入的原样,看输入框就够了。
为什么一次只能解析一个 URL?
输入里出现换行时会直接报错,而不是把两行悄悄粘成一个畸形地址。把多行输入拼起来解析的失败方式很隐蔽 —— 结果看着像成功了,但主机名是错的。
我的 URL 会被上传吗?
不会。解析全部在浏览器内存里完成,页面不发送任何请求,断网也能用。

相关工具