ERR_TOO_MANY_REDIRECTS:诊断重定向链和重定向循环

什么是 ERR_TOO_MANY_REDIRECTS?

Scrapeless Agent Browser 为检查导航和渲染后的页面状态提供托管的浏览器会话。

ERR_TOO_MANY_REDIRECTS 表示浏览器在跟随重定向序列时,因为超过允许的重定向次数上限而停止。重复的 URL 循环是常见原因,但过长的重定向链也可能耗尽该上限。该错误与导航决策相关,因此应检查每一次跳转及其请求上下文,而不是先从 DNS 或代理连通性入手。

摘要

  • ERR_TOO_MANY_REDIRECTS 可能表示存在重复循环或过长的重定向序列。
  • 方案、主机名、路径和会话规则各自都可能引入相互竞争的导航决策。
  • 干净的浏览器会话只是一个对比案例;它并不能自动证明存储的 Cookie 是原因。
  • 采集器应保留重定向历史,并在接受数据之前验证最终资源。

为什么浏览器会停止继续跟随重定向

ERR_TOO_MANY_REDIRECTS 报告的是导航过程耗尽了其重定向配额。每一次跳转都会将客户端指向另一个位置,但这一系列跳转在浏览器限制范围内始终没有到达可接受的终点。具体的限制次数属于实现细节,因此在诊断时应依赖实际观察到的重定向序列,而不是记忆中的某个数字。

The HTTP 重定向和 Location 语义 解释服务器引导导航。响应可以在移动、登录或规范化规则的一部分中,将客户端发送到一个新的 URL。一个良好的重定向序列会有一个有意义的最终表示。循环会反复返回到某个状态,而不是完成那次导航。

重定向循环可能在两个 URL 之间来回切换,在多个主机之间循环,或者在同一规则重复时不断更改查询参数。应比较规则和状态,而不仅仅是字面上的 URL 是否相等。在每一步都有新的跟踪值的序列,仍然可能代表同一个尚未解决的应用程序决策。

浏览器也可以由于脚本或文档指令而进行导航。应在可用时捕获触发方,并将这些导航与 HTTP 响应重定向区分开来。如果已加载的页面会立即将用户重定向到其他位置,那么仅从服务器的响应重定向日志中,可能无法看出浏览器导航的完整过程。

使用其请求上下文追踪链路

重定向追踪在每一跳都需要包含请求的 URL、响应状态、下一个位置以及相关的会话上下文。要保留用于识别决策所需的协议、主机名、路径和非敏感参数。不要导出嵌入在重定向 URL 中的身份验证令牌。

从确切的出错入口开始。一个站点的主页可能正常工作,而某个旧文章路径却会循环;已登录的账户页面可能会循环,而公共页面却能加载。只测试主页会掩盖真正有问题的路由。将出错路径与附近的正常路径进行对比,以找出规则上的差异。

识别第一个重复状态或矛盾规则。一个组件可能强制使用某个主机名,而另一个组件则强制使用备用主机名。某条规则可能添加斜杠,而另一条规则则将其删除。登录页面可能会重定向到某个目标,而该目标会立即判断用户未经验证并将他们送回原处。

对于自有系统,记录每个响应是由哪个组件发出的。边缘服务、反向代理、应用中间件和身份提供方都可能贡献多跳。仅修复可见的最终 URL 可能会让最初的冲突规则继续生效。跟踪应显示出导致循环决策的所有者。

HTTPS 终止与规范 URL 冲突

当面向浏览器和面向源站的组件对请求的安全状态存在分歧时,就可能发生协议方案循环(scheme loop)。反向代理可能会终止 HTTPS,并通过不同的内部传输方式转发请求。如果应用程序误解了原始的协议方案,其重定向逻辑可能会与边缘层(edge)的策略发生冲突。

检查所拥有部署的已记录转发和信任配置。应用程序必须仅从受信任的中间方解释代理提供的请求上下文。接受来自开放互联网的任意转发请求头并不是合理的修正方案。修复应在负责 HTTPS 终止的边界处,对齐预期的协议方案。

规范主机名和路径规则也需要一个一致的目标。如果应用程序要求使用一个主机名,而边缘重定向要求使用另一个主机名,那么每个组件在本地看来都可能是合理的,但它们组合在一起的行为却会形成循环。记录预期的规范 URL,并将其规范化规则分配给一个明确的负责人。

HTTP 严格传输安全行为 可能会在请求到达服务器之前影响浏览器对方案的选择。在你的跟踪中,将这种浏览器策略与 HTTP 重定向响应明确区分开来。避免仅仅为了让表面症状消失而移除传输保护;应纠正部署中的方案决策。

Cookie 和登录状态可能改变重定向序列

会话状态会影响重定向决策。公共页面可以直接导航,而已验证身份的页面则会经过身份提供方、同意界面或账号路由器。如果会话 Cookie 无效或不可用,应用程序可能会不断让浏览器经历同样的登录决策流程。

