代理报错别只换节点:读懂407、403与429

摘要:从代理认证、访问拒绝和请求限流入手,结合响应阶段判断HTTP错误该从哪里排查。

翻墙时遇到错误页面,很多人立刻更换节点。其实,已经收到HTTP响应,与连接始终超时,是两种不同线索。先记下状态码、发生时间和具体请求,再判断是谁回答了请求,有助于缩小范围。

407:检查代理入口的认证

407表示这次请求需要向代理提供有效认证,响应中应有说明认证方式的字段。这与目标网站要求登录的401不同。MDN说明可帮助区分两者。先检查应用填写的代理地址、端口和认证方式,确认是否误用了需要密码的入口。机场网站的登录密码也不一定就是本地代理密码,必须按各自说明填写。

访问HTTPS时还要留意报错阶段:HTTP代理可能先处理CONNECT隧道请求,再让浏览器与目标站建立加密连接。若407出现在建立隧道时,就不能据此断言目标网站拒绝了你。不要为消除报错把账号密码随意填给陌生代理。

403和429:阅读站点的说明

403表示服务器理解请求但拒绝执行;它本身不说明是地区限制、权限不足,还是某条访问规则。先看页面提示、访问资源与账号权限,再核对响应来自目标站还是中间服务。HTTP规范并没有把403定义成“节点被封”。

429表示一定时间内请求过多。响应可能带有Retry-After,提示等待多久;具体限流可以按账号、资源或其他维度计算,不能只凭数字认定出口IP有问题。限流规范说明了这些边界。此时停止连续刷新,按服务说明等待,比反复重试更合适。

502:沿着链路找上游

502说明充当网关或代理的服务器收到无效的上游响应,既可能来自本地代理,也可能来自网站前面的网关。502定义不能直接指出哪一跳坏了。记录错误页品牌、客户端日志和同一时刻其他公开页面的表现,有助于定位。

做对照时只改变一个条件,使用不含账号信息的公开页面,并核对预期内容。一次200响应只证明该请求得到相应结果;代理认证成功也不等于后续网页一定成功。分享排障截图时遮住Cookie、认证字段与订阅令牌,让保留下来的错误信息能够解释问题。