php curl 无法正常抓取内容

function echo_var_dump($obj){
    echo "<pre>";
    echo var_dump($obj);
    echo "</pre>";  
}

function GetCurl($url) {

    //curl 伪造useragent
    $useragent = array(
        'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)',
        'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)',
        'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
        'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1',
        'Opera/9.27 (Windows NT 5.2; U; zh-cn)',
        'Opera/8.0 (Macintosh; PPC Mac OS X; U; en)',
        'Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 ',
        'Mozilla/5.0 (Windows; U; Windows NT 5.2) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13'
    );

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_URL, $url);    

    // 设置iP和useragent
    curl_setopt($curl, CURLOPT_REFERER, "http://h5.eqxiu.com/s/Rwg9jFlv");
    curl_setopt($curl, CURLOPT_USERAGENT, array_rand($useragent));

    $resp = curl_exec($curl);
    curl_close($curl);
    return $resp;
}

$url = "http://s1.eqxiu.com/eqs/page/119805007?code=Rwg9jFlv&time=1523150497000";
$page_data = GetCurl($url);
$page_arr = json_decode($page_data, true);

echo_var_dump($page_arr);

我已经设置REFERER了,但依然获取的内容不对,访问如下第一个链接就可以正常获取第二个链接的json内容,而我的程序获取到的提示“数据不合法”。

http://h5.eqxiu.com/s/Rwg9jFlv
http://s1.eqxiu.com/eqs/page/...

阅读 5k
5 个回答
//添加这两行
curl_setopt($curl, CURLOPT_ENCODING, "gzip"); 
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Origin: http://h5.eqxiu.com']);

clipboard.png

clipboard.png

看 数据不合法 在哪报的错?
是不是需要构造cookie?

array_rand返回的是数组的key不是value,userAgent很关键,fix之后再看下

浏览器能获取到,你又设置了ua头,把获取的数据输出来,那应该是你的处理程序有问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题