httpsexample.com8080/path/to/page#sectionuser••••••••https://example.com:8080q=hellolang=entag=dev关于 URL 解析器
拿到一条长长的地址需要拆解时就会用到它:排查「参数没传到后端」要看清查询串到底解析成了哪几个键值、对接第三方回调要确认路径与查询串的分界、分析推广链接要取出全部跟踪参数、写爬虫前要确认相对地址如何与基地址拼接。手工数斜杠与问号既慢又容易出错,交给解析器几秒钟就能得到结构化的结果。 解析原理基于 URL 标准:一条地址被拆成协议、主机、端口、路径、查询串与片段六部分,其中查询串再按与号分隔成键值对,片段(井号之后的部分)不会发送给服务器。理解这个结构能直接解释很多现象——例如井号之后的内容永远不出现在服务端日志里,这就是单页应用早期用井号做路由、以及某些统计参数写在井号后必然失效的原因。 使用要点:先区分绝对地址与相对地址,相对地址必须配合基地址才能解析,否则会得到错误结果;路径里的百分号编码需要解码才能看到真实的目录名,但要小心解码后的斜杠会改变路径层级,做安全判断时应先解码再校验、而不是先校验再解码。查询串里同一个键出现多次在标准中是合法的(例如多选筛选),用「转成对象」的方式解析会丢掉重复项,需要保留全部值时应解析成键值对数组。此外加号在查询串里表示空格,这一点与路径不同。 边界与限制:URL 标准(WHATWG)与早期的 RFC 3986 在若干细节上不一致,例如反斜杠的处理、空前缀的路径归一化、以及用户名与口令出现在主机之前时的解析方式,不同语言与浏览器可能给出不同结果;如果解析结果用于安全判断(域名白名单、重定向目标校验),必须使用与目标运行时一致的实现,或干脆不依赖解析而是用白名单固定目标。国际化域名在展示时是 Unicode、传输时是 punycode(形如 xn-- 前缀),做域名比对前必须统一形式,否则会把同一个域名判成两个。还有一类坑是端口与默认端口的等价性:显式写出的默认端口与省略写法在字符串上不同但语义相同,比对时需归一化。 数据与隐私:要解析的地址常带签名参数、访问令牌、会话标识或用户身份信息,分享出去等于泄露访问权。本工具在浏览器内完成解析与解码,不请求任何服务,也不会上传地址;排查完成后如果地址里带令牌,建议顺手在服务端轮换一次。
在日志分析里,把请求地址解析成结构化字段后按主机与路径聚合,能快速看出爬虫与真实用户的比例、以及哪些接口在被高频调用;做重定向安全校验时,则应按「先解码、再比较」的顺序,并且比较归一化之后的形式(统一小写主机名、去掉默认端口、把 punycode 与 Unicode 统一),否则精心构造的绕过地址会通过白名单。解析结果建议直接落成结构化记录,避免下游再次用字符串截取,减少二次误判。
实现原理
解析按 URL 标准把地址拆成协议、主机、端口、路径、查询与片段六部分,查询段再按与号拆成键值对。片段(井号之后)永远不发送给服务器,这解释了为什么早期单页应用用井号做路由、以及写在井号后的统计参数必然失效。同一个键出现多次在标准中是合法的,转成对象解析会丢掉重复项。
https://oltool.net/a/b.html?x=1&x=2#tophost=oltool.net|path=/a/b.html|query=[x=1, x=2](两条,不是一条)|fragment=top(不发往服务端)使用方法
- 打开「URL 解析器」
- 输入或粘贴待处理的内容
- 根据需要调整输出选项
- 点击「运行」按钮,结果实时显示
- 复制或导出结果
使用场景
- 核对回调地址 — 拆解 OAuth redirect_uri,确认 code、state 等参数是否正确传递。
- 清理追踪参数 — 看清 utm_source、gclid 等营销参数,决定哪些需要保留或去除。
- 调试重定向链 — 逐段分析跳转 URL 的查询串,定位丢参或编码错误的环节。
- 解析深链 — 拆开 App 深链或自定义 scheme,查看路径与参数结构。
- 编码排查 — 检查参数值是否被重复百分号编码导致服务端解析异常。
常见问题
hash(#后面)会发到服务器吗?
不会。片段标识符仅在客户端使用,浏览器发起请求时不会把 # 及其后内容发送给服务器,常用于前端路由和页内锚点。
查询参数里的 + 是空格吗?
在 application/x-www-form-urlencoded 上下文里 + 代表空格,但在路径或标准百分号编码里 + 就是加号本身。本工具会按规范解码,必要时请注意来源语境。
同名参数出现多次怎么办?
URL 允许重复键,如 ?tag=a&tag=b。本工具会把它们全部列出,服务端如何取值取决于其框架(取第一个、最后一个或合并为数组)。
为什么有些字符显示成 %E4%B8%AD?
那是 UTF-8 字节的百分号编码,常见于中文等非 ASCII 字符。工具会尝试解码还原为可读文本,若编码不合法则保留原样。
能反过来构造 URL 吗?
本工具专注解析。若你要拼接或编码查询参数生成新 URL,可配合本站的 URL 编码类工具完成反向操作。
如何在线解析一个 URL 的各组成部分?
粘贴完整网址即可拆出协议、主机、端口、路径、查询参数与锚点,便于调试拼接逻辑或核对回调地址。
URL 里的 query 参数怎么提取?
工具会把查询串按 key=value 逐条列出,复制某一项的值很方便,也能检查重复或缺失的参数。
How to parse the parts of a URL online?
Paste a full URL to split out scheme, host, port, path, query and fragment — useful for debugging concatenation or verifying callback URLs.
How do I extract query parameters from a URL?
The tool lists each key=value pair from the query string so you can copy a single value or spot duplicate/missing parameters.
解析结果里 hash 和 search 有什么区别?
search 是 ? 后的查询串(会随请求发到服务器),hash 是 # 后的片段(只留在浏览器端,不会发给服务器)。做前端路由(SPA)时页面状态放 hash 或用 history API,两者行为完全不同。
URL 里有中文,解析后变成 %E4%BD%A0 这样的编码?
URL 规范只允许 ASCII,浏览器在发送前会把非 ASCII 字符百分号编码。解析结果展示的就是这个编码形态,属于标准行为;需要还原中文时对对应部分做一次 decodeURIComponent。
解析结果里 query 的值是编码过的,能自动解码吗?
解析保持原始编码是刻意设计:编码与否是语义的一部分(+ 在 query 里按历史惯例是空格,但严格解析按字面 +)。需要解码时对单独的值调用 decodeURIComponent,全局自动解码反而可能在对比两个 URL 时产生误判。