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

226
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 такой запрос

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

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

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

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

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

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

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

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

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

238