Парсинг яндекс-такси

209
02 марта 2018, 18:27

Хотел попробовать спарсить цену на сайте

Чтобы выполнить запрос, который отвечает за ответ цены, необходимо сначала получить уникальный id. Id можно получить по этой ссылке, но для начала необходимо сформировать куку yandex_uid.

Итого, получается 3 этапа.

  1. Делаем запрос на https://taxi.yandex.ru/, получаем куку yandex_uid
  2. Отправляем эту куку на https://taxi.yandex.ru/3.0/launch/ , получаем уникальный id
  3. Отправляем id, координаты и т.п на https://taxi.yandex.ru/3.0/routestats/, получаем цену

Проблема возникает на шаге 2. Постоянно получаю ошибку 400.

Вот код:

$client->createRequest()
        ->setMethod('POST')
        ->setUrl('https://taxi.yandex.ru/3.0/launch/')
        ->setHeaders(['Accept' => 'application/json, text/javascript, */*; q=0.01'])
        ->addHeaders(['Accept-Encoding' => 'gzip, deflate, br'])
        ->addHeaders(['Accept-Language' => 'ru_RU'])
        ->addHeaders(['Cache-Control' => 'no-cache'])
        ->addHeaders(['Connection' => 'keep-alive'])
        ->addHeaders(['Content-Length' => ob_get_length()])
        ->addHeaders(['Cookie' => 'yandexuid='.$cookies->getValue('yandexuid')])
        ->addHeaders(['Content-Type' => 'application/json'])
        ->addHeaders(['Host' => 'taxi.yandex.ru'])
        ->addHeaders(['Origin' => 'https://taxi.yandex.ru'])
        ->addHeaders(['Pragma' => 'no-cache'])
        ->addHeaders(['Referer' => 'https://taxi.yandex.ru/'])
        ->addHeaders(['User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'])
        ->addHeaders(['X-Compress' => null])
        ->addHeaders(['X-Requested-With' => 'XMLHttpRequest'])
        ->send();

Что я делаю не так? Подскажите, пожалуйста.

READ ALSO
Преобразовать в массив json

Преобразовать в массив json

Помогите преобразовать строку в массив json такой запрос

206
Не видит классы autoload.php

Не видит классы autoload.php

Вчера ВК выпустили PHP SDK для взаимодействия со своим APIЗашел в документацию и увидел, что библиотеку надо ставить через composer

244
Порядок выполнения функций в PHP

Порядок выполнения функций в PHP

Всем приветПо запросу "порядок выполнения", интернет показывает статьи с арифметическими действиями

230
Doctrine обратная связь

Doctrine обратная связь

Есть Entity User со связью

223