php - cURL 和网络浏览器之间的区别?

标签 php curl get

我正在尝试从以下网址检索网页:

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

当我将其粘贴到浏览器中时它可以工作,但是当我通过 cURL 运行它时,我收到一个包含以下错误的页面:“请求的 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;

对于为什么这样的请求可以在浏览器中工作而不是在 cURL 中工作有什么想法吗?

最佳答案

您的浏览器正在发送 cookie,而 cURL 则没有。使用浏览器工具或 Fidler 检查您发送到网站的 cookie - 您需要传递相同的信息。

关于php - cURL 和网络浏览器之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758105/

相关文章:

php - 在 Alpine Linux 中安装特定版本的 PHP

curl - 如何在 Dockerfile 中添加大的 HTTP 文件并将它们从图像层中排除?

java - 复杂的 RESTful GET 查询

php - 在 Laravel Eloquent 中使用子查询将过滤关系的计数列添加到选择中

php - 在 Symfony、MongoDB 中查找 ArrayCollection 中元素的平均值

安全模式的 php 替换

angularjs - jhipster oauth : How can i get the access_token via CURL

asp.net - 使用 get(而非 post)方法发布数据

url - 使用SSI获取URL和参数

php - json_encode 为非 null 值返回 null