代理工具

检查 HTTP、HTTPS 或 SOCKS5 代理连通性

需要后端服务代理信息会发送至本站服务端,每个 IP 每日限 500 次。
正在加载工具…

关于 批量代理可用性检测

代理批量检查会接收最多 100 个 HTTP、HTTPS 或 SOCKS5 代理,逐个经由它们连接你指定的目标 URL,并报告每个阶段发生了什么:代理是否接受了 TCP 连接、认证是否通过、隧道是否建立、TLS 是否校验通过,以及目标返回了什么状态码。可用与不可用的条目可以分别复制成两份列表。

端口上有应答的代理,不等于能用的代理。从第一个报文到拿回可用响应之间,有五六件彼此独立、都可能出错的事,而从外面看它们几乎一模一样:连接一直挂着、密码不对、服务端并不支持你以为的握手、代理解析不了目标域名、目标拒绝了这个出口地址。手动逐个试,只会把这些压缩成「能用 / 不能用」,完全看不出是凭据过期、供应商挂了,还是目的地屏蔽了这段地址。检查停在哪个阶段,是结果里最有价值的字段。

如何使用这个开发者工具

  1. 每行粘贴一个代理。带协议头的 URL 形式(http://user:pass@host:port、socks5://host:port)和冒号分隔形式(host:port:user:pass)都接受,完全相同的条目会去重。
  2. 把测试目标设为你有权访问、且返回内容短小可预期的地址。trace 或回显 IP 的端点最合适,因为它还能显示请求是从哪个出口到达的。
  3. 开始批量检查。同时只跑 5 条,既让结果有序呈现,也避免对代理造成冲击。
  4. 先读每一行的摘要 —— 已连接、认证状态、HTTP 状态码 —— 只对失败的行展开详情。
  5. 在详情里直奔失败阶段和失败跳点:这两个字段指明该修哪一层,下面的详情是上游自己给出的说明。
  6. 把成功列表复制进配置,把失败列表留着稍后重试,因为代理可用性经常只是暂时性的状态。

实例:三个代理,三种结局

一份从供应商后台复制下来的典型列表。一条可用、一条凭据已过期、一条根本没有监听 —— 每种失败都会指出它走到了哪个阶段。

代理列表
http://demo:s3cret@203.0.113.9:8080
socks5://198.51.100.20:1080
192.0.2.77:3128:demo:s3cret
检测结果
203.0.113.9:8080 — 成功
  已连接 · 认证成功 · HTTP 200
  代理协议      http_connect
  目标地址      https://example.com
  响应耗时      412 ms
  目标 IP       203.0.113.9 · IPv4
  TCP 已连接    是    隧道已建立   是    TLS 已验证   是

198.51.100.20:1080 — 成功
  已连接 · 无需认证 · HTTP 200
  代理协议      socks5
  响应耗时      780 ms

192.0.2.77:3128 — 失败
  失败代码      PROXY_CHECK_FAILED
  失败阶段      代理认证
  失败跳点      192.0.2.77:3128
  详情          proxy returned 407 Proxy Authentication Required

第三条才是最有意思的。TCP 已经连上、代理也作出了应答,说明主机和端口都对、服务也活着 —— 错的只是凭据,或者凭据已过期。如果它是在首跳 TCP 阶段失败,要检查的就变成主机和端口了。表面症状一样,修法完全不同。

失败阶段及其指向的问题

先读阶段再读错误信息,能把一份「都是死代理」的列表,变成一份具体且可修的问题清单。

阶段当时在做什么在这里失败意味着什么
validation解析你粘贴的那一行地址根本没离开工具:协议写错、缺端口,或有密码却没有用户名。没有联系过任何主机。
first_hop_dns解析代理自身的主机名代理写成了解析不出来的域名。请改用字面地址或修好解析记录 —— 代理本身还没被接触到。
first_hop_tcp向代理发起 TCP 连接端口上没有监听、防火墙丢弃了连接,或端口写错了。当供应商按客户端 IP 白名单授权、而我们的地址不在白名单上时,看到的也是这一步。
proxy_auth向代理进行认证服务活着并且拒绝了凭据 —— HTTP 407,或 SOCKS5 认证被拒。主机和端口没问题,用户名或密码有问题。
proxy_chain在多跳链路中逐跳协商中间某一跳失败了。失败跳点字段会指出是哪一跳,可以把它单独拎出来测。
target_connect经由代理抵达目标代理接受了你,却到不了目的地:解析不了目标域名、目标端口被封,或代理出口侧有目的地过滤策略。
request发送请求并读取响应隧道是通的,与目标的交互失败了 —— TLS 问题、响应被截断,或目标主动断开了连接。

常见问题排查

代理在你浏览器里能用,这里却在首跳 TCP 阶段失败。

成因 多数商用代理按客户端 IP 授权。你的机器在供应商白名单里,本站服务器不在,于是连接在进入认证之前就被拒绝了。

解决办法 测试期间把该代理改成用户名密码认证,或者从白名单内的机器上测。按 IP 授权的代理,本质上无法由远端服务代为检查。

整份列表全部卡在 validation 阶段。

成因 列表格式解析器不认识 —— 从 JSON 里复制出来带着引号和尾随逗号、使用了不支持的 socks4 之类协议,或四个冒号字段的顺序不符合预期。

解决办法 先把列表规范化。代理格式化工具可以在常见排列之间互转;支持的协议是 http、https、socks5 和 socks5h,冒号形式要求写成 host:port:user:pass。

代理连上并通过了认证,目标却返回 403。

成因 目的地在屏蔽这个代理的出口地址。机房地址段和已知代理池会被机器人防护打上很低的分,而屏蔽发生在连接成功之后。

解决办法 这是「代理没问题、目标不配合」的组合。换一个中立目标(例如回显 IP 的端点)重测,确认代理本身可用,再判断这类出口是否根本进不去那个目的地。

同一个代理,几次运行结果时好时坏。

成因 轮换型和住宅型代理池按连接重新分配上游出口,相邻两次检查走的可能是完全不同的路径。共享代理在高负载时还会排队。

解决办法 把列表跑两三遍,保留稳定通过的条目。对轮换池来说,单次通过只描述了某一时刻的某个出口,而不是整个池子。

批量还没跑完就停了。

成因 每个访问 IP 每个 UTC 自然日 500 次的额度已经用完,而这份额度由同一公网地址背后的所有人共用。

解决办法 把大列表分到几天跑,或先在本地筛掉明显已死的条目。复制失败列表,这样重试时只在仍需要答案的条目上消耗额度。

适合用这个工具的场景

  • 把刚拿到的代理列表,筛成真正能连上并通过认证的那一部分。
  • 判断一个失效代理是凭据不对、主机已死,还是被目的地屏蔽了。
  • 在把生产流量切过去之前,确认某个代理确实能访问特定目标。
  • 在供应商轮换或凭据变更之后,重新校验一份保存已久的列表。

应该换用别的工具的场景

  • 从世界上某个特定位置测试代理。地区代理出口检查会从你选定的地区发起同样的请求,并取多个样本。
  • 检查自己的浏览器是否绕过了代理。浏览器泄漏检查会在本地检视 WebRTC 候选和 DNS 解析器,这是服务端检查看不到的。
  • 测量网站可用性。站点检查会从多个地区直接请求 URL,链路中不经过代理。

隐私与数据处理

代理地址、其中包含的用户名与密码、目标 URL 以及检查参数,都会发送到本站服务器,因为连接必须由一台真正能访问该代理的机器发起。这些信息用于执行你请求的检查,不会被拼装成用户画像,但会经过服务器常规的请求处理与日志,而目标站点会看到请求从你代理的出口地址到达。请把你粘贴的每一条凭据都视为已向本服务披露:只测试你有权测试的代理,尽量使用可随时轮换的凭据,并注意结果详情会把你填入的用户名和密码显示出来,分享截图前请先打码。该检查额度为每个访问 IP 每个 UTC 自然日 500 次。

相关开发者工具

常见问题

端口开着就说明代理能用吗?

不能,阶段字段的存在正是为了纠正这个假设。一个端口可以先接受 TCP,然后拒绝你的凭据、握手失败、拒绝解析目的地,或者根本到不了目标。只有拿到目标状态码的完整请求,才能证明整条链路可用。

一次能测多少个代理?

单批最多 100 个不重复条目,以 5 路并发检查;额度为每个访问 IP 每个 UTC 自然日 500 次。完全相同的条目会在运行前去重,所以带重复项的列表实际消耗会低于行数。

检查通过是否证明这个代理是匿名的?

不能。它只证明连接完成了、目标作出了应答。匿名性取决于代理添加或剥离了哪些请求头、是否泄漏原始客户端地址、目的地能从 TLS 和时序中推断出什么,以及运营方记录了什么 —— 一次成功的请求无法确立其中任何一项。

我的代理凭据会被保存吗?

凭据会发送到本站服务器(连接就是在那里发起的),用于本次检查,不会被拼装成画像。它们确实会经过常规的请求处理与日志,而且结果详情会把它们回显在屏幕上。请使用可随时轮换的凭据,分享截图前先打码。

支持哪些代理格式?

带协议头的 URL 形式 —— http、https、socks5 或 socks5h —— 可选携带凭据;以及冒号分隔的 host:port:user:pass 形式。省略端口时,http 默认 80、https 默认 443、SOCKS5 默认 1080。

为什么检查显示的出口地址和供应商列出的不一样?

代理池会轮换,而且供应商公布的经常是入口地址而非出口地址。这里显示的是目标连接实际使用的地址。如果它长期落在你购买的地址范围之外,这件事值得和供应商确认。

可以测试任意代理和任意目标吗?

只能测试你有权使用的基础设施和目的地。不要测试不属于你的凭据,不要用它来绕过访问控制,并且要同时尊重代理供应商和目标站点的频率限制 —— 每一次检查都是对别人服务器的真实请求。