Как включить «сжатый» параметр в функции curl в PHP? - PullRequest
2 голосов
/ 15 октября 2019

Ineed, чтобы сделать запрос точно так же, как браузер делает это с CURL и PHP, когда копия в виде Curl (cmd), я вижу следующие заголовки:

curl "https://www.w3schools.com/js/ajax_info.txt" 
-H "Sec-Fetch-Mode: cors" 
-H "referer: https://www.w3schools.com/js/tryit.asp?filename=tryjs_ajax_first" 
-H "Origin: https://www.w3schools.com" 
-H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"  
-H "dnt: 1" 
--compressed

У меня есть код, но мне нужно больше вариантов, например, часть "--compressed", я не знаю, как включить ее в запрос

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'https://www.w3schools.com/js/ajax_info.txt');

$data = curl_exec($ch);
curl_close($ch);
return $data;

?>

я не могу увидеть результат, потому что заголовки

1 Ответ

0 голосов
/ 17 октября 2019

Вы устанавливаете опцию CURLOPT_ENCODING и запрашиваете определенные кодировки (методы сжатия) или позволяете самому curl запрашивать кодировки, о которых он знает. Если вы не обладаете специальными знаниями, то, как правило, возможность curl запрашивать то, что он поддерживает, дает наилучшие результаты.

curl_setopt($ch, CURLOPT_ENCODING, '');

Обратите внимание, что аккуратный curl-to-php сервис , упомянутый в комментарии, работает дляэто, но сгенерирует неоптимальную версию с фиксированным набором методов. Я подал отдельный отчет об ошибке об этом.

Эта опция называется CURLOPT_ACCEPT_ENCODING в базовом libcurl, как она была переименована там много лет назад.

...