VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 3208|回复: 2

[求助] VC中关于http、socket5代理测试及使用的问题

[复制链接]
47_avatar_middle
online_vip 进军VC 发表于 2017-8-10 21:29:30 | 显示全部楼层 |阅读模式
20驿站币
本帖最后由 进军VC 于 2017-8-10 21:31 编辑

第一个问题: 如何测试http、socket5代理的有效性

假设现在有HTTP代理IP:192.168.1.1端口是80
SOCK5代理IP:192.168.1.2端口也是80 但是SOCK5有帐号密码验证 帐号:user 密码:passd

请问下 怎么MFC里怎么对这两个代理IP验证是否有效呢? 附上我自己的部分代码,一部分是从网上搬过来的、测试了下
代理IP地址端口密码无论写什么 都为有效 不知道问题出在哪里 求助!!

  1. CString content;
  2. bool TestProxyData(LPCTSTR Proxy,LPCTSTR ProxyPassd)  //代理IP检测函数
  3. {  
  4.     CString data;  
  5.     DWORD dwStatusCode;  
  6.     CInternetSession session("HttpClient");  
  7.     CHttpFile *pfile = NULL;   
  8.     INTERNET_PROXY_INFO proxyinfo;  
  9.     proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;  
  10.     proxyinfo.lpszProxy = Proxy;  
  11.     proxyinfo.lpszProxyBypass = ProxyPassd;  
  12.     session.SetOption(INTERNET_OPTION_PROXY,(LPVOID)&proxyinfo,sizeof(INTERNET_PROXY_INFO));  
  13.     session.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, 2000);           // 2秒的连接超时  
  14.     session.SetOption(INTERNET_OPTION_SEND_TIMEOUT, 1000);              // 1秒的发送超时  
  15.     session.SetOption(INTERNET_OPTION_RECEIVE_TIMEOUT, 7000);           // 7秒的接收超时  
  16.     session.SetOption(INTERNET_OPTION_DATA_SEND_TIMEOUT, 1000);         // 1秒的发送超时  
  17.     session.SetOption(INTERNET_OPTION_DATA_RECEIVE_TIMEOUT, 7000);      // 7秒的接收超时  
  18.     session.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 1);              // 1次重试  
  19.     try  
  20.     {  
  21.         pfile = (CHttpFile*)session.OpenURL("http://ip.dnsexit.com/", 1, INTERNET_FLAG_TRANSFER_ASCII|INTERNET_FLAG_RELOAD|INTERNET_FLAG_DONT_CACHE);  
  22.     }  
  23.     catch (CInternetException *e)  
  24.     {  
  25.         pfile = NULL;  
  26.         e->Delete();  
  27.         session.Close();  
  28.         return false;  
  29.     }  
  30.     pfile->QueryInfoStatusCode(dwStatusCode);  //问题好像出在这里 dwStatusCode 接收的值 一直是200 但是不知道解决这个
  31.     if(dwStatusCode == HTTP_STATUS_OK)   
  32.     {     
  33.         while (pfile->ReadString(data))   
  34.         {   
  35.             content += data;   
  36.         }  
  37.         pfile->Close();  
  38.         session.Close();  
  39.         return true;  
  40.     }  
  41.     else  
  42.     {  
  43.         return false;  
  44.     }  
  45. }  

  46. typedef struct tagProxyIP{
  47.     int num;//序号
  48.     CString ProxyIP;//代理IP地址
  49.     CString IPtype;//IP类型
  50.     int nPot;//代理端口
  51.     CString    IPUser;//代理IP帐号
  52.     CString IPpwd;//代理IP密码
  53.     CString    ISnormal;//是否有效
  54. }stcProxyIP;
  55. //代理IP列表所用的结构

  56. vector<stcProxyIP> g_vecIP; //用了个容器来保存代理IP

  57.     CString buf,buf1,buf2="";
  58.     for (int i=0;i<g_vecIP.size();i++) //循环遍历代理IP列表
  59.     {
  60.         buf.Format("%d",g_vecIP[i].nPot);
  61.         if (g_vecIP[i].IPUser=="")
  62.         {
  63.             buf1=g_vecIP[i].ProxyIP+":"+buf;
  64.         }else if (g_vecIP[i].IPUser!="")
  65.         {
  66.             buf1=g_vecIP[i].ProxyIP+":"+buf;
  67.             buf2=g_vecIP[i].IPUser+":"+g_vecIP[i].IPpwd;
  68.         }
  69.         if (TestProxyData(buf1,buf2))
  70.         {
  71.             g_vecIP[i].ISnormal="有效";
  72.         }else
  73.         {
  74.             g_vecIP[i].ISnormal="无效";
  75.         }

  76.     }
