Не получается получить запрос GET через CURL

199
28 января 2019, 21:10

Есть URL страница , которую я должен получить через CURL

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);  
curl_close($ch);  

Но в итоге получаю страницу с запросом POST (Техническая ошибка). Так же пробовал библиотеку php-multi-curl (addUrl). Но все ранво получаю страницу с POST запросом. Помогите пожалуйста, как я могу получить страницу с GET запросом. file_get_contents не работает , так как HTTPS

Answer 1
  $ch = curl_init('{URL}');
  $headers = array("Content-Type: application/json; charset=utf-8");//изменить на нужный
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ch, CURLOPT_HEADER , true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  $response = curl_exec($ch);

Вот валидный GET запрос, прекрасно возвращает данные даже если сертификат сервера "самоподписной" =)

Дополнено:

1) Вам нужно разобраться с авторизацией на сайте( как именно и на какой URL отправляются авторизационные данные).

2) После запроса авторизации(отправки логина и пароля) вам нужно получить авторизационную Cookie, в примере она называется "PAC"..

  preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);
  $cookies = array();
  foreach($matches[1] as $item) {
    parse_str($item, $cookie);
    $cookies = array_merge($cookies, $cookie);
  }

3) Делать ваш GET запрос с этой Cookie

$headers = array("Content-Type: application/json; charset=utf-8","Cookie: PAC=".$cookies['PAC']);

p.s.

<?php
  set_time_limit(100);
  $color[] = "scarlet%20red%20highgloss";
  $color[] = "shiny%20taupe";
  $color[] = "black%20highgloss";
  foreach($color[] as $col)
  {
    $ch = curl_init("https://www.lechuza.ru/tovar-izmenit/?dwvar_CLASSICO__LS_color=$col&pid=CLASSICO_LS&dwvar_CLASSICO__LS_CLASSICO_LS_Size=21&source=detail");
    $headers = array("Content-Type: application/json; charset=utf-8");
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_HEADER , true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    echo $response;
  }
?>
READ ALSO
Подключение файлов в PHP

Подключение файлов в PHP

Интересует следующий вопросЕсть файл с функциями main_menu

190
Перехват вызова метода

Перехват вызова метода

Есть интерфейс

251
Как загрузить отчет по URL на сервер?

Как загрузить отчет по URL на сервер?

По такому URL хочу загрузить на сервер отчетЕсли его дать внутри a href то он грузит этот отчет

184
Как изменить цвет ячейки таблицы на срок 24 часа, в которую были внесены изменения

Как изменить цвет ячейки таблицы на срок 24 часа, в которую были внесены изменения

Есть таблица "Проекты"Каждый проект, соответственно, имеет свой id, по которому можно задать дополнительный класс каждой строке в таблице...

184