§

URL

§

URL 各组成部分

完整 URL(href)
协议
用户名
密码
主机
主机名
端口
路径名
查询字符串(原始)
哈希(片段)
来源
§

查询参数

值(原始) 解码后的值

此 URL 中没有查询参数

国家互联网信息办公室(网信办)要求 ICP 备案域名在接受外部跳转时,对 URL 中的查询参数进行完整留存与审计;12321 网络不良与垃圾信息举报受理中心在核查钓鱼链接时,需逐段拆解可疑 URL 的路径与参数;工业和信息化部《互联网信息服务算法推荐管理规定》还要求平台对追踪参数进行合规性说明。在浏览器端使用符合 WHATWG 标准的 URL 解析器,可直接还原各字段原始值,便于对照《个人信息保护法》(PIPL)核查跟踪参数的收集范围与合规边界,无需上传任何数据。

URL 解析是如何工作的

解析器基于 WHATWG URL 标准运行,与浏览器处理任意 href 所使用的算法相同。我们将字符串传入原生 URL 构造函数,然后以属性形式读取每个组成部分。

  1. 验证输入. 空字符串会触发空输入提示。否则,我们将文本传入 new URL(text);若抛出 TypeError,则表示该字符串不是有效的绝对 URL。
  2. 读取结构性组成部分. 我们从 URL 对象中读取 protocolusernamepasswordhosthostnameportpathnamesearchhashorigin,每项单独一行,方便单独复制。
  3. 遍历查询字符串. 我们迭代 url.searchParams.entries(),每个键渲染为一行。原始值与 decodeURIComponent(value) 并排显示,使百分号编码的内容(空格、加号、Unicode)以纯文本呈现。
  4. 按需重建. 编辑任意单元格、删除行或添加新参数,然后点击「重建 URL」。工具将根据您的编辑重新构建 URL 对象,并将结果写回输入框。
  5. 实时模式. 开启实时模式后,每次按键都会以 150 毫秒防抖重新解析 URL。在从日志中粘贴片段时,可即时获得反馈。

为何在浏览器中解析 URL

  • 数据不离开标签页. URL 中常携带令牌、会话 ID、OAuth 状态和签名查询参数,这些信息不应由第三方服务保管。本解析器使用浏览器本地运行的 URL 算法——无需上传,无网络请求。
  • 与代码所见一致. Node.js、Deno、现代浏览器和 Cloudflare Workers 均采用 WHATWG URL 实现。在此检查 URL 所得的组成部分拆分,与生产代码中 new URL(input) 调用的结果完全一致。
  • 以人类可读的方式呈现查询字符串. 原始值与解码值并排显示,一眼即可同时看到 q=hello%20world 的网络字节和可读的 hello world,无需手动脑补 URL 解码。
  • 往返编辑. 删除跟踪参数、修正路径中的拼写错误、更改端口——然后重建 URL。输出结果会再次经过 URL 构造函数验证,因此任何无效内容在复制前就会暴露出来。

常见应用场景

每当 URL 不仅仅是一个链接时,URL 解析便会出现在日常的开发、安全和分析工作中。

  • 调试 API 端点:在发送 curl 或 Postman 请求前,确认基础 URL、路径和查询参数。
  • 跟踪参数审计:列出落地页 URL 上的每个 UTM、gclid、fbclid 或活动键,决定保留哪些。
  • 验证联盟与合作伙伴链接:粘贴深链接,在发布前确认目标主机和内嵌的跳转目标。

实例演示

https://example.com/search?q=hello%20world&lang=en 粘贴到输入框。协议显示为 https:,主机名显示为 example.com,路径名显示为 /search,查询字符串显示为 ?q=hello%20world&lang=en。查询表格展示两行:q 的原始值为 hello%20world,解码后为 hello worldlang 的原始值与解码值均为 en。点击 lang 行的「删除」,再点击「重建 URL」——输入框将更新为 https://example.com/search?q=hello%20world

FAQ

什么是 URL 解析器?

URL 解析器接受一个 URL 字符串,将其分解为具名组成部分:协议(https)、用户信息(用户名、密码)、主机(主机名加可选端口)、路径、查询字符串和片段。它还会解码每个查询参数,使百分号编码的值(如 %20 表示空格)变得可读。本解析器使用 WHATWG URL 标准,与浏览器加载页面所用的标准相同。

主机(host)和主机名(hostname)有什么区别?

主机名仅指域名(或 IP 地址)——对于 example.com:8080,主机名为 example.com。当存在非默认端口时,主机为主机名加端口,因此同一 URL 的主机为 example.com:8080。对于使用默认端口的 URL(https 为 443,http 为 80),主机与主机名相同。

解码是自动进行的吗?

结构性组成部分(协议、主机名、端口、路径名)直接从 URL 对象读取,无需额外解码——URL 构造函数已将其规范化。查询值会显示两次:search 中出现的原始百分号编码字符串,以及由 decodeURIComponent 产生的解码值。这样您可以复制下游工具所需的任一形式。

我可以编辑并重建 URL 吗?

可以。每个组成部分单元格和每个查询参数单元格均可编辑。使用「添加」和「删除」按钮增减查询行,然后点击「从各部分重建 URL」。工具会将您的编辑重新传入 URL 构造函数并将结果写入输入框——如果编辑结果产生无效 URL,您将看到与在代码中调用 new URL() 时相同的错误提示。

URL 解析是每位 Web 开发者每周都会遇到的小任务。在浏览器中完成,使用与生产代码相同的算法,既快速又能确保数据留在本机。