最近,我开始在我的一个项目中使用libcurl.net作为HttpWebRequest和HttpWebResponse类的替代品。我选择使用libcurl.net而不是托管类的原因是,libcurl.net模仿了来自PHP的cURL的行为,而我正在移植来自PHP的一些代码。我试图使用内置的托管类,但是CookieContainer类没有从我试图从网站捕获cookie的网站中正确捕获所有的cookie。如果我能够找到正确捕获cookie的方法,我可能会返回到托管类。
我的PHP脚本在捕获cookies方面非常好,所以我使用libcurl.net将大部分libcurl.net功能移植到了libcurl.net项目中。我遇到的问题是,当我必须用CURLOPT_HTTPHEADER cURL选项发送多个请求头时,我必须使用Slist数据类型来传递多个标题,如下所示:
Slist headers = new Slist();
headers.Append("Content-Type: application/x-www-form-urlencoded");
headers.Append("X-Requested-With: XMLHttpRequest");
easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER, headers);有时,我不得不伪造AJAX请求,但它似乎没有传递X-Requested-With: XMLHttpRequest头与请求,因为我正在抓取的网站不会返回这些“假”AJAX请求的任何结果。如果我设置了CURLOPT_HTTPHEADER,我需要设置Content-Type头,还是总是默认为Content-Type: application/x-www-form-urlencoded
发布于 2013-11-14 14:00:08
结果,我正确地添加了多个标题。我只是创建了一个Slist对象,并使用CURLOPT_HTTPHEADER选项将头添加到请求中。通过这种方式,人们可以“伪造”AJAX请求或web浏览器发送的任何其他类型的请求。问题是我没有在请求中发送正确的帖子数据。
https://stackoverflow.com/questions/19908668
复制相似问题