将 HTTP Cookie 的作用域与状态规则 帮助解释为什么在一个主机或路径上可用的 cookie 可能不会在另一个主机或路径上发送。诊断相关 cookie 的传递和应用解释时,不要将其机密值复制到日志中。仅有 cookie 的存在并不能证明服务器接受了该会话。

干净配置文件或隐私浏览会话可以提供有用的对比证据。如果其重定向序列不同,请检查具体的状态差异:cookies、存储、扩展程序或认证上下文。隐私浏览也会改变会话环境,因此它本身并不能作为“cookie 损坏”的最终测试。

对于自有的登录流程,验证已配置的返回目的地以及标记认证完成的条件。一个登录成功页面如果重定向到使用不同会话域的路由,可能暴露作用域不匹配。身份提供方也可能返回到错误的协议或主机。在更改任何一个参数之前,先跟踪整个流程。

将重定向循环与其他页面失败进行比较

ERR_TOO_MANY_REDIRECTS 需要重定向链的证据。相邻的失败可能具有类似的用户可见结果,但原因不同。

观察含义下一步证据
重复的重定向状态规则或会话决策形成一个循环每一跳以及发出它的组件
很长但有限的链过多的中间导航决策入口 URL 和完整序列
通用最终页面导航结束时没有获得请求的身份预期资源和最终 URL
TLS 或连接失败传输在可用导航之前失败安全连接或网络证据

一个落在通用首页的页面,可能拥有有限的重定向链,却仍然无法满足你的内容要求。软 404 可以在没有请求资源的情况下成功返回。证书错误可以在获得可用的安全响应之前就阻止导航。保留具体的类别,而不是将每个失败的页面都视为重定向问题。

重定向状态本身并非固有错误。现有链接和登录流程往往依赖重定向。问题在于该序列是否到达其预期资源,并保持适当的请求含义。对于更改状态的应用请求,在允许自动导航之前,请确认客户端所支持的重定向行为如何处理方法和请求体。

网络数据采集中的重定向证据

采集器应保留原始 URL、重定向历史以及最终资源标识。如果在抽取不相关的最终页面时仍使用原始 URL 作为源键,将会污染数据集。被移动的文章需要其对应的新文章;仅因为首页可达,并不意味着它是等价的表示。

为可接受的目标设置显式采集规则。对于自有的登录流程,域跳转可能是预期的,但对于匿名公共文章采集则不合适。让这些规则与工作流保持特定对应。如果路径进入了采集器未配置处理的认证或同意状态,应记录该情况,而不是将过渡页提取为源内容。

The Scrapeless Agent Browser 会话环境 提供浏览器执行环境,用于检查动态导航。你的采集逻辑仍然负责判断最终页面是否可用。维护一致的会话有助于比较依赖状态的导航,但它无法修复你无法控制的网站上的互相矛盾的重定向规则。

在纠正自有的重定向冲突后,对比干净会话和此前受影响的会话。从原始入口 URL 开始检查重定向链,并确认预期的最终表示。仅测试已规范化的目标,可能会遗漏用户仍通过已保存链接进入的旧循环。

The Agent Browser 产品 在导航和渲染状态与采集相关时是有用的。 云代理路由模型 为识别可能参与导航路径的中间方提供了背景。根据实际工作流的会话需求,查看 当前 Scrapeless 套餐 。

让每条重定向规则收敛

解决 ERR_TOO_MANY_REDIRECTS 意味着让组合后的导航规则收敛到一个可用的终点。找到第一个冲突状态,识别出发出它的组件,并对齐协议、规范 URL 和会话决策。

对于第三方采集,结束条件是一个被接受的最终资源,并且保留了重定向链。当重定向链仍未解决时,要准确报告导航失败,并将其排除在成功内容记录之外。

构建更可观测的网络数据工作流

在受管的 Agent Browser 会话中检查导航,并保持重定向历史与最终内容标识相连。

立即注册即可获得 $5 in free credit — 无需信用卡.

领取你的 $5 额度 →

FAQ

问:ERR_TOO_MANY_REDIRECTS 是否总是意味着两个 URL 的循环?

ERR_TOO_MANY_REDIRECTS 并不总是意味着两个 URL 的循环。更长的循环或过度的重定向链也可能耗尽浏览器的允许范围。跟踪完整序列并检查重复决策,包括变化的参数。

问:清除 cookies 是否总能修复重定向循环?

清除 cookies 并不总能修复重定向循环。先比较干净会话并检查差异。如果所有会话都遵循相同的冲突协议或 URL 规则,则需要在发出重定向的组件处纠正部署。

问:HTTPS 终止会导致重定向循环吗?

当边缘和应用程序对原始请求的 scheme(协议)存在分歧时,HTTPS 终止可能会产生影响。请更正已记录的代理信任与 scheme 配置。在使重定向规则收敛的同时保持传输层防护。

问:抓取程序是否应接受最后一个可达的重定向页面?

只有当最终页面的身份和内容满足采集需求时,抓取程序才应接受该页面。主页、登录界面或同意拦截页可以是可达的,但可能并不代表所请求的资源。在拒绝该抓取结果的同时保留重定向序列。

参考文献