重定向链检测器
输入一个 URL,看清它的完整旅程:途中经过的每一次重定向、每台服务器返回的状态码、发出的 Location 响应头,以及最终落地的那个页面。
追踪通过我们的服务器进行,它会请求链条中的每一个 URL,并且只读取响应头,从不读取页面本身。不存储任何内容。
各个重定向状态码分别代表什么
重定向就是一个带有 3xx 状态码和 Location 响应头的响应,该响应头指向下一个 URL。浏览器或爬虫随后会向那个地址发起第二次请求,并一直这样走下去,直到收到一个不是重定向的响应。每一步都是一次完整的往返,所以一条包含四次重定向的链条意味着页面出现在屏幕上之前已经发生了五次请求。
301 Moved Permanently 和 308 Permanent Redirect 都表示资源已经永久搬到了新地址。302 Found 和 307 Temporary Redirect 则表示这次搬迁是临时的,原地址预计还会回来。这个区别对搜索引擎很重要:永久重定向要求它用新 URL 取代旧 URL,而临时重定向则告诉它继续保留原来的 URL。对浏览器同样重要:301 响应可以被缓存并重复使用,无需再次询问服务器,而 302 除非响应中明确说明,否则不可缓存。
较新的这一对之所以存在,是因为客户端过去处理表单提交的方式。301 或 302 常常在下一跳被改成 GET,请求体也随之丢失。307 和 308 禁止这样做:请求方法和请求体必须原样重复。303 See Other 给出的是相反的指示,它总是以 GET 发出下一次请求,这正是 POST 之后你想要的效果,这样重新加载结果页就不会把表单再提交一次。
重定向状态码一览
每个 3xx 响应都带有 Location 响应头。状态码告诉客户端这次搬迁有多永久,以及请求方法能否在其中保留下来。
| 301 Moved Permanently | 永久。新 URL 取代旧 URL。默认可缓存,浏览器可能不再向服务器确认。客户端可能把下一次请求改成 GET。 |
| 302 Found | 临时。真正算数的仍是原来的 URL。除非响应明确说明,否则不缓存。客户端可能把下一次请求改成 GET。 |
| 303 See Other | 无论之前用的是什么方法,都用 GET 去请求下一个 URL。这是表单 POST 之后的常规做法,可避免重新加载时重复提交。 |
| 307 Temporary Redirect | 临时,与 302 一样,只是请求方法和请求体必须原样重复。 |
| 308 Permanent Redirect | 永久,与 301 一样,只是请求方法和请求体必须原样重复。 |
检测器会告诉你什么
- 按顺序列出每一跳,包含状态码、状态名称和实际请求的 URL
- 每次重定向返回的 Location 响应头,并解析为绝对 URL
- 每一跳耗时多久,以及整条链条总共耗时多久
- 最终 URL 及其状态码,也就是搜索引擎记录下来的那个地址
- 针对以下情况的警告:超过一跳的链条、循环、看起来是永久搬迁却用了临时状态码、明文 http 的跳转、主机变更,以及以错误结尾的链条
robots.txt 测试器
一眼看清 robots.txt 到底放行了哪些爬虫。针对 Googlebot、Bingbot、GPTBot 等测试任意 URL,并给出做出判定的那条规则。
测试你的 robots.txt →