Разобраться с COOKIES php

166
16 февраля 2018, 19:46

Нужно получить данные с tyty отправляю заголовки

    $date_start = date(d.m.Y);
    $preg_date = "+$i days";
    $date_end = date(d.m.Y, strtotime($preg_date));
    $url = "https://avia.tutu.ru/ajax/?Action=avia_offer&act=get_offers&force=0&passengers=100&class=Y&changes=all&route%5B%5D=491-".$date_end."-75";
    //получаем заголовки для отправки на сервер
    $preg_headers = get_headers($url);
    //обнуляем перевемнную в которой .eltv хранить куки
    $get_headers_cookies = NULL;
    //обходим мссив с заголовками и вытаскиваем оттуда куки.
    for ($h = 0; $h < count($preg_headers); $h++)
    {
        $sess = strpos($preg_headers[$h], "Set-Cookie:");
        if ($sess !== FALSE) {
            $get_headers_cookies = $get_headers_cookies.";".$preg_headers[$h];
        };
    };
    //вырезаем ненужные символы из куки и готовим их к отправке на сервер.
    $get_headers_cookies = substr(str_replace(";Set-Cookie: ", ";", $get_headers_cookies), 1);
    $get_headers_cookies = preg_replace("/ ..:..:.. GMT/", "", $get_headers_cookies);
    $get_headers_cookies = str_replace(" ", "", $get_headers_cookies);
    $headers_cookies = 'Cookie: '.$get_headers_cookies;
  //инициализируем cUrl запрос на сервер в нём передаём все данные заголовки и куки.
for ($a = 0; $a < 2; $a++){
    $handle = curl_init($url);
        curl_setopt($handle, CURLOPT_URL, $url);
        curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($handle, CURLOPT_COOKIESESSION, true);
        curl_setopt($handle, CURLOPT_AUTOREFERER, true);
        curl_setopt($handle, CURLOPT_HEADER, 0);
        curl_setopt($handle, CURLOPT_HTTPHEADER, array("Host: avia.tutu.ru",'Connection: keep-alive','Accept: application/json, text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','X-Requested-With: XMLHttpRequest','Referer: '.$url.'','Accept-Encoding: deflate, br','Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',$headers_cookies));
        $html_code = curl_exec($handle);
        print_r($html_code);
//проверяем на ошибки cUrl
        if ($html_code === FALSE){
            echo "cURL Error: " . curl_error($handle);
            return;
        };
//закрываем cUrl
        curl_close($handle);
    $response = json_decode($html_code , true);
    }
};

но в ответе приходит

{"searchHash":"899729004082155873","searchStatus":"requested"}

если поставить куки руками

$date_start = date(d.m.Y);
    $preg_date = "+$i days";
    $date_end = date(d.m.Y, strtotime($preg_date));
    $url = "https://avia.tutu.ru/ajax/?Action=avia_offer&act=get_offers&force=0&passengers=100&class=Y&changes=all&route%5B%5D=491-".$date_end."-75";
    //получаем заголовки для отправки на сервер
    $preg_headers = get_headers($url);
    //обнуляем перевемнную в которой .eltv хранить куки
    $get_headers_cookies = NULL;
    //обходим мссив с заголовками и вытаскиваем оттуда куки.
    for ($h = 0; $h < count($preg_headers); $h++)
    {
        $sess = strpos($preg_headers[$h], "Set-Cookie:");
        if ($sess !== FALSE) {
            $get_headers_cookies = $get_headers_cookies.";".$preg_headers[$h];
        };
    };
    //вырезаем ненужные символы из куки и готовим их к отправке на сервер.
    $get_headers_cookies = substr(str_replace(";Set-Cookie: ", ";", $get_headers_cookies), 1);
    $get_headers_cookies = preg_replace("/ ..:..:.. GMT/", "", $get_headers_cookies);
    $get_headers_cookies = str_replace(" ", "", $get_headers_cookies);
    $headers_cookies = 'Cookie: '.$get_headers_cookies;
