我以为我对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);
已下载证书,并且也具有/不具有用户代理...
答案 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',
);