【问题标题】:php curl as normal user instead of like a botphp curl 作为普通用户而不是像机器人一样
【发布时间】:2011-10-31 12:45:27
【问题描述】:

我正在使用 php curl 获取页面。但是,许多网站似乎阻止了 curl,可能是由于它正在发送的标头/用户代理。任何人都有一个可以模拟普通浏览器的示例 curl 标头吗?

这是我当前使用的标题:

    $headers[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png, image/gif, image/x-bitmap, image/jpeg, image/pjpeg, *;q=0.5";
    $headers[] = "Cache-Control: max-age=0";
    $headers[] = "Connection: keep-alive";
    $headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $headers[] = "Accept-Language: en-us,en;q=0.5";
    $headers[] = "Pragma: ";
    $headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';

和用户代理:

'Mozilla/6.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';

【问题讨论】:

  • 看起来像一个合法的用户代理。也许他们使用 UA 标头以外的其他机制来阻止机器人
  • 如果你想假装普通用户浏览,不要使用 curl,而是使用 headless browser 支持 javascript 和一切。网站无法检测到这一点。

标签: php curl


【解决方案1】:

您确定您正确设置了 user_agent 吗?

curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/6.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); 

如果是这样,那么我建议您的查询可能存在其他问题,而不是用户代理过滤 - 您到底遇到了什么问题?

【讨论】:

    【解决方案2】:

    下载 fiddler 网络代理并验证您发送的内容是否与普通浏览器相同。当你在 PHP 中使用 fiddler 时,一定要设置:

    curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
    

    可能还涉及到您忽略的 cookie。

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-05
      • 2019-06-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多