//инициализируем cUrl запрос на сервер в нём передаём все данные заголовки и куки.
for ($a = 0; $a < 2; $a++){
    $handle = curl_init($url);
        curl_setopt($handle, CURLOPT_URL, $url);
        curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($handle, CURLOPT_COOKIESESSION, true);
        curl_setopt($handle, CURLOPT_AUTOREFERER, true);
        curl_setopt($handle, CURLOPT_HEADER, 0);
        curl_setopt($handle, CURLOPT_HTTPHEADER, array("Host: avia.tutu.ru",'Connection: keep-alive','Accept: application/json, text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','X-Requested-With: XMLHttpRequest','Referer: '.$url.'','Accept-Encoding: deflate, br','Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7','Cookie: SESSIONID=dc150218-34f1-4d80-9324-2ca878760cb1;expires=Sun,13-Feb-2028;Max-Age=315360000;path=/;domain=.tutu.ru;servercookie3_session_secured=17b4f1b8e9000e5d127430943f45202c;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;secure;HttpOnly;servercookie3_session=b0534facfeeb7977affaf90ddf138b51;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;HttpOnly;servercookie3__cross_domain=a2a72ae3ce7fb234597b665101a69821;expires=Mon,14-Feb-2022;Max-Age=126144000;path=/;domain=.tutu.ru;HttpOnly;servercookie3__cross_domain_secured=09f89c96761b93372bb9ad7c4313ca3b;expires=Mon,14-Feb-2022;Max-Age=126144000;path=/;domain=.tutu.ru;secure;HttpOnly;avia_form_from_city_id=491;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_from_city_name=%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_to_city_id=75;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_to_city_name=%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_date_forward=2018-02-15;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_date_back=deleted;expires=Thu,01-Jan-1970;Max-Age=0;path=/;domain=.tutu.ru;avia_form_fulls=1;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_children=0;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru;avia_form_infants=0;expires=Fri,16-Feb-2018;Max-Age=86400;path=/;domain=.tutu.ru'));
        $html_code = curl_exec($handle);
        print_r($html_code);
//проверяем на ошибки cUrl
        if ($html_code === FALSE){
            echo "cURL Error: " . curl_error($handle);
            return;
        };
//закрываем cUrl
        curl_close($handle);
    $response = json_decode($html_code , true);
    }
};

то после ВТОРОЙ перезагрузке страницы получаем то что нужно.

{"searchHash":"480970059559943185","searchStatus":"completed","timelimit":1597,"carriers_list":{"1062":{"logo":"https:\/\/cdn2.tu-tu.ru\/image\/avia_offers_carriers\/1\/d8f07dde21c2ae888898c526c9b05572\/","logo_small":"https:\/\/cdn2.tu-tu.ru\/ima...

php совсем не знаю сейчас в процессе изучения по этому многое думаю не правильно и ещё больше можно пееделать более оптимально. Помогите с вопросом!

READ ALSO
libevent: как её прилинковать к проекту под Windows?

libevent: как её прилинковать к проекту под Windows?

Господа, у меня серьезный и важный вопрос, над которым я бьюсь головой об клавиатуру уже больше неделиЯ даже готов обсудить вознаграждение...

131
Вызов метода у нулевого указателя

Вызов метода у нулевого указателя

Сегодня состоялся следующий спор с коллегамиОни утверждали, что в таком коде нет никаких проблем, и все будет работать везде одинаково:

181
Как проверить есть ли у системы возможность открыть файл?

Как проверить есть ли у системы возможность открыть файл?

есть абсолютное имя файла QString filePathНадо из программы вызвать открытие этого файла стандартной для системы утилитой

138
Не работает XOR

Не работает XOR

Второй день пытаюсь сделать шифрование Xor'ом, но все никак не получаетсяВот мой код

144