本文要点
- 先确认工具需要完整 URI 还是 host、port、user、pass 四段输入。
- socks5:// 通常由本机解析域名,socks5h:// 才明确要求代理端解析;是否支持取决于客户端。
- HTTP CONNECT 建立的是到目标主机的隧道,不等于代理自动解密 TLS,也不等于支持 UDP。
步骤一:看懂四段信息
代理交付信息通常会包含主机、端口、用户名和密码。主机是连接地址,端口是连接入口,用户名和密码用于认证。
有些工具要求一次性粘贴完整地址,有些工具要求分别填写四段。两种方式表达的是同一组连接信息,但填写位置不同。
步骤二:按工具要求选择完整 URI
当工具明确要求 URL 形式时,可以使用 socks5://user:pass@host:port。如果工具支持并且你需要让代理端解析目标域名,可使用 socks5h://user:pass@host:port;字母 h 是客户端约定,不是新的代理协议。
如果工具是分段输入,就不要把完整地址粘到“主机”输入框里。主机栏只填主机,端口栏只填端口,账号密码也要分别放到对应位置。
填写对照:完整 URI、四段字段与环境变量
工具要求完整 URI 时,填写它支持的 scheme://用户名:密码@主机:端口;工具要求四段字段时,主机只填域名或 IP,端口只填数字,账号和密码分别填写原始值。不要把完整 URI 放进主机栏,也不要把目标网站地址填成代理入口。
环境变量是否生效由客户端决定。以 curl 为例,https_proxy 用于访问 HTTPS 目标时选择代理,值仍可为 http://proxy.example:3128;http_proxy 只接受小写,而 HTTPS_PROXY 可以大写。NO_PROXY 中匹配的目标会绕过代理,检查时应同时查看客户端自身代理设置。
特殊字符与 IPv6:先确认字段如何解析
完整 URI 中的账号密码若含 @、#、% 等字符,应按工具要求对凭据部分做一次百分号编码。例如虚构密码 p@ss#1 在 URI 中写作 p%40ss%231;四段密码框通常填写原始 p@ss#1,除非工具明确要求编码。不要对整条地址编码,也不要把已经编码的值再编码一遍。
IPv6 地址本身包含冒号,放进 URI 的主机部分时需要方括号,例如 http://[2001:db8::10]:3128。此处域名、地址和账号均为文档示例,不可作为真实线路使用;客户端和代理服务仍须支持相应地址类型。
步骤三:确认 DNS 在哪里解析
RFC 1928 允许客户端在请求中提交 IPv4、域名或 IPv6,ATYP 字段表示目标地址类型;这说明协议可以携带域名,但不代表每个客户端默认都把 DNS 交给代理。
在允许测试的环境中,用同一目标域名分别选择 socks5:// 与 socks5h:// 请求,记录客户端版本和解析错误。curl 的两种写法分别使用本地解析和代理解析;代理端解析目标域名不表示电脑上所有应用都改用了远程 DNS。命令格式示例见文末《购买前代理验收清单》,真实凭据只放在本地受保护配置里。
步骤四:区分 HTTP CONNECT 与 SOCKS 边界
RFC 9110 规定,CONNECT 收到成功的 2xx 响应后,代理进入双向盲转发模式。它建立 TCP 隧道,不会自动解密隧道里的 TLS;客户端仍需校验目标站点的证书。
SOCKS 协议可表达 TCP CONNECT,也定义 UDP ASSOCIATE,但客户端、代理服务和目标工具必须同时支持。不要因为 URI 能保存就推断 UDP 一定可用,也不要把“协议支持”写成“当前套餐已开放”。
步骤五:把认证错误与目标站响应分开
user 和 pass 用于代理认证。HTTP 代理返回 407 时,先核对认证方式与凭据;目标站返回 401 或 403 时,说明请求已经进入另一层,不能靠反复改 URI 解决。完整分层方法见 《代理连接失败排查清单》(见文末资料来源)。
TLS 证书错误也不等于代理密码错误。先确认 CONNECT 或 SOCKS 握手是否成功,再检查目标域名、系统时间、证书链与客户端信任库。
步骤六:复制后做脱敏检查
复制后检查有没有多余空格、换行、中文符号或漏掉密码。用户名和密码里如果有特殊字符,优先使用系统生成的复制结果,不要手工改写。
截图、工单和团队文档保留协议、脱敏主机、端口与错误层级。交付字段应与客户端支持方式逐项对应;PuppyIP 用户可从页面右侧“访问 PuppyIP 官网”和“打开使用教程”核对产品及配置说明。
资料来源
常见问题
完整代理地址可以直接发给同事吗?
不建议随意转发。完整地址里可能包含用户名和密码,应该只交给需要使用该代理的人,并避免出现在公开截图里。
socks5 和 socks5h 的区别是什么?
socks5:// 通常先由本机解析域名,socks5h:// 明确要求支持该写法的客户端把域名交给代理解析。是否生效要用客户端实际请求验证。
HTTP CONNECT 会解密 HTTPS 内容吗?
不会。成功建立 CONNECT 隧道后代理只转发字节,TLS 仍在客户端与目标站之间建立;除非环境另有明确的受管检查机制。
URI 写成 socks5 就一定支持 UDP 吗?
不一定。协议定义 UDP ASSOCIATE,但客户端、代理服务与应用必须同时实现并开放,购买前应分别确认和测试。
为什么我复制后还是连不上?
先检查完整 URI 与四段输入是否放对位置,再区分 DNS、TCP、代理认证、隧道或 TLS 层;不要用连续更换出口代替定位。
设置了 HTTPS_PROXY,为什么请求还是直连?
先确认当前程序是否读取该变量、是否被程序内配置覆盖,以及目标是否命中 NO_PROXY。变量名描述适用的目标协议,不代表所有应用都会自动走代理;应在实际客户端中验证出口。