Booking.com — канонически сложная цель для данных по отелям: тарифы на JS, гео-персонализация и серьёзный антибот. Вот как устроено ценообразование и как собирать его чисто.
Тарифы Booking.com отрисовываются JavaScript и гео-персонализированы, поэтому собирайте их реальным браузером на резидентном или мобильном IP в целевой стране — голая HTTP-загрузка с дата-центрового IP возвращает устаревшую, нерепрезентативную разметку и быстро банится. Задайте нужную валюту/локаль, ведите запросы в человекоподобном темпе и собирайте по рынкам, ведь один и тот же номер законно варьируется по странам. Сначала изучите условия и право.
Полезные сигналы Booking.com — это тарифы номеров по датам и числу гостей, доступность/наличие, условия отмены и то, как они меняются со временем — сырьё для проверок паритета тарифов (одинаково ли мой отель оценён по всем каналам?), бенчмаркинга конкурентов и прогнозирования спроса. Ничего из этого нет в исходном HTML; оно приходит через вызовы доступности после загрузки страницы.
Значит, надёжный подход — реальный браузерный движок, исполняющий эти вызовы (или достоверное воспроизведение их с валидной сессией), приходящий на IP, которому сайт доверяет. На дата-центровом IP запрос осуждается ещё до того, как тариф отрисуется — см. руководство по репутации IP.
| Слой | Что делать |
|---|---|
| Клиент | Реальный браузерный движок (исполняет JS и вызовы доступности) |
| IP | Резидентный/мобильный в целевой стране, а не дата-центровый |
| Локаль | Задайте валюту + язык под рынок, который вы сэмплируете |
| Темп | Человекоподобный тайминг и джиттер; уважайте лимиты запросов |
| Охват | Сэмплируйте каждую страну отдельно — цены различаются по рынкам |
Почему важна разбивка по странам — подробно: гео-ценообразование в тревеле →
Booking.com отрисовывает результаты поиска и тарифы номеров через JavaScript и вызовы живой доступности, привязанные к вашим датам, числу гостей, валюте и определённому местоположению. Голая HTTP-загрузка URL возвращает разметку без реальных, актуальных тарифов — нужен браузер, который исполняет страницу, или воспроизведение лежащих в основе запросов доступности с правильной сессией и заголовками.
Потому что Booking.com персонализирует по стране, валюте, устройству и уровню членства (Genius). Если ваш скрипт запрашивает с дата-центрового IP в другой стране, он видит другую — и часто нерепрезентативную — цену. Чтобы захватить тариф, который видит реальный клиент на рынке, запрашивайте с резидентного или мобильного IP, расположенного на этом рынке.
Дата-центровый IP плюс отпечаток headless-автоматизации — самый быстрый бан: IP помечается с ходу, а клиент не похож на реальный браузер. Добавьте быстрые бессистемные всплески запросов — и вас сразу же зачелленджат. Доверенный локальный IP, реальный браузер и человекоподобный темп — вот что держит сбор стабильным.
Реальные 4G/5G мобильные + резидентные IP в 17+ странах — $4/GB, бесплатные эндпоинты, бесплатная ротация.