libcurl的header问题
我的libcurl,访问http://www.163.com出现一个奇怪的问题
if(headers)
{
curl_easy_setopt(m_curl, CURLOPT_HTTPHEADER, headers);
}
if(urlStr.substr(0,5)=="https")
{
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(m_curl, CURLOPT_SSL_VERIFYHOST, 0L);
}
curl_easy_setopt(m_curl, CURLOPT_HTTPGET);
curl_easy_setopt(m_curl, CURLOPT_WRITEDATA, &m_curPage);
curl_easy_setopt(m_curl,CURLOPT_HEADERDATA, &m_header);
curl_easy_setopt(m_curl, CURLOPT_URL, urlStr.c_str());
curl_easy_setopt(m_curl, CURLOPT_HTTPHEADER, headers);
//curl_easy_setopt(m_curl, CURLOPT_COOKIEJAR,"cookie_open.txt");//设置cookies文件
curl_easy_setopt(m_curl, CURLOPT_COOKIEFILE,"cookies.txt"); // 指定cookie文件
curl_easy_setopt(m_curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // arg(http_version)
SysLog(false);
CURLcode res = curl_easy_perform(m_curl);
curl_easy_getinfo(m_curl, CURLINFO_RESPONSE_CODE, &http_code);
1、我查看了一下,状态码是502,我仔细看了一下html返回,服务器返回的html是手机163.com的代码
2、我后来修改了一个header值
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 Paros/3.2.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Proxy-Connection: keep-alive
加上了,然后访问,返回正常了。
问题:我如何做到访问www.163.com这类网站,要刻意去修改header。。我并不知道,他的header是什么,每次都要火狐看一眼,然后把header的内容copy下来,就OK了,当然不是每个网站都要修改header才正常访问
有没有什么参数,能自动识别网站需要的header参数,像浏览器,他在访问一个网站的时候,他就不知道header是什么,但是每次访问该网站的时候,header就是正确的值。求大虾告诉。