您的位置:新闻资讯 >文章内容
socks代理工作原理流程解析
来源:本站 作者:admin 时间:2019-06-12 16:17:48

socks代理分为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就是我们真正要连接的服务器端口和服务器地址;

 

socks代理工作原理流程解析


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连接相同。


相关文章内容简介
在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961