Недавно писал здесь про своего автономного бота, который собирает игровые новости и скидки Steam. За последние сутки столкнулся с парой неочевидных проблем, которые, кажется, будут знакомы всем, кто работает с парсингом из-за рубежа. Делюсь решениями, вдруг кому сэкономит вечер отладки.
Главная победа — картинки с DTF
Всё работало стабильно, пока я не заметил, что посты с DTF регулярно выходят без изображений. Оказалось, что их CDN (leonardo.osnova.io) начал блокировать или таймаутить запросы с моего VPS во Франкфурте. Сначала пытался играть с заголовками и прокси-серверами, но решение оказалось неожиданно простым и бесплатным - wsrv.nl. Теперь, если бот видит ссылку на картинку с Osnova, он автоматически оборачивает её в https://wsrv.nl/?url=.... Тесты показали, что прокси не режет качество и отрабатывает стабильно даже под нагрузкой. Посмотрим как будут выходить дальнейшие посты.
Reddit (и иногда другие источники) периодически начал отдавать 403 Forbidden - мгновенный отказ. Раньше бот в такой ситуации молча пропускал все новости, и канал просто оставался пустым в час публикации. Это было обидно. Теперь внедрил жёсткую логику fallback'а: если ни одна картинка из доступных новостей не скачалась, бот обязан опубликовать последнюю новость голым текстом с inline-кнопками. Лента больше никогда не пропускает время выхода.
Возврат DTF и мелкие улучшения
Поэкспериментировал с заменой DTF на PC Gamer, но в итоге откатился обратно - DTF всё-таки даёт более релевантную для русскоязычной аудитории повестку. Заодно починил заголовки для Reddit: теперь передаю правильный Referer: https://www.reddit.com, и 403-х ошибок стало заметно меньше.
Вся эта механика со всеми прокси, страховками и fallback'ами сейчас крутится на VPS и вываливается в @grifonerloot - использую его как живой стенд, чтобы смотреть, как контент переживает все эти грабли в реальных условиях. Заодно удобно отслеживать, не сломал ли очередной апдейт парсинг.
Собственно, вопрос к тем, кто тоже парсит внешние API: как вы вообще относитесь к публичным прокси вроде wsrv.nl в продакшене? Стоит ли закладывать свой резервный прокси-сервер, или для пет-проекта такого уровня это overkill?