无法使用CURL(PHP)获取JSON

时间:2018-08-23 07:09:50

标签: php json curl

我以为我对PHP / curl的了解还不错,但是在这里我不知道是怎么回事?

[GET] https://www.olx.pl可以毫无问题地获取,但是我无法收到JSON请求: [GET] https://www.olx.pl/i2/ajax/ad/getcontact/?id=477486803&type=phone

在浏览器中可以,在POSTMAN中可以(所有安全选项均关闭)。

我执行的代码:

$urlForTel = "https://www.olx.pl/i2/ajax/ad/getcontact/?id=477486803&type=phone";
$headers = array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0'
);
$ch = curl_init();
// curl_setopt($ch, CURLOPT_PROXY, $proxy_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $urlForTel);
$result=curl_exec($ch);

代码只是停止并且不会继续...如您所见,我尝试了许多不同的选项(证书,代理,带标头和不带标头)。但是当您更改例如参数中ID的最后一位(请求不存在的资产),它将正确返回HTML ...

我尝试过 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);已下载证书,并且也具有/不具有用户代理...

1 个答案:

答案 0 :(得分:1)

我可以使用给定的代码重现您的问题,并通过像这样简单地添加一个Accept标头来设法使其工作:

$headers = array(
    'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',
    'Accept: application/json',
);