测试前的安全准备

只测试自己拥有或明确获授权的代理与目标。示例中的主机、端口和账号均为占位符。不要把真实密码写进工单、截图或共享脚本;在受控终端中通过环境变量或交互式方式提供。

PROXY_USER='replace-me'
PROXY_PASS='replace-me'

HTTP 代理最小测试

curl --proxy http://proxy.example:3128 \
  --proxy-user "$PROXY_USER:$PROXY_PASS" \
  --connect-timeout 5 --max-time 15 \
  --output /dev/null --silent --show-error \
  --write-out 'code=%{http_code} connect=%{time_connect} total=%{time_total}\n' \
  https://example.com/

--connect-timeout 限制建立连接阶段,--max-time 限制整个命令运行时间。测试目标应稳定、合法,且最好由自己控制。

SOCKS5 与 socks5h

curl --proxy socks5h://proxy.example:1080 \
  --proxy-user "$PROXY_USER:$PROXY_PASS" \
  --connect-timeout 5 --max-time 15 \
  https://example.com/

curl 官方手册区分 socks5://socks5h://:后者把目标主机名交给代理端解析。两种模式都应测试,因为 DNS 位置不同会导致不同的成功率和隐私边界。

怎样判读结果

现象优先检查
无法连接代理主机、端口、防火墙、网络路径
HTTP 407代理认证方案与凭据
目标状态码异常目标服务、请求方法、权限与条款
连接成功但总耗时高DNS、代理转发、目标响应和重试
出口地址未变化应用是否真的使用代理、NO_PROXY 规则

保留可比较的测试记录

每次记录时间、测试位置、curl 版本、代理协议、目标、状态码、连接耗时和总耗时。不要只保存一次最快结果;至少观察连续多次测试的成功率和延迟分布。

-v 能帮助排障,但输出可能包含代理地址、请求头或认证相关信息。共享日志前必须脱敏。

常见问题

curl 的 socks5 和 socks5h 有什么区别?

主要区别是目标域名在哪里解析:socks5 通常在客户端解析,socks5h 交给代理端解析。

只看 HTTP 200 能证明代理质量好吗?

不能。200 只说明某次请求完成,还应统计成功率、连接耗时、总耗时、DNS 结果和多次测试分布。

为什么 curl 能用而浏览器不能用?

浏览器可能使用不同的系统代理、PAC、DNS、认证方式或扩展配置,需要对照两端的实际配置。

继续阅读

主要参考资料

资料最后复核:2026-09-05。外部文档可能更新,操作前请核对来源页面当前版本。