自从研究如何使用假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
("http://www.020114.org/timeacaa.asp");
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测试通过