
qq:800819103
在线客服,实时响应
qq群
在线客服,实时响应
客服电话
400-998-9776转3socks代理分为socks4代理和 socks5代理。socks4支持TCP(事实仅支持TCP),无需用户名、密码验证;socks5支持TCP和UDP,根据代理服务器设置是否需要用户名、密码认证。TCP和UDP代理工作原理产不多,UDP代理网上多的是,百度一下即可。这里只讲TCP代理工作原理。
socks代理工作原理大致如下:
1.[需要代理方]向服务器发出请求信息;
2.[代理方]应答;
3.[需要代理方]接到应答后发送向[代理方]发送目的ip和端口;
4.[代理方]与目的连接;
5.[代理方]将[需要代理方]发出的信息传到目的方,将目的方发出的信息传到[需要代理方];
6.代理完成。
下面对socks4和socks5的代理工作原理流程分别详细说明,并给出示例代码。
socks4的TCP代理工作流程:
1.我们首先还是连接服务器,然后发送数据给服务器。由于是无用户密码验证,我们需要发送9个字节的数据,展开写为 04 01 + 目标端口(2字节) + 目标IP(4字节) + 00,其中目标端口和目标IP就是我们真正要连接的服务器端口和服务器地址;
2.代理服务器返回8字节的数据,我们只要判断第二字节是否为90即可,若是90连接成功,否则失败.剩下的操作和不存在代理服务器一样,可直接用发送\接受数据。
socks5的TCP代理工作流程:
1.向服务器的代理端口建立tcp连接。一般为1080;
2.向服务器发送 05 02 00 02(此为16进制码,以下同),让代理服务器选择认证方式 ;
05
02 这里确认2种认证方式 无需认证和需要认证,只需要验证一种方式,可以直接发送05 01 00查询服务器是否支持无认证代理方式;
00 不需要认证;
02 需要认证;
3.如果接到 05 00 则是可以代理或则05 02需要认证,这里只需要判断第二字节就行;
如果需要认证,需要向服务器发送01 用户名长度(2字节)用户名 密码长度(2字节)密码,然后接收服务器返回数据,如果第二字节为00,则认证通过,否则无法认证,则连接失败;
4.发送 05 01 00 01 + 目的地址(4字节)+ 目的端口(2字节),目的地址和端口都是16进制码(不是字符串)。
例202.103.190.27 - 7201
则发送的信息为:05 01 00 01 CA 67 BE 1B 1C 21
(CA=202 67=103 BE=190 1B=27 1C21=7201)
5.接收代理服务器返回的数据,我们只要判断第二字节是否为00即表示代理连接完成;
6.以后操作和直接与目的方进行TCP连接相同。