跳到工具区
Web 开发

URL 解析与参数编辑工具

拆分、编辑、编码并重新组装 URL 的各个组成部分,同时对比原始输入与 WHATWG 规范化结果。

输入0 个字符
结果0 个字符
就绪

想要更顺手的原生工作流?

把「URL 解析与参数编辑工具」放到一个快捷键里。

DevSexy Mac 版保留同样私密的本地处理,同时提供全局快捷键;不用管理浏览器标签页,需要时直接呼出。

全局快捷键可离线使用本地处理
免费试用 Mac 版

当前浏览器工具仍然免费。

准确解析 · 主动规范化

URL 的含义可以不变,字节写法却已经变化。

浏览器会解析、规范化、编码并序列化 URL。这通常很方便,但当缓存键、签名、重复参数或审计日志依赖原始拼写时,每一处变化都需要看清。这里处理的是 URL 文本,不会访问它指向的网络资源。

原始输入 · 保留复制时的字节写法https://User:pa%24%24@例子.test:8443/a%2Fb/c%20d?tag=red+shoes&tag=web#Top%2FSection
规范化结果 · 平台序列化写法https://User:pa%24%[email protected]:8443/a%2Fb/c%20d?tag=red+shoes&tag=web#Top%2FSection

主机名已显示 punycode 规范化结果。再次使用前,还要检查凭据、查询参数顺序和路径中已编码的斜杠。

运行 URL 编码实例

检查重复参数、编码字面加号,或用明确的基准地址解析相对路径。所有操作只在本地处理文本,不请求目标网站。

载入实例会替换输入与选项。下面展示真实输出中的关键结果。

保留重复参数,区分加号和空格

解析 · 保留原始输入。参数保留顺序;解析后的值中 + 变成空格,%2B 变成字面加号。

输入

https://example.test/search?tag=red+shoes&tag=C%2B%2B&empty=#results

两个 tag 值都会保留,empty= 对应空字符串,片段另行列出。

01  "tag" = "red shoes"  · repeated key
02  "tag" = "C++"  · repeated key
03  "empty" = ""

编码包含 C++ 的单个查询值

编码 · query 组件。输入单个值,不要输入完整 URL。此操作使用 encodeURIComponent,空格编码为 %20。

输入

C++ & tea

两个加号成为 %2B%2B,& 成为 %26,空格成为 %20。

C%2B%2B%20%26%20tea

按文档目录解析父级路径

解析相对路径 · 基准地址 https://example.test/docs/guide/。末尾斜线表示 guide 是目录。

输入

../assets/icon.svg?size=2#preview

父级路径移除 guide/,保留 docs/,同时保留查询与片段。

https://example.test/docs/assets/icon.svg?size=2#preview

URL 结构

每个分隔符都会改变解析器所处的状态。

协议https:

决定安全语境和默认端口

用户信息User:••••@

经常被日志记录或意外泄漏

主机名xn--fsqu00a.test

国际化域名会序列化为 ASCII

端口8443

非默认端口也是 origin 的一部分

路径/a%2Fb/c%20d

%2F 仍位于同一个路径段内

查询字符串?tag=…&tag=…

保持顺序的键值对

Fragment#Top%2FSection

仅供客户端使用,不会随 HTTP 请求发送

把查询参数视为有序多值映射

重复参数名本身就是数据。

如果转换成普通对象,tag=red shoes 会被 tag=web 覆盖;URLSearchParams 会按顺序保留两个参数对。

01tagred shoes加号按表单查询规则解码为空格
02tagweb同名参数的第二个值
03empty∅空字符串值
04flag∅只有键名的写法在序列化时会规范化
05next/billing?step=2值本身是一个嵌套 URL

编码规则对照

同一个字符在不同 URL 位置可能承担不同的协议含义。

空格red shoesred%20shoes

在表单式查询数据中也可能写成 red+shoes

字面加号C++C%2B%2B

未经编码的 + 可能被解码为空格

路径斜杠a/ba%2Fb

编码后的斜杠仍留在一个路径段内

Unicode 主机名例子.testxn--fsqu00a.test

按 IDNA 规则序列化主机名

百分号50%50%25

再次编码会变成 %2525

含敏感信息的 URL 检查

能读懂,不代表适合写进日志。

用户信息

高风险

分享或记录前移除用户名和密码。

查询参数中的访问令牌

高风险

优先使用请求头;查询字符串会扩散到日志、历史记录等位置。

签名参数

字节敏感

规范化或重排参数可能使签名失效。

Fragment 数据

仅客户端

不会发送到 HTTP 服务端,但仍可能经复制链接和页面脚本泄漏。

重建前后差异

检查一次逻辑编辑实际改变了哪些字节。

这个示例只改变了最后一个字节。排序、解码、punycode 规范化或编辑任一组成部分后,都应重新检查差异。

Before?tag=red+shoes&tag=web&next=%2Fbilling%3Fstep%3D2
After · one byte edited?tag=red+shoes&tag=web&next=%2Fbilling%3Fstep%3D3

继续排查请求

检查请求中的 JWT

单独解码测试令牌,区分可读声明与已验证身份。

比较原始与序列化 URL

用字符比较找出转义或规范化造成的变化。

在 Mac 上离线检查 URL

在本地工具箱中配合使用 URL 和文本工具。

直接回答

什么是 URL 解析与参数编辑工具?

在线解析 URL 组成部分和重复查询参数,对比原始输入与 WHATWG 序列化结果,检查 percent-encoding 与 punycode 变化后再重建 URL;浏览器不会发起网络请求。

它能做什么?

  • 检查
  • 规范化
  • 编码
  • 解码
  • 解析

如何使用 URL 解析与参数编辑工具

  1. 01

    区分完整 URL 与单个组件

    完整 URL 使用解析;单个组件使用编码或解码。编码整个 URL 也会编码 :、/ 等分隔符。

  2. 02

    核对原始值与序列化值

    检查主机名规范化、有序查询参数、空值和重复键。签名 URL 可能依赖原始字节写法。

  3. 03

    有意地解析或编辑

    相对链接使用真实的绝对基准地址。修改查询时,编辑原始文本后重新解析;当前工作区没有独立的参数行编辑表单。

常见问题

为什么解析查询时 + 会变成空格?
URLSearchParams 按表单查询规则解析,+ 表示空格,%2B 表示字面加号。单独的解码操作使用 decodeURIComponent,会保留原始 +,两种操作规则不同。
URL 解析器会访问网站或检查重定向吗?
不会。解析、规范化、编码、解码和相对路径解析都只处理浏览器中的文本。解析得到地址,不代表地址存在,也不代表访问它安全。
怎样修改查询而不丢失重复键?
编辑 URL 文本后重新解析。有序查询列表保留重复参数,转成普通对象则会覆盖它们。单个值只编码一次;涉及签名时,复用前应比较最终地址的字节变化。