Этот проект разработал легкий инструмент командной строки для мониторинга статуса наличия товаров на Eslite Online. Существующие страницы товаров Eslite Online показывают наличие только по отдельности, что препятствует массовым проверкам или мониторингу в реальном времени для популярных товаров. Основная техническая задача заключалась в обходе фронтенд-защиты и корректном вызове бэкенд API. Инструмент напрямую взаимодействует с API товаров Eslite, заменяя ручное обновление веб-страниц.Серьезной проблемой стала ошибка 403 Forbidden от Cloudflare из-за обнаружения TLS-отпечатка. Стандартные библиотеки Python создают TLS-отпечатки, отличающиеся от реальных браузеров, что приводило к блокировке запросов Cloudflare. Решение заключалось в использовании curl-cffi с параметром impersonate="chrome120" для имитации TLS и HTTP/2 отпечатков браузера Chrome. API Eslite требует динамический параметр временной метки в формате YYYYMMDDHHMMSS для проверки запросов или инвалидации кэша. Инструмент генерирует эту временную метку в реальном времени для каждого вызова API.Для упрощения ввода пользователем инструмент использует регулярные выражения для извлечения 20-значного GUID либо из необработанного GUID, либо из полного URL товара. Был добавлен параметр --watch N для непрерывного мониторинга, который запрашивает наличие каждые N секунд и обновляет вывод терминала. Статусы наличия и покупки окрашены в разные цвета для удобного визуального сканирования. Инструмент поддерживает одновременный запрос нескольких товаров, при этом сбои при запросе отдельных товаров изолируются, не прерывая всю пакетную обработку.Для обеспечения совместимости с терминалами Windows, которые могут не использовать кодировку UTF-8 по умолчанию, скрипт активно перенастраивает стандартные потоки вывода и ошибок для использования UTF-8. Проект соответствует PEP 723, позволяя пользователям запускать скрипт с помощью uv run без необходимости предварительной установки зависимостей. Самым критичным и наименее очевидным техническим решением было преодоление проблемы TLS-отпечатков, которая потребовала специализированной библиотеки, а не просто подделки HTTP-заголовков.
curl-cffiс параметромimpersonate="chrome120"для имитации TLS и HTTP/2 отпечатков браузера Chrome. API Eslite требует динамический параметр временной метки в формате YYYYMMDDHHMMSS для проверки запросов или инвалидации кэша. Инструмент генерирует эту временную метку в реальном времени для каждого вызова API.Для упрощения ввода пользователем инструмент использует регулярные выражения для извлечения 20-значного GUID либо из необработанного GUID, либо из полного URL товара. Был добавлен параметр--watch Nдля непрерывного мониторинга, который запрашивает наличие каждые N секунд и обновляет вывод терминала. Статусы наличия и покупки окрашены в разные цвета для удобного визуального сканирования. Инструмент поддерживает одновременный запрос нескольких товаров, при этом сбои при запросе отдельных товаров изолируются, не прерывая всю пакетную обработку.Для обеспечения совместимости с терминалами Windows, которые могут не использовать кодировку UTF-8 по умолчанию, скрипт активно перенастраивает стандартные потоки вывода и ошибок для использования UTF-8. Проект соответствует PEP 723, позволяя пользователям запускать скрипт с помощьюuv runбез необходимости предварительной установки зависимостей. Самым критичным и наименее очевидным техническим решением было преодоление проблемы TLS-отпечатков, которая потребовала специализированной библиотеки, а не просто подделки HTTP-заголовков.