客户端多级连接socket5代理服务器问题求解

imbruter 2007-11-30 06:07:45
我在本地机器上开了一个测试用SOCKET5代理服务器1号,不需要身份验证;
另外还有个SOCKET5代理服务器2号在另外一台机器上,需要身份验证;
然后客户端连接1号代理服务器,再通过1号代理服务器连接2号代理服务器,请问各位高人,1号连接2号的过程怎么实现?
目前的情况是现在连接1号代理的时候用的是CONNECT命令方式,结构如下:
SOCKS5COMMANDREQUEST commandrequest;
memset(&commandrequest,0,sizeof(commandrequest));
commandrequest.ver = 5;
commandrequest.cmd = 1; //connect
commandrequest.rsv = 0;
commandrequest.type = 1;
commandrequest.addr = inet_addr(“2号代理IP”);
commandrequest.port = htons(atol(“2号代理PORT”));
g_Client.SendPacket((char*)&commandrequest,sizeof(commandrequest));
收到回应的结果应该是CONNECT成功,但是再向2号代理发送认证请求的时候就收不到任何数据了,代码如下:
SOCKS5SELECTREQEST selectRequest;
memset(&selectRequest,0,sizeof(SOCKS5SELECTREQEST));
selectRequest.ver = 5;
selectRequest.nmethods = 2;
selectRequest.methods[0] = 0;
selectRequest.methods[1] = 2;
g_Client.SendPacket((char*)&selectRequest,sizeof(selectRequest));
理论上应该收到2号代理的回应吧,但是没有收到任何数据。请问各位高人这是为什么?
...全文
494 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
imbruter 2007-12-10
  • 打赏
  • 举报
回复
CCPROXY不能设成需要验证的吧,我是随便找个网上有验证的代理测试的
WinEggDrop 2007-12-10
  • 打赏
  • 举报
回复
自己下载个ccproxy看看能不能设置吧
WinEggDrop 2007-12-07
  • 打赏
  • 举报
回复
你那些代理服务器软件,是叫什么名字的,我在ccproxy中测试,不会出现这样问题.
imbruter 2007-12-05
  • 打赏
  • 举报
回复
回复WinEggDrop:
每一步都会有返回值的.
1.连接上1号socks5,并匿名登陆成功
2.发送数据到1号Socks5,让1号Socks5连接2号Socks5
3.连接上2号Socks5后,发送协商数据"\x5\x1\x2"进行协商,如果得到返回值为"\x5\x2",证明2号Socks5支持User/Pass模式验证.
4.通过1号socks5,向2号Socks5发送验证数据(用户名,密码),验证数据格式请查看RFC相关资料
5.如果2号Socks5验证用户名和密码为正确,会发送回"\x5\x0";如果用户名和密码不正确,会发送回"\x5\x1".
6.如果第5步验证帐号和密码成功,那么客户端是成功串联上1号socks5和2号Socks5

我的问题就是在您说的第三步:
3.连接上2号Socks5后,发送协商数据"\x5\x1\x2"进行协商,
【这时候没有得到返回值!!!就是这里不知道为什么收不到返回值】
如果得到返回值为"\x5\x2",证明2号Socks5支持User/Pass模式验证.
WinEggDrop 2007-12-04
  • 打赏
  • 举报
回复
每一步都会有返回值的.
1.连接上1号socks5,并匿名登陆成功
2.发送数据到1号Socks5,让1号Socks5连接2号Socks5
3.连接上2号Socks5后,发送协商数据"\x5\x1\x2"进行协商,如果得到返回值为"\x5\x2",证明2号Socks5支持User/Pass模式验证.
4.通过1号socks5,向2号Socks5发送验证数据(用户名,密码),验证数据格式请查看RFC相关资料
5.如果2号Socks5验证用户名和密码为正确,会发送回"\x5\x0";如果用户名和密码不正确,会发送回"\x5\x1".
6.如果第5步验证帐号和密码成功,那么客户端是成功串联上1号socks5和2号Socks5
WinEggDrop 2007-12-03
  • 打赏
  • 举报
回复
第三步发送协商以及验证数据,自己要熟悉socks5的验证,看下socks5的RFC吧.
WinEggDrop 2007-12-03
  • 打赏
  • 举报
回复
1号socks5连接2号Socks5服务器,是本身内在功能决定,也就是说,只有你装的那个socks5服务器程序支持这样串联,才能实现.如果socks5服务器程序不支持这种串联功能,你自己也可以在客户端中实现.实现过程:
1.连接上1号
2.通过1号,连接上2号
3.发送协商数据,以及验证数据
imbruter 2007-12-03
  • 打赏
  • 举报
回复
谢谢WinEggDrop的回答,我看过RFC了,我觉得理论上应该就是照你说的流程做的,但是
在第三步发送协商以后没有收到回应呢,就是不知道为什么(这是在通过1号连接上2号的情况下,直接连接1号的协商过程都通过了没有问题的)
imbruter 2007-11-30
  • 打赏
  • 举报
回复
我想要实现的过程就是通过一个SOCKET5代理服务器连接另一个SOCKET5代理服务器,都需要验证

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