Curl_exec возвращает ошибку 404 not found, тогда как url ​​найден в браузере - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь достичь URL через локон. Я систематически получаю сообщение об ошибке 404 для определенного URL, тогда как мой браузер находит страницу. Я пытался установить пользовательский агент и куки-файлы перед вызовом curl_exec, чтобы он был настолько близок, как вызов браузера работать в моем случае; см. cURL возвращает 404, в то время как страница найдена в браузере ).

$url = "http://www.zenaps.com/rclick.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36";
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
$cookiefile = './cookie.txt'; // contains cookies saved after opening url in browser through Chrome addin cookies.txt
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
$response = curl_exec($ch);
echo $response;

Есть ли у вас какие-либо идеи, что я мог бы сделать, чтобы достичь этого URL без ошибки 404?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Когда вы устанавливаете опцию CURLOPT_NOBODY на true, это означает, что cURL будет выполнять запрос HEAD вместо запроса GET.

Похоже, что URL дает 200 для запросов GET, но 404 для запросов HEAD.

Попробуйте установить CURLOPT_NOBODY на false.

0 голосов
/ 01 сентября 2018

Попробуйте это:

// create curl resource 
$ch = curl_init(); 
// set url 
curl_setopt($ch, CURLOPT_URL, "http://www.zenaps.com/rclick.php"); 
//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
// $output contains the output string 
$output = curl_exec($ch); 
echo($output);
// close curl resource to free up system resources 
curl_close($ch); 
...