C语言代码中如何使用HTTP代理IP?
下面这段代码主要是围绕第一次接触HTTP代理IP的C新手写的(步骤注意事项很清楚)。
只需将下面样例代码中的HTTP代理API替换成你在后台生成的代理API链接,就可以运行了。
下面是一个样本代码,这只是一个基本的演示。具体代码要根据你的业务实际情况来写。
至于样本代码中的HTTP代理IP,我使用华一云的HTTP代理API在白嫖注册了10000个高隐身爬虫IP。有效期为一年,对于调试代码非常友好。
同样的HTTP代理API——在样本代码演示中——我免费获得10000个高机密IP。
打开代理API,获取里面的IP,用IP访问目标网站。其实这个过程只是在代码中实现,然后加入几个错误的判断,有助于代码稳定运行。(步骤注释很清楚)
//demo.cpp:定义控制台应用程序的入口点。包括标准传真。h ' # include '卷曲/卷曲。h ' # include # pragma注释(lib,' lib curl。lib’)静态size _ t write _ buff _ data(char * buffer,size_t size,size_t nitems,void * out stream){ memcpy(out stream,buffer,nitems * size);返回nitems * size}int GetUrlHTTP(char *url,char *buff,char * IP){ CURL * CURL;CURLcode rescurl=curl_easy_init().if (curl){curl_easy_setopt(curl,CURLOPT_PROXY,IP);//代理方式http://IP:portcurl _ easy _ set opt(curl,CURLOPT_WRITEDATA,(void *)buff);//获得访问结果curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write _ buff _ data);curl_easy_setopt(curl,CURLOPT_URL,URL);curl_easy_setopt(curl,CURLOPT_LOW_SPEED_TIME,10L);curl_easy_setopt(curl,CURLOPT_LOW_SPEED_LIMIT,50L);curl_easy_setopt(curl,CURLOPT_MAX_RECV_SPEED_LARGE,2000000 l);RES=curl _ easy _ perform(curl);curl _ easy _ clean up(卷曲);if(RES==CURLE _ OK){ return RES;}else {printf('错误代码:%d\n 'RES);MessageBox(空,文本('获取互联网协议(互联网协议)错误),文本('助手),MB _ icon信息| MB _ yes no);} }返回res}//不使用代理int GetUrl(char *url,char * buff){ CURL * CURL;CURLcode rescurl=curl_easy_init().if (curl){curl_easy_setopt(curl,CURLOPT_WRITEDATA,(void *)buff);curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write _ buff _ data);curl_easy_setopt(curl,CURLOPT_URL,URL);curl_easy_setopt(curl,CURLOPT_LOW_SPEED_TIME,10L);curl_easy_setopt(curl,CURLOPT_LOW_SPEED_LIMIT,50L);curl_easy_setopt(curl,CURLOPT_MAX_RECV_SPEED_LARGE,2000000 l);RES=curl _ easy _ perform(curl);curl _ easy _ clean up(卷曲);if(RES==CURLE _ OK){ return RES;}else {printf('错误代码:%d\n 'RES);MessageBox(空,文本('获取互联网协议(互联网协议)错误),文本('助手),MB _ icon信息| MB _ yes no);} }返回res}//将utf-8转为gbk格式void utf8ToGbk(char *utf8String,char * gbk string){ wchar _ t * unicode str=NULL;int nret len=0;nret len=MultiByteToWideChar(CP _ utf8,0,utf8String,-1,NULL,0);//求需求的宽字符数大小unicode str=(wchar _ t *)malloc(nRetLen * sizeof(wchar _ t));nret len=MultiByteToWideChar(CP _ utf8,0,utf8String,-1,unicodeStr,nret len);//将utf-8编码转换成采用双字节对字符进行编码编码nret len=WideCharToMultiByte(CP _ ACP,0,unicodeStr,-1,NULL,0,NULL,0);//求转换所需字节数nRetLen=WideCharToMultiByte(CP _ ACP,0,unicodeStr,-1,gbkString,nret len,NULL,0);//unicode编码转换成gbk编码免费(unicode字符串);} int main(){ char * buff=(char *)malloc(1024 * 1024);memset(buff,0,1024 * 1024);//代理api(这里我推荐使用www.9vps.com华益云的超文本传送协议代理API,注册就白嫖一万IP)GetUrl(' http://http。9个VP。com/getip。ASP?username=166 xxxx 6597 pwd=xxxx baa 59 ce 237 dff 65134984 b 9 c xxxx geshi=1葛粉=1葛粉fu=content type=1 getnum=20 set city=operate=all 'buff);printf('代理互联网协议(互联网协议)列表:\n%s 'buff);//输出//输入代理IPchar IP[100];printf(' \ n输入您的IP:“);scanf_s('%s 'ip,100);//使用代理互联网协议(互联网协议)访问网站memset(buff,0,1024 * 1024);GetUrlHTTP(' http://MIP。top 'buff、(char *)IP);utf8ToGbk(buff,buff);//将获取到的网页内容转为gbk格式printf('\nhttp结果:%s\n 'buff);//输出访问结果//不使用代理访问GetUrl(' http://MIP。顶’,buff);utf8ToGbk(buff,buff);//将获取到的网页内容转为gbk格式printf('不使用代理:%s \n 'buff);//输出访问结果睡眠(1000 * 1000);免费(buff);返回0;}