测试前的安全准备
只测试自己拥有或明确获授权的代理与目标。示例中的主机、端口和账号均为占位符。不要把真实密码写进工单、截图或共享脚本;在受控终端中通过环境变量或交互式方式提供。
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。外部文档可能更新,操作前请核对来源页面当前版本。