自從研究如何使用假IP刷新流量之后,就想著如何在客戶端連接代理服務器,通過代理服務器來訪問目標主機,從而達到變換IP刷新網站流量的目的.剛才搜索了下,基本上都是用VC來開發代理服務器,我大致看了一下,起始他是做了一個數據轉發的功能,客戶端請求代理服務器,代理服務器截獲數據,分析主機和端口,然后向目的主機請求,接受目的主機的相應,然后轉發數據給客戶端.不過他全部是利用了比較底層的socket通信,這里不是我們研究的范圍.今天說的是如何在已有的HTTP類中設置參數,從而達到連接代理服務器訪問目的主機的目的.主要是這個類
CInternetSession(
LPCTSTR pstrAgent = NULL,//名字,可以自己定義
DWORD_PTR dwContext = 1,//默認
DWORD dwAccessType = PRE_CONFIG_INTERNET_ACCESS,//這里就要修改了,呵呵
LPCTSTR pstrProxyName = NULL,//根據type的不同而不同
LPCTSTR pstrProxyBypass = NULL,//代理是否需要口令
DWORD dwFlags = 0 //默認
);
dwAccessType這里我們利用INTERNET_OPEN_TYPE_PROXY??,然后設置pstrProxyName為
61.129.102.207:8080,前面是代理服務器的IP,后門是端口,中間用:隔開,這樣連接
就支持了代理,我在網上還查到一種用代理的方式,不過他的那個是全局的,順便也貼下
INTERNET_PROXY_INFO ipi;
ipi.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
ipi.lpszProxy = _T("hogehoge.proxy.com:8080");
ipi.lpszProxyBypass = NULL;
HRESULT hr = ::UrlMkSetSessionOption(INTERNET_OPTION_PROXY,
(void *)&ipi, sizeof(ipi), 0);
這里就不作說明了,下面是我的一個測試代碼
?CHttpFile* myhttp=NULL;
?CString temp,total;
?CInternetSession *mysession=new CInternetSession
("wangke",1,INTERNET_OPEN_TYPE_PROXY,_T("61.129.102.208:8080"),NULL,0);
?try{
??myhttp=(CHttpFile*)mysession->OpenURL
("??while(myhttp->ReadString(temp))
???total+=temp;
??myhttp->Close();
??mysession->Close();
??delete myhttp;
??delete mysession;
??GetDlgItem(IDC_EDIT1)->SetWindowText(total);
??total.Empty();
?}
?catch(CInternetException &e)
?{
??char errs[MAX_PATH]={0};
??e.GetErrorMessage(errs,MAX_PATH,NULL);
??AfxMessageBox(errs);
?}
在win2006+vc6.0測試通過