
代理失败看起来常常相同:请求没有返回预期数据。但 407、429、超时与连接重置属于不同层级,处理方式也完全不同。把所有故障都交给“立即重试”,只会放大限流、延长队列并掩盖真实原因。本指南提供一套可复现的分层排查方法,适合网页抓取、价格监测、广告验证与市场研究等合规数据任务。
先确定故障发生在哪一层
把一次请求拆成客户端、代理认证、代理出口、目标站点和应用逻辑五层。每次测试固定目标、区域、会话策略与并发度,并记录时间戳、代理节点、HTTP 状态、响应头、连接阶段与总耗时。一次只改变一个变量,才能判断问题来自凭据、配额、网络还是目标站点。
407:先修认证,不要盲目轮换
407 表示代理要求认证。首先核对用户名、密码、端口和认证方式;确认凭据没有被 URL 编码破坏,也没有把目标站点的 Authorization 与代理的 Proxy-Authorization 混用。然后用单请求、低并发测试同一凭据。如果所有节点都返回 407,优先检查账户状态、套餐权限或 IP 白名单;如果只有部分节点失败,再隔离具体区域和协议。
429:尊重 Retry-After 并降低压力
429 是速率限制信号,可能由代理、网关或目标站点产生。先查看 Retry-After 与 Proxy-Status 等响应信息,再判断限制发生在哪一跳。不要立即换 IP 继续冲击。应降低并发、加入随机抖动的指数退避、控制每个域名的请求预算,并缓存不会频繁变化的数据。重试必须有上限;超过预算后进入延迟队列,而不是无限循环。
超时:按连接阶段切分
把超时分为 DNS、TCP 连接、TLS 握手、首字节和正文读取。连接超时通常指向路由、节点可用性或防火墙;首字节超时更可能与目标响应慢、出口拥塞或请求过重有关;读取超时则要检查大响应、带宽与流式处理。分别设置连接与读取超时,避免一个总超时掩盖阶段差异。
连接重置:检查协议与复用
连接重置可能来自代理、目标站点、中间设备或客户端连接池。先关闭连接复用做对照,再检查 TLS 版本、HTTP/2 或 HTTP/3 协商、空闲连接寿命与请求体大小。若重置集中在某一区域或节点,应从池中暂时隔离并进行健康检查;若只在高并发出现,应降低每连接请求数并缩短过长队列。
建立安全的重试矩阵
- 407:修正认证后再试,默认不自动轮换。
- 429:遵守 Retry-After,指数退避并降低并发。
- 连接超时:可在有限次数内切换健康节点。
- 读取超时:先评估响应大小和目标性能,再决定重试。
- 连接重置:短暂退避后换新连接,保留节点与协议日志。
- 4xx 业务错误:除非请求条件改变,否则不要重试。
最小诊断记录
每次失败至少记录请求 ID、UTC 时间、目标域名、代理区域、会话类型、状态码、错误阶段、总耗时、重试次数与最终结果。不要在日志中保存完整代理密码、Cookie、个人数据或目标站点敏感内容。对合法授权的数据任务,建立保留期限与访问控制。
发布前检查清单
- 单请求是否成功?
- 407 是否已排除凭据、白名单与套餐问题?
- 429 是否遵守等待时间并限制重试?
- 超时是否按 DNS、连接、TLS、首字节和读取拆分?
- 重置是否与协议、复用、区域或并发相关?
- 是否设置最大尝试次数、总时间预算和熔断?
- 日志是否避免记录凭据与个人数据?
FAQ
可以用无限轮换解决 429 吗?
不建议。429 是容量或政策信号,无限轮换可能放大压力并违反目标站点规则。优先降低速率、遵守等待时间并确认使用权限。
407 与目标站点的 401 有什么区别?
407 通常来自代理认证层,401 通常来自目标资源的身份验证层。分别检查 Proxy-Authenticate 与 WWW-Authenticate 等信息。
哪类错误适合自动重试?
短暂网络故障可在严格预算内重试;认证错误、权限错误和多数确定性 4xx 不应无条件重试。
合规、低速率且可审计的采集流程,比单纯增加 IP 数量更可靠。需要测试不同区域与会话策略时,可从 98IP 主页 了解可用的代理类型,并始终遵守目标站点条款、适用法律和数据最小化原则。
资料依据:RFC Editor,HTTP Semantics,2022 年 6 月;Additional HTTP Status Codes,2012 年 4 月;The Proxy-Status HTTP Response Header Field,2022 年 6 月。