Open uristA opened 2 years ago
такая же проблема, пару раз из браузера подрубался, а через прогу 403 ошибка, а теперь вообще timeout @visavi
Они там что-то замутили с защитой, подозрительные и неверные запросы сразу же банятся по IP (или еще как-то) Используйте прокси, подменяйте Referer итд это все есть в примерах
Проверил все api только что, все работает нормально
Они там что-то замутили с защитой, подозрительные и неверные запросы сразу же банятся по IP (или еще как-то) Используйте прокси, подменяйте Referer итд это все есть в примерах
Проверил все api только что, все работает нормально
а проверяли с установкой rid или session? у меня именно 403 выдавало
Не понял вопрос Я проверял данное api В директории example есть уже готовые примеры, можно там потыкать, все работает
Даже в новой версии при попытке обратится к https://pass.rzd.ru/timetable/public......... выдает forbidden. rzd-api v3 php 8.1
Не совсем понял, вы напрямую обращаетесь по этому адресу или как? Вот пример как получать данные, самый простой пример
$params = [
'dir' => 0,
'tfl' => 3,
'checkSeats' => 1,
'code0' => '2004000',
'code1' => '2000000',
'dt0' => '15.06.2022', // тут подставляете актуальную дату
];
$api = new Rzd\Api();
var_dump($api->trainRoutes($params));
Поиск станций и поездов работают без вопросов, как описано. Но метод получения списка вагонов чем-то отличается от них. Rid выдает, но при попытке вытащить данные либо сообщение об ошибке сервера с 200 статусом, либо 403. Пока дебажил примеры, чтоб понять что там с хедерами в запросах - меня сервак ржд заблочил)
То же самое, подтверждаю. Без проблем находит список станций, поезда. Но совершенно аналогичным способом не позволяет получить ни список вагонов, ни билеты. По полученному RID возвращает ошибку {"result":"FAIL","type":"SESSION_EXPIRED","error":"Сессия истекла. Пожалуйста, попробуйте обновить страницу.","timestamp":"<дата_время>"} Пробовал различные верианты Referer, пробовал добавлять задержки перед фетчингом данных, пробовал даже стучаться на разные API эндпоинты - всё мимо. Есть живой способ получения свободных мест "от станции до станции" в конкретно выбранном поезде?
UPD: кажется реализовал через API нового сайта, советую смотреть в эту сторону. По крайне мере пока не банит))
@track2
UPD: кажется реализовал через API нового сайта, советую смотреть в эту сторону. По крайне мере пока не банит))
Вы имеете ввиду rzd-api 4.0.1, упоминая API нового сайта?
Вы имеете ввиду rzd-api 4.0.1, упоминая API нового сайта?
Нет, я имею в виду запросы к новому API РЖД (ticket.rzd.ru):
/apib2b/p/Railway/V1/Search/TrainPricing
/apib2b/p/Railway/V1/Search/TrainRoute
и т.д.
Перед данными запросами на всякий случай генерирую валидный Referer вида:
Referer: https://ticket.rzd.ru/searchresults/v/1/
Меня не банит по крайней мере, но у меня нагрузка такая... Никакая :) Для собственных нужд небольшая консольная утилита.
Подтверждаю проблему. Возникает не везде и не всегда, лишь на некоторых поездах будто бы. Видимо поэтому @visavi не поймал проблему. Тоже думаю на старый эндпоинт..
Даже в новой версии при попытке обратится к https://pass.rzd.ru/timetable/public......... выдает forbidden. rzd-api v3 php 8.1