libcurl的header问题

zxl2004069 2012-06-10 10:29:53
我的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就是正确的值。求大虾告诉。
...全文
1378 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxl200406 2012-06-11
  • 打赏
  • 举报
回复
curl_easy_setopt(m_curl, CURLOPT_USERAGENT, "FireFox");

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