卷曲和网络浏览器之间的区别是什么?(Difference between cURL and web

2019-10-16 18:03发布

我想从以下网址获得网页:

http://www.medicare.gov/find-a-doctor/provider-results.aspx?searchtype=OHP&specgrpids=922&loc=43615&pref=No&gender=Unknown&dist=25&lat=41.65603&lng=-83.66676

它的工作原理,当我将其粘贴到浏览器中,但是当我通过卷曲运行它,我收到一个网页,出现以下错误:“一个或多个请求的URL的查询字符串参数无效或有意外的值,请更正,然后重试”

它似乎并不有所作为,如果我提供了一个不同的userAgent或引用。 有一个重定向,所以我用CURLOPT_FOLLOWLOCATION。

这里是我的代码:

$ch = curl_init($page);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$html = curl_exec($ch);
curl_close($ch);
echo $html;

为什么这样的请求,将在浏览器,而不是与卷曲的工作有什么想法?

Answer 1:

您的浏览器发送的cookie是卷曲不是。 检查你使用的浏览器工具或菲德勒发送到该站点的cookie - 你需要传递相同的。



Answer 2:

问题是与饼干。 这种特殊的网站需要一个ASP.NET_SessionId的cookie,以响应设置。 我增加了以下我卷曲的要求:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIE, 'ASP.NET_SessionId=ho1pqwa0nb3ys3441alenm45; path=/; domain=www.medicare.gov');

我不知道是否有任何会话ID的工作,但它尝试了随机的,他们所有的工作。



文章来源: Difference between cURL and web browser?
标签: php curl get