以前写过类似代码,后来电脑硬盘坏了现在又从新写过。

主要是为了模拟登陆或者注册账户使用。本代码是在VS2015 多字符集环境下写的。

一些代码是网上找的现成的自己加工修改而来,贡献出来大家参考。

CURL7.40下载地址:http://download.csdn.net/detail/kupig/9738173

bool CURL_GetFile(CString URL, CString FilePath); //下载指定URL文件
bool CURL_GetFile(CString URL, CString FilePath, CString RFURL); //下载指定URL文件 带referer
bool CURL_GetFile(CString URL, CString FilePath, CString RFURL, CString UA); //下载指定URL文件 带referer 带UACString CURL_Get(CString URL); //获取网页源码
CString CURL_Get(CString URL, CString RFURL); //获取网页源码 带referer
CString CURL_Get(CString URL, CString RFURL, CString UA); //获取网页源码 带referer 带UACString CURL_Post(CString URL, CString POSTDATA); //POST数据
CString CURL_Post(CString URL, CString POSTDATA, CString RFURL); //POST数据 带referer
CString CURL_Post(CString URL, CString POSTDATA, CString RFURL, CString UA); //POST数据 带referer 带UACString CURL_PostFile(CString URL, int i, CString istr, CString RFURL, CString UA); //FEURL UA 可以为NULL //I表示参数的总数(必须大于0),str的格式:参数1A|参数1B(文件路径)|参数2A|参数2B|参数3A|参数3B
#include "stdafx.h"
#include <string>
#include <iostream>
#include <assert.h>
#include "curl/curl.h"  #pragma comment(lib, "libcurl.lib")  size_t File_save(void *ptr, size_t size, size_t nmemb, void *stream)
{size_t sizes = size * nmemb;DWORD dwHasWritten;WriteFile((HANDLE)stream, ptr, sizes, &dwHasWritten, NULL);return sizes;
}static size_t call_wirte_func(void *ptr, size_t size, size_t nmemb, void *userdata)
{//参数userdata是存放数据的指针  其他三个获取内容std::string *version = (std::string*)userdata;version->append((char*)ptr, size * nmemb);return (size * nmemb);
}CString GetHost(CString URL)
{CString strURL_host = cstringlie(URL, "/", 3);//自定义函数得到第三列strURL_host = "Host:" + strURL_host;return strURL_host;
}int HttpGetFile(CString URL, HANDLE hFile, CString strURL, CString RFURL, CString UA)
{CURL *curl = curl_easy_init();int responseCode = -1;struct curl_slist *headers = NULL;CURLcode returnCode = CURLE_OK;if (curl) {curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//跳过服务器SSL验证,不使用CA证书  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);//验证服务器端发送的证书,默认是 2(高),1(中),0(禁用)  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);//设置301、302跳转跟随location  curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); //设置连接超时时间  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);//发送http请求头curl_easy_setopt(curl, CURLOPT_ENCODING, "gzip,deflate");//设置CURLOPT_ACCEPT_ENCODING (7.21.8之前为CURLOPT_ENCODING )//curl_easy_setopt(curl, CURLOPT_COOKIE, "name1=var1; name2=var2;");   //发送cookie值给服务器  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "./cookies.txt");//设置访问前得到的COOKIES 存放路径 导入curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "./cookies.txt"); //设置访问后得到的COOKIES 存放路径 导出//curl_easy_setopt(curl, CURLOPT_URL, CStrngToChar(URL));  //设置请求链接  curl_easy_setopt(curl, CURLOPT_URL, URL);  //设置请求链接  //curl_easy_setopt(curl, CURLOPT_USERAGENT, "User-Agent:Mozilla / 4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, File_save); //设置接收到数据之后的回调函数  curl_easy_setopt(curl, CURLOPT_WRITEDATA, hFile);      //保存到文件的HANDLE hFile  //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=jgood&address=hangzhou");//POSTcurl_easy_perform(curl);                                    //开始传输  curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); //获取返回信息  curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;}return responseCode;
}
bool CURL_GetFile(CString URL, CString FilePath) //下载指定URL文件
{HANDLE hFile = CreateFile(FilePath, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ /* | FILE_SHARE_DELETE */, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (INVALID_HANDLE_VALUE != hFile){CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;//my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;HttpGetFile(strURL, hFile, strURL, my_RFURL, my_UA);}else {//AfxMessageBox("文件创建失败!");return 0;}CloseHandle(hFile);hFile = NULL;return 1;
}
bool CURL_GetFile(CString URL, CString FilePath, CString RFURL) //下载指定URL文件 带referer
{HANDLE hFile = CreateFile(FilePath, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ /* | FILE_SHARE_DELETE */, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (INVALID_HANDLE_VALUE != hFile){CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;//my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;HttpGetFile(strURL, hFile, strURL, my_RFURL, my_UA);}else return 0;CloseHandle(hFile);hFile = NULL;return 1;
}
bool CURL_GetFile(CString URL, CString FilePath, CString RFURL, CString UA) //下载指定URL文件 带referer 带UA
{HANDLE hFile = CreateFile(FilePath, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ /* | FILE_SHARE_DELETE */, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);if (INVALID_HANDLE_VALUE != hFile){CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;//my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;HttpGetFile(strURL, hFile, strURL, my_RFURL, my_UA);}else {//AfxMessageBox("文件创建失败!");return 0;}CloseHandle(hFile);hFile = NULL;return 1;
}CString HttpGet(CString URL,CString RFURL, CString UA)
{CURLcode res;std::string OutData;CURL *curl = curl_easy_init();struct curl_slist *headers = NULL;
//  int responseCode = -1;//   struct curl_slist *headers = NULL;
//  CURLcode returnCode = CURLE_OK;if (curl) {headers = curl_slist_append(headers, GetHost(URL));headers = curl_slist_append(headers, "Connection:keep-alive");headers = curl_slist_append(headers, "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,* / *;q=0.8");headers = curl_slist_append(headers, UA);    //模拟浏览器headers = curl_slist_append(headers, "Content-type:application/x-www-form-urlencoded");headers = curl_slist_append(headers, RFURL);//headers = curl_slist_append(headers, "Accept-Encoding: none");//不接受gzip加密headers = curl_slist_append(headers, "Accept-Encoding: gzip,deflate");headers = curl_slist_append(headers, "Accept-Language:zh-CN,zh;q=0.8");curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//跳过服务器SSL验证,不使用CA证书  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);//验证服务器端发送的证书,默认是 2(高),1(中),0(禁用)  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);//设置301、302跳转跟随location                                  //curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);// 设置自动设置refer字段  //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); //设置连接超时时间  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);//发送http请求头curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip,deflate");//设置CURLOPT_ACCEPT_ENCODING (7.21.8之前为CURLOPT_ENCODING )//curl_easy_setopt(curl, CURLOPT_COOKIE, "name1=var1; name2=var2;");   //发送cookie值给服务器  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "./cookies.txt");//设置访问前得到的COOKIES 存放路径 导入curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "./cookies.txt"); //设置访问后得到的COOKIES 存放路径 导出//curl_easy_setopt(curl, CURLOPT_USERAGENT, "User-Agent:Mozilla / 4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";curl_easy_setopt(curl, CURLOPT_URL, URL);  //设置请求链接  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, call_wirte_func); //设置接收到数据之后的回调函数  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &OutData);      ////抓取头信息,回调函数    //curl_easy_setopt(m_pcurl, CURLOPT_HEADERFUNCTION, header_callback);//curl_easy_setopt(m_pcurl, CURLOPT_HEADERDATA, &m_headcontent);// curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);// 禁用掉alarm这种超时  //    curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);// 禁止重用TCP连接  //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=jgood&address=hangzhou");//POSTres = curl_easy_perform(curl); //开始传输  //curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); //获取返回信息  if (res != CURLE_OK){curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;return "res != CURLE_OK";}curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;}return OutData.c_str();}
CString CURL_Get(CString URL) //获取网页源码
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;//my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;str = HttpGet(strURL, my_RFURL, my_UA);return str;
}
CString CURL_Get(CString URL, CString RFURL) //获取网页源码 带referer
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;str = HttpGet(strURL, my_RFURL, my_UA);return str;
}
CString CURL_Get(CString URL, CString RFURL, CString UA) //获取网页源码 带referer 带UA
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;my_RFURL = "Referer:" + RFURL;my_UA = "User-Agent:" + UA;str = HttpGet(strURL, my_RFURL, my_UA);return str;
}CString HttpPost(CString URL, CString POSTDATA, CString RFURL, CString UA)
{CURLcode res;std::string OutData;CURL *curl = curl_easy_init();struct curl_slist *headers = NULL;//  int responseCode = -1;//   struct curl_slist *headers = NULL;//   CURLcode returnCode = CURLE_OK;if (curl) {headers = curl_slist_append(headers, GetHost(URL));headers = curl_slist_append(headers, "Connection:keep-alive");headers = curl_slist_append(headers, "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,* / *;q=0.8");headers = curl_slist_append(headers, UA);    //模拟浏览器headers = curl_slist_append(headers, "Content-type:application/x-www-form-urlencoded");headers = curl_slist_append(headers, RFURL);//headers = curl_slist_append(headers, "Accept-Encoding: none");//不接受gzip加密headers = curl_slist_append(headers, "Accept-Encoding: gzip,deflate");headers = curl_slist_append(headers, "Accept-Language:zh-CN,zh;q=0.8");curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//跳过服务器SSL验证,不使用CA证书  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);//验证服务器端发送的证书,默认是 2(高),1(中),0(禁用)  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);//设置301、302跳转跟随location                                  //curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);// 设置自动设置refer字段  //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); //设置连接超时时间  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);//发送http请求头curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip,deflate");//设置CURLOPT_ACCEPT_ENCODING (7.21.8之前为CURLOPT_ENCODING )//curl_easy_setopt(curl, CURLOPT_COOKIE, "name1=var1; name2=var2;");   //发送cookie值给服务器  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "./cookies.txt");//设置访问前得到的COOKIES 存放路径 导入curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "./cookies.txt"); //设置访问后得到的COOKIES 存放路径 导出//curl_easy_setopt(curl, CURLOPT_USERAGENT, "User-Agent:Mozilla / 4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";curl_easy_setopt(curl, CURLOPT_URL, URL);  //设置请求链接  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, call_wirte_func); //设置接收到数据之后的回调函数  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &OutData);      //curl_easy_setopt(curl, CURLOPT_POST, 1L);curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTDATA);//抓取头信息,回调函数    //curl_easy_setopt(m_pcurl, CURLOPT_HEADERFUNCTION, header_callback);//curl_easy_setopt(m_pcurl, CURLOPT_HEADERDATA, &m_headcontent);//   curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);// 禁用掉alarm这种超时  //    curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);// 禁止重用TCP连接  //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=jgood&address=hangzhou");//POSTres = curl_easy_perform(curl);                                    //开始传输  //       curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); //获取返回信息  if (res != CURLE_OK){curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;return "res != CURLE_OK";}curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;}return OutData.c_str();}
CString CURL_Post(CString URL,CString POSTDATA) //获取网页源码
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;//my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;//str = HttpPost(strURL, POSTDATA, my_RFURL, my_UA);str = HttpPost(URL, POSTDATA, my_RFURL, my_UA);return str;
}
CString CURL_Post(CString URL, CString POSTDATA, CString RFURL) //获取网页源码
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;my_RFURL = "Referer:" + RFURL;//my_UA = "User-Agent:" + UA;str = HttpPost(strURL, POSTDATA, my_RFURL, my_UA);return str;
}
CString CURL_Post(CString URL, CString POSTDATA, CString RFURL, CString UA) //获取网页源码
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL = "Referer:" + strURL;my_RFURL = "Referer:" + RFURL;my_UA = "User-Agent:" + UA;str = HttpPost(strURL, POSTDATA, my_RFURL, my_UA);return str;
}CString HttpPostFile(CString URL, int i,CString istr, CString RFURL, CString UA)//FEURL UA 可以为NULL //I表示参数的总数(必须大于0),str的格式:参数1A|参数1B(文件路径)|参数2A|参数2B|参数3A|参数3B
{CURLcode res;std::string OutData;CURL *curl = curl_easy_init();struct curl_slist *headers = NULL;struct curl_httppost *formpost = NULL;struct curl_httppost *lastptr = NULL;// Fill in the file upload fieldcurl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, cstringlie(istr, "|", 1),//"file"CURLFORM_FILE, cstringlie(istr, "|", 2),//"D:\\sign.txt"CURLFORM_END);for (int j=1 ;j<i;j++)//有几组参数就重复几次{// Fill in the filename fieldcurl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, cstringlie(istr, "|", j*2+1),//"filename"CURLFORM_COPYCONTENTS, cstringlie(istr, "|", j*2 + 2), //"sign.txt"CURLFORM_END);}// int responseCode = -1;//   struct curl_slist *headers = NULL;//   CURLcode returnCode = CURLE_OK;if (curl) {headers = curl_slist_append(headers, GetHost(URL));headers = curl_slist_append(headers, "Connection:keep-alive");headers = curl_slist_append(headers, "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,* / *;q=0.8");headers = curl_slist_append(headers, UA);    //模拟浏览器//   headers = curl_slist_append(headers, "Content-type:application/x-www-form-urlencoded");//POST文件不要设置这个链接类型multipart/form-data; boundary=---------------------------7e130916190778headers = curl_slist_append(headers, "Content-type:multipart/form-data");headers = curl_slist_append(headers, RFURL);//headers = curl_slist_append(headers, "Accept-Encoding: none");//不接受gzip加密headers = curl_slist_append(headers, "Accept-Encoding: gzip,deflate");headers = curl_slist_append(headers, "Accept-Language:zh-CN,zh;q=0.8");curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//跳过服务器SSL验证,不使用CA证书  curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);//验证服务器端发送的证书,默认是 2(高),1(中),0(禁用)  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);//设置301、302跳转跟随location                                   //curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1);// 设置自动设置refer字段  //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10); //设置连接超时时间  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);//发送http请求头curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip,deflate");//设置CURLOPT_ACCEPT_ENCODING (7.21.8之前为CURLOPT_ENCODING )//curl_easy_setopt(curl, CURLOPT_COOKIE, "name1=var1; name2=var2;");   //发送cookie值给服务器  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "./cookies.txt");//设置访问前得到的COOKIES 存放路径 导入curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "./cookies.txt"); //设置访问后得到的COOKIES 存放路径 导出//curl_easy_setopt(curl, CURLOPT_USERAGENT, "User-Agent:Mozilla / 4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";//curl_easy_setopt(curl, CURLOPT_HEADER, 0);curl_easy_setopt(curl, CURLOPT_URL, URL);  //设置请求链接  curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, call_wirte_func); //设置接收到数据之后的回调函数  curl_easy_setopt(curl, CURLOPT_WRITEDATA, &OutData);      ////抓取头信息,回调函数    //curl_easy_setopt(m_pcurl, CURLOPT_HEADERFUNCTION, header_callback);//curl_easy_setopt(m_pcurl, CURLOPT_HEADERDATA, &m_headcontent);//  curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);// 禁用掉alarm这种超时  //    curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1);// 禁止重用TCP连接  //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=jgood&address=hangzhou");//POSTres = curl_easy_perform(curl); //开始传输  //curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &responseCode); //获取返回信息
/*if (res != CURLE_OK){curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;return "res != CURLE_OK";}
*/curl_easy_cleanup(curl);curl_slist_free_all(headers);headers = NULL;}return OutData.c_str();}
CString CURL_PostFile(CString URL, int i, CString istr, CString RFURL, CString UA) //FEURL UA 可以为NULL //I表示参数的总数(必须大于0),str的格式:参数1A|参数1B(文件路径)|参数2A|参数2B|参数3A|参数3B
{CString str;CString my_UA = "User-Agent:Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 2Pac; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";CString  strURL;if (URL.Find("http://") < 0 && URL.Find("https://") < 0)strURL = "http://" + URL;elsestrURL = URL;CString my_RFURL;if (RFURL.GetLength() < 2)//如果referer为空即没有指定{my_RFURL = "Referer:" + strURL;}else{my_RFURL = "Referer:" + RFURL;}if (UA.GetLength() > 2)//如果UA不为空即指定新的UA{my_UA = "User-Agent:" + UA;}str = HttpPostFile(strURL, i, istr, my_RFURL, my_UA);return str;
}

CString cstringlie(CString Line, CString lie, int Count);//得到指定列

CString cstringlie(CString Line, CString lie, int Count)//得到指定列
{

int i = 0;
int i_pos = 0;
int pos = 0;
here_pos:
if (i < Count)
{
if (i != 0) { i_pos++; }
pos = i_pos;
i_pos = Line.Find(lie, i_pos);
if (i_pos < 0) { i_pos = Line.GetLength(); }
i++;
goto here_pos;
}
if (i == 1) { return Line.Mid(pos, i_pos); }
// cout<<"pos"<<pos<<"i_pos"<<i_pos<<endl;
return Line.Mid(pos, i_pos - pos);
}

LIBCURL上传文件, 下载文件,打开网页,POST数据,支持https等一系列函数方便各种模拟登陆注册账户相关推荐

  1. windows主机用scp命令向Linux服务器上传和下载文件

    windows主机用scp命令向Linux服务器上传和下载文件 文章目录: 一.scp介绍 二.scp上传和下载 1.上传 2.下载 三.scp的更多参数 一.scp介绍 scp是secure cop ...

  2. 从服务器上传和下载文件方法

    1. ssh 安装SSH Secure Shell Client客户端 下载链接 http://download.csdn.net/detail/jiandanjinxin/9755684 使用方法参 ...

  3. Linux--用SecureCRT来上传和下载文件

    转载自  Linux--用SecureCRT来上传和下载文件 SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能 ...

  4. java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法

    本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传 ...

  5. linux securefx 传输文件失败,解惑:如何使用SecureCRT上传和下载文件、SecureFX乱码问题...

    解惑:如何使用SecureCRT上传和下载文件.SecureFX乱码问题 一.前言 很多时候在windows平台上访问Linux系统的比较好用的工具之一就是SecureCRT了,下面介绍一下这个软件的 ...

  6. 使用PuTTY上传和下载文件

    使用PuTTY(C:\Program Files\PuTTY)上传或下载文件: 双击运行该psftp.exe,可使用open打开远程主机.cd改变远程目录.lcd改变本地目录.ls查看远程文件列表.p ...

  7. 使用putty连接并上传和下载文件到linux服务器

    目录 一.连接到linux 二.上传和下载文件 putty下载地址:https://putty.en.softonic.com/?ex=MOB-575.6 安装完后会看到如下的目录文件 一.连接到li ...

  8. Ganymed-ssh2实现scp上传和下载文件,以及执行shell命令

    使用Ganymed-ssh2执行远程机器上的Shell脚本,还可以使用SCP来上传和下载文件 严禁转载!!! pom依赖 <dependency><groupId>com.ai ...

  9. Python实现向s3共享存储上传和下载文件

    Python实现向s3共享存储上传和下载文件 https://www.cnblogs.com/liang545621/p/10298617.html 使用Python从S3上传和下载文件 https: ...

最新文章

  1. 消除图片在ie中缓存而无法更新的问题
  2. 做301定向跳转对网站优化有什么帮助?
  3. socket编程方法,概念
  4. java 连接sqlserver2005_JAVA用jdbc连接SQLServer2005
  5. GMQ稳定币为区块链资产在金融市场的进一步应用打开了一扇大门
  6. Qt文档阅读笔记-QLatin1String解析及文本段跨行赋值
  7. Thinkphp3.2 分页带中文参数报错
  8. 内核中dump_stack的实现原理(3) —— 内核函数printk的实现
  9. python中什么是按位取反_js中怎么理解按位取反?
  10. 基金一般拿多长时间合适?
  11. 基于ajax请求异常捕获
  12. 在 Mac 上的 Safari 浏览器中如何存储网页的一部分或整个网页?
  13. 你在直播上看不到的 Google IO
  14. 《离散数学》速成-练习题答案(含题目)
  15. js 打印去掉页眉页脚页码_js页面打印去除页眉页脚
  16. MP3参数,格式,术语有关一切内容详解
  17. java中的StringBuffer类
  18. linux下chm阅读器
  19. VOIP技术的专业性网站
  20. [转]页面回传与js调用服务器端事件

热门文章

  1. linux superblock位置,Linux下对superblock的理解
  2. html5游戏开发box2djs,基于HTML5的WebGL结合Box2DJS物理应用
  3. notion自建服务器,秒杀传统型笔记!《Notion》等 5 款工具全方位对比,模块化笔记究竟强在哪?...
  4. (AM3517)修改u-boot与Linux调试串口以及文件系统显示终端串口(瑞泰ICETEK-AM3517)
  5. canal下载 linux_Canal入门
  6. vsftpd配置笔记
  7. php开发勋章插件,BiliBili-直播间勋章增强
  8. 计算机音乐勋章的谱,鹿晗《勋章》简谱
  9. 宏信建发上市破发:募资15亿港元跌29% 公司市值103亿港元
  10. linux i3 桌面,i3 窗口管理器,使 Linux 更美好