公共列表中可能有已经停止接受连接的端点。这是代理失败的常见原因,但并非唯一原因。协议选错、绕过设置、端口被封,或网站拒绝出口 IP,都可能产生同样的症状。

修改应用前先核对列表条目

重新复制 IP、端口和协议。端口漏一位数字或 HTTP/SOCKS 不匹配,就足以导致握手失败。不要根据端口 8080 或 1080 推断协议;除非服务确实提供了用户名,否则也不要自行添加。

对于 HTTP 端点,一次简短的 curl 请求有助于将测试与浏览器扩展、系统设置分开:

curl --proxy http://203.0.113.10:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/

将文档示例地址替换为你的代理条目。对于 SOCKS5 端点,使用实际端口和对应的 SOCKS URL 方案。

查看最先出现的失败

结果可能需要排查的位置
连接被拒绝端口已关闭,或某个设备主动拒绝了连接。
连接超时路由、过滤或服务未能在时限内完成连接建立。
代理握手响应不符合预期所选协议可能与服务不匹配。
407代理要求认证。
CONNECT 被拒绝代理可能限制该目标或端口。
网站返回 403 或 429请求已到达某个 HTTP 服务器,但被拒绝或限流。检查究竟是哪台服务器发出了响应。

TCP 连接成功只是第一步。如果该端口上的服务并非你选用的代理协议,请求可能紧接着就失败。

做两项对比

通过另一个使用相同协议的代理访问同一目标。若只有第一个端点在建立连接时失败,就能将问题缩小到该端点或路由。然后通过第一个代理访问另一个普通目标。若只有一个网站失败,应排查该目标特有的策略,不要直接判定整个代理失效。

允许直连时,直接请求也是有用的对比。明确指定绕过代理,避免继承的代理变量悄悄让所谓的直连测试仍走代理路由。

判断何时停止测试一个条目

若多次有时间限制的请求都在同一连接阶段失败,就从免费代理列表另选一个条目,不要把等待时间增加到几分钟。需要报告问题时,保存准确的错误信息。反复重连无法修复已关闭的端口,也无法恢复已移除的端点。

若每个条目都失败,先退一步检查。核对客户端配置、网络的出站规则,以及不使用代理能否访问目标。所有请求共有的问题,并不是丢弃整个列表的充分理由。

相关文章