阅读约 12 分钟
如何检测 URL 重定向(网址跳转)并读懂重定向链
用 TrueURL、curl 和浏览器开发者工具(DevTools)逐步检测 URL 重定向,读懂重定向链的每一跳,并修复重定向循环、过长的重定向链以及 301 与 302 混用等问题。
阅读全文免费 · 无需注册 · 运行于 Cloudflare 边缘网络
粘贴任意链接,无需在浏览器中打开,即可查看它的完整重定向链和最终 URL。每一跳都会显示状态码、响应头和耗时。
按 Enter 开始检测
Cloudflare 边缘网络始终会验证证书,因此该选项无法跳过证书验证。证书问题会在检测结果中报告。
随第一个请求发送,最大 16 KB。除非设置了 Content-Type 请求头,否则 JSON 请求体以 application/json 发送,其他内容以表单形式发送。
可设为 1~50。浏览器会在 20 跳后停止。
网站可能会把手机、搜索引擎爬虫和链接预览爬虫重定向到不同的地址。
随重定向链中的每个请求一起发送。
未添加自定义请求头。
填写值后才会发送此请求头。请求头的值不会保存。
跟踪 HTML 页面中的 <meta http-equiv="refresh"> 标签和 Refresh 响应头。
跟踪页面脚本中简单、无条件的重定向,例如 location.href = "…"。
设置会保存在此浏览器中,但 Cookie、请求头的值和 POST 请求体始终不会保存。
针对各类重定向问题的专项检测工具。
点击“检测”后,URL 会被发送到 TrueURL 的检测程序,它运行在 Cloudflare 全球边缘网络上。检测程序在关闭自动重定向的情况下请求该 URL 并读取响应。如果响应是重定向,就解析 Location 响应头并请求下一个 URL,逐跳跟踪,直到遇到不再重定向的页面、出现错误、发现重定向循环或达到最大跳数上限为止。
浏览器始终不会访问被检测的 URL,因此可以放心查看短链接、跟踪链接或来路不明的链接。除了 HTTP 3xx 重定向,检测程序还能识别 HTML 页面中的 meta refresh(HTML 页面自动刷新)标签和简单的 JavaScript 重定向,并单独标注出来,因为用命令行工具检测时很容易漏掉这类客户端重定向。
默认请求无法满足需要时,可以打开高级设置:
Accept-Language: de 或会话 Cookie。用来冒充其他客户端 IP 地址的请求头(如 X-Forwarded-For)不会被发送。与浏览器一样,重定向链中设置的 Cookie 会保留到后续各跳。TrueURL 从 Cloudflare 数据中心发出“干净”的请求:没有浏览历史,没有登录会话,除非手动添加,也不带任何 Cookie。默认情况下,它以桌面版 Chrome 的身份发出请求,并请求英文内容(Accept-Language: en-US)。按国家/地区、语言、设备或登录状态进行重定向的网站,可能会把它重定向到与您不同的地址。可以通过 User-Agent、请求头和 Cookie 设置来复现实际的访问环境;基于国家/地区的重定向则取决于网站把 Cloudflare 的 IP 地址定位在哪里,这一点无法更改。另外别忘了,浏览器本身也可能缓存了旧的 301 重定向。
有些网站会拦截来自数据中心和边缘网络的自动化请求,或要求其通过人机验证。如果某个响应看起来像机器人检测或人机验证(质询)页面(例如“Just a moment...”),TrueURL 会将其标出,因为真实的目标地址被挡在验证页面之后,检测并未实际到达那里。
URL 重定向用来告诉浏览器或爬虫:它请求的内容位于另一个地址。服务器返回 3xx 状态码和 Location 响应头,客户端随后请求新的 URL。页面迁移、更换域名、从 HTTP 升级到 HTTPS,或者短链接指向长链接时,网站都会使用重定向。页面也可以在 HTML 中通过 meta refresh 标签或 JavaScript 实现重定向。
为了准确了解链接通向哪里,以及中间经过了哪些步骤。网站所有者需要确认旧 URL 只经过一次永久重定向就能到达正确页面、HTTP 会重定向到 HTTPS,并且没有循环或出错的跳。其他用户则可以在点击之前先核实短链接、联盟推广链接或跟踪链接。如何检测 URL 重定向一文还介绍了 curl 和浏览器开发者工具(DevTools)的用法。
301 表示页面已永久移动:浏览器可能会缓存它,搜索引擎会将新 URL 编入索引,并把链接等信号转移到新 URL。302 是临时重定向,因此原 URL 通常会继续保留在索引中。永久迁移请使用 301(或 308)。我们的 HTTP 重定向状态码指南对所有重定向状态码做了对比。
不会。URL 和设置仅为执行检测而发送到我们部署在 Cloudflare 网络上的检测程序,结果会直接返回到浏览器。我们不保留检测结果,也不保留检测过的 URL 历史记录。Cloudflare 会短期保留发往检测程序的请求的技术日志,用于故障排查。高级设置只保存在您自己的浏览器中,Cookie 值、请求头的值和请求体永远不会被保存。详情请参阅隐私政策。
它是从发出某一跳的请求到收到该跳响应头所用的时间,由执行检测的 Cloudflare 数据中心测得。必要时其中还包括 DNS 查询和建立连接的时间,以及服务器的处理时间。每一跳都会在最终页面开始加载之前增加一次这样的往返,所以重定向链越短越好。重定向延迟检测会以瀑布图展示这些时间。
短链接隐藏了真实的目标地址,它既可能指向正规网站,也同样可能指向钓鱼页面、恶意软件下载或诈骗网站。这正是攻击者喜欢在邮件、短信和社交媒体帖子中使用短链接的原因。先还原链接,就能看到真正的最终 URL 以及它经过的每一个域名。
凡是通过标准 HTTP 状态码、meta refresh 或简单 JavaScript 进行重定向的短链接服务都可以,其中包括 Bitly(bit.ly)、TinyURL、X(t.co)、Rebrandly、Ow.ly、Is.gd 和 Buffer(buff.ly)等主流服务,以及品牌自有短域名;经过多个短链接服务的链接也会一路跟踪到底。在重定向之前显示广告、警告或验证码(CAPTCHA)页面的短链接服务无法自动还原,重定向链会停在该页面上。
关于检测重定向和选择合适状态码的实用指南。
阅读约 12 分钟
用 TrueURL、curl 和浏览器开发者工具(DevTools)逐步检测 URL 重定向,读懂重定向链的每一跳,并修复重定向循环、过长的重定向链以及 301 与 302 混用等问题。
阅读全文阅读约 13 分钟
详解每个 3xx 状态码的含义:从是否永久、是否保留请求方法、缓存和 SEO 影响 4 个方面对比 301、302、303、307 和 308 跳转,并附 nginx、Apache 和 PHP 配置示例。
阅读全文