让程序A通过一个指定的代理服务器B去访问一个指定的网页C,在网页C那边如果想看客户端ip,只能显示出代理服务器B的ip,根本查不到程序A的ip。请问这样的程序是否要用socket5代理来写?我不是很懂,请大虾指点一二,在线等!!!!

解决方案 »

  1.   

    谁有这方面源码,http代理和socket5代理,全部分呈上,不够再加!
      

  2.   

    We   can   find   details   about   Proxy   Authentication   and   Sever   Authentication   methed   in   MSDN.
    Just   search   for   the   keyword   "INTERNET_OPTION_USERNAME".
    Here   I   give   a   very   simple   example.   It   works   in   my   project.
    CString   GeHttptFile(const   char   *url)
    {
    CString   szContent;
    char   strProxyList[MAX_PATH],   strUsername[64],   strPassword[64];
    //in   this   case   "proxya"   is   the   proxy   server   name,   "8080"   is   its   port
    strcpy(strProxyList,   "proxya:8080");
    strcpy(strUsername,   "myusername");
    strcpy(strPassword,   "mypassword");
    DWORD   dwServiceType   =   AFX_INET_SERVICE_HTTP;
    CString   szServer,   szObject;
    INTERNET_PORT   nPort;
    AfxParseURL(url,   dwServiceType,   szServer,   szObject,   nPort);
    CInternetSession   mysession;
    CHttpConnection*   pConnection;
    CHttpFile*   pHttpFile;
    pConnection   =   mysession.GetHttpConnection(szServer,
    INTERNET_FLAG_KEEP_CONNECTION,
    INTERNET_INVALID_PORT_NUMBER,
    NULL,   NULL);
    pHttpFile   =   pConnection->OpenRequest("GET",   szObject,
      NULL,   0,   NULL,   NULL,
      INTERNET_FLAG_KEEP_CONNECTION);
    //here   for   proxy
    INTERNET_PROXY_INFO   proxyinfo;
    proxyinfo.dwAccessType   =   INTERNET_OPEN_TYPE_PROXY;
    proxyinfo.lpszProxy   =   strProxyList;
    proxyinfo.lpszProxyBypass   =   NULL;
    mysession.SetOption(INTERNET_OPTION_PROXY,   (LPVOID)&proxyinfo,   sizeof(INTERNET_PROXY_INFO));
    pHttpFile->SetOption(INTERNET_OPTION_PROXY_USERNAME,   strUsername,   strlen(strUsername)+1);
    pHttpFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD,   strPassword,   strlen(strPassword)+1);pHttpFile->SendRequest(NULL);
    DWORD   nFileSize   =   pHttpFile->GetLength();
    LPSTR   rbuf   =   szContent.GetBuffer(nFileSize);
    UINT   uBytesRead   =   pHttpFile->Read(rbuf,   nFileSize);
    szContent.ReleaseBuffer();
    pHttpFile->Close();
    delete   pHttpFile;
    pConnection->Close();
    delete   pConnection;
    mysession.Close();
    return   szContent;
    }