SOCKS4 的 USERID 线路字段
解释 SOCKS4 的 USERID 线路字段,以及为何它的解释取决于服务器,而不是 SOCKS5 的用户名/密码认证。
SOCKS4 包含一个以零字节结尾的可变长度 USERID 字符串。服务器按其策略解释该标识符;协议不会在其后跟随 SOCKS5 用户名/密码子协商。
向文档地址 203.0.113.8 的 443 端口发起、USERID 为空的 SOCKS4 CONNECT 请求是:
04 01 01 bb cb 00 71 08 00
第九个字节 0x00 终止该空字段。它不是字符 0(其 ASCII 值为 0x30)。省略它会使 USERID 不完整。
服务器期望什么
当服务不要求标识符时,空标识符可能是合适的。如果服务要求特定标识符或其他访问机制,请遵循其文档化策略。所提供的名称只有在服务器验证它时才确立身份。
SOCKS4a 扩展了目标主机名的处理;它并不增加 SOCKS5 认证。需要 SOCKS5 账户的服务需要兼容的客户端和方法。把密码放进 SOCKS4 USERID 不能替代该交换,还可能泄露无关的凭据。
遇到拒绝时,请分别检查 SOCKS 版本、请求的目标和用户策略。