复制代码



第二个问题: 我写了个扫描域名的类 其中使用了几种不同的扫描方式 分别为WininetGet、WinHttpGet、SocketGet 下面的部分代码是简化的 概括了这几种扫描方式所使用的一些函数
请问下 这几种扫描方式刚怎么分别设置使用http 、socket5 代理呢?
  1. WininetGet
  2. {
  3.         InternetOpen
  4.         WinHttpSetTimeouts
  5.         InternetConnect
  6.         HttpOpenRequest
  7.         HttpSendRequest
  8.         InternetReadFile
  9.         HttpQueryInfo
  10.         InternetCloseHandle
  11. }

  12. WinHttpGet
  13. {
  14.         WinHttpOpen
  15.         WinHttpConnect
  16.         WinHttpOpenRequest
  17.         WinHttpSetOption
  18.         WinHttpSendRequest
  19.         WinHttpReceiveResponse
  20.         WinHttpQueryDataAvailable
  21.         WinHttpReadData
  22.         WinHttpQueryHeaders
  23.         WinHttpCloseHandle
  24. }
  25. SocketGet
  26. {
  27.         HOSTENT *host_entry = gethostbyname(GetHost(strHttpName));        GetHost
  28.         inet_ntoa
  29.         WSAStartup(MAKEWORD(2,2),&wsaData)
  30.         socket (AF_INET, SOCK_STREAM, 0)
  31.         sockaddr_in servAddr;
  32.         connect(sock,(const sockaddr*)&servAddr,sizeof(servAddr))
  33.         SendString(sock,strRequest);

  34.         fd_set fds;  
  35.         FD_ZERO(&fds);  
  36.         FD_SET(sock, &fds);  
  37.         struct timeval timeo;  
  38.         timeo.tv_sec = nTime;  
  39.         timeo.tv_usec = 1000;  
  40.         select(sock, &fds, NULL, NULL, &timeo);
  41.         FD_ISSET(sock, &fds)
  42.         recv(sock, p_buf, n_len, 0)
  43.         closesocket(sock);
  44.         ::WSACleanup();
  45. }
复制代码


最好有关键性的源码  先谢了!!





上一篇:老大们,有没有WM_KEYDOWN附加参数lParam的构造方面的资料?
下一篇:请问一下win32编程时函数前有双冒号和没有双冒号的区别?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2017-8-10 23:09:19 | 显示全部楼层
不管是什么代理,你都得用他的协议来测试,比如 HTTP 代理,你直接用 Winhttp 就可以,本身Winhttp就支持设置代理,给个 Winhttp 的对象设置上代理之后直接访问一个在线的网站,如果正确返回网页结果了,那代理肯定是好用的,如果没返回那肯定就说明代理是不好用的

SOCK5 的话就你得使用支持 SOCK5 客户端的协议代码,用这个代码或者类似 Winhttp 的库,作为 SOCK5 的客户端去连接他的 SOCK5 的服务器端,实际就是代理端,之后进行测试了,网上应该有这方面的代码的,得搜索下了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

75_avatar_middle
在线会员 besteast 发表于 2017-9-16 15:09:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-11-16 12:22

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表