【问题标题】:PHP cURL - how to emulate exactly same request like user?PHP cURL - 如何模拟与用户完全相同的请求?
【发布时间】:2016-01-24 16:40:25
【问题描述】:

我正在尝试制作网站抓取工具,但该网站的行为与通过浏览器的正常请求不同。

我怎样才能做出完美的 cURL 请求,网站不会过滤和阻止它?

如有任何帮助,将不胜感激。

$curl_handle = curl_init ("***");
$header = array();
$header[] = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0";
$header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$header[] = "Accept-Language: cs,en-US;q=0.7,en;q=0.3";
$header[] = "Accept-Encoding: utf-8";
$header[] = "Connection: keep-alive";
$header[] = "Host: ****";


curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0');
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);
curl_setopt ($curl_handle, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
curl_setopt ($curl_handle, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl_handle, CURLOPT_AUTOREFERER, true);

$output = curl_exec ($curl_handle);

这是我目前得到的,但它仍然被阻止。

【问题讨论】:

  • 您应该提供您现在正在使用的代码。
  • 我刚刚编辑了帖子,请随时提供帮助。
  • 网站运行情况如何,你的代码是什么,你想达到什么目的?
  • 当我通过浏览器请求页面时,响应是好的,但是当我通过 cURL 请求时,它会将我重定向到主页,所以我认为这有点阻塞我的刮刀。
  • 你打印结果了吗? @TadeášJílek

标签: php curl scraper


【解决方案1】:

以下 CURL 选项可能会有所帮助:

curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);   

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多