Отправка запорса (form/data) на чужой сервер
Изучаю парсинг сайтов через PHP и Curl, требуется получить HTML определенной страницы. Для подгрузки HTML-структуры на сайте отправляются POST-запросы типа (form-data) с параметрами (offset, id) и тд. На что сервер выдает js-объект с HTML-разметкой. Я создал запрос через программу POSTMAN, все удачно. Как я могу это реализовать в коде? При отправке запроса по типу:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
var_dump(curl_exec($ch));
curl_close($ch);
Получаю что-то такое:
{"payload":["3",["\"c5f522fb410d63197d\"","\"P2FjdD1nZXRfdmFsJmZpeGVkPSZvZmZzZXQ9MjAmb25seUNhY2hlPSZvd25lcl9pZD0xJnR5cGU9b3duJndhbGxfc3RhcnRfZnJvbT0yMA--\""]],"statsMeta":{"platform":"web2","st":false,"time":1591558012,"hash":"AjdrzGzVBZebCSAI1C9zgBrHsDGaPn9zztt51ZVYLk0"},"loaderVersion":"7808606","langVersion":"7023"}
Хотя при отправке этого же запроса через POSTMAN получаю:
{"payload":[0,["тут HTML"]]}
Я посмотрел что можно отправлять post-запросы с помощью CORS, но насколько я понимаю он работает с API.
Как я могу решить мою проблему? Буду очень благодарен за ответы или замечания!
Ответы (1 шт):
Спасибо @DanielProtopopov за советы!
Решение:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
"Cookie: remixlang=0; remixlhk=148cb780fd2443af6d; remixstid=427709366_93zixBNs0TAczEbB7kdCKN5z7ONhJo5gUe1xuh4VoM4; remixff=00; remixua=-1%7C-1%7C-1%7C483568781"
),
));
$response = curl_exec($curl);
curl_close($curl);