虽然Socks5已经不是新技术,最近又有好多人来询问我如何使用Socks5代理来连接远端TCP。在这里我就顺便把之前的流程文件贴来啦。
1 使用TCP连接到Socks5代理服务器端口
2 发送5 2 0 2(4个字节,为Byte而非数字字符,下同)
3 接受到5 0(表示不需要密码,跳转到步骤6)或者5 2(需要密码验证)
4 发送1 UserNameLength(1字节) UserName(1-255字节) PasswordLength(1字节) Password(1-255字节)
5 接受到1 0表示成功,否则失败。
6 如果需要远程解析DNS,那么发送:5 1 0 3 DomainNameLength(1字节) DomainName(1-255字节) Port(2字节)
如果本地解析DNS得IP,那么发送:5 1 0 1 IP(4字节) Port(2字节)
7 可能得到反馈:只要打头是5 0则表示成功,否则表示失败。但是应该完整的清理此数据,它的格式是以下中的一种:
5 0 0 1 IP(4字节) Port(2字节)
5 0 0 3 DomainNameLength(1字节) DomainName(1-255字节) Port(2字节)
8 至此完成连接,然后你就可以当作标准的TCP连接来收发数据了,直至连接关闭。