Backend-скрипт эмуляции пользовательского сценария в мобильном приложении (Бюджет: 50 000 ₽, для всех)
⚓ Work 📅 2026-06-28 👤 surdeus 👁️ 1
ТЗ: Backend-скрипт эмуляции пользовательского сценария в мобильном приложении Ozon
1. Цель
Разработать скрипт, который через сетевые запросы эмулирует поведение мобильного приложения Ozon — от запуска до просмотра карточки товара. Сессия гостевая, без авторизации.
2. Платформа (iOS или Android — на выбор исполнителя)
Вариант А — iOS:
Устройство: iPhone (актуальная модель)
UA: OzonStore/<build> CFNetwork/<v> Darwin/<v>
Транспорт: HTTP/2, TLS с Safari fingerprint
API: api.ozon.ru
Вариант Б — Android:
Устройство: актуальный Android-смартфон
UA: okhttp/4.9.3 или актуальный
Транспорт: HTTP/2, TLS с Android fingerprint
API: api.ozon.ru / xapi.ozon.ru
Исполнитель выбирает платформу самостоятельно исходя из своего опыта. Требования к результату одинаковые для обеих платформ.
3. Сценарий (обязательные шаги)
# Шаг - Что происходит
1 Запуск приложения - Инициализация сессии, получение конфигов
2 Открытие поиска - Трекинг открытия поисковой строки
3 Поисковый запрос - Запрос к поисковому API по заданной строке
4 Применение фильтров- Выбор фильтра из выдачи
5 Применение сортировки- Изменение порядка выдачи
6 Скролл выдачи - Пагинация результатов
7 Открытие карточки товара- Запрос по конкретному SKU
8 Просмотр карточки - Загрузка данных товара (цена, кнопки, описание)
4. Антибот
Ozon использует собственную антибот-систему на базе JS proof-of-work. Исполнитель должен:
Корректно обрабатывать 403 + challengeURL на любом запросе
Решать JS-challenge и отправлять валидный токен на /abt/result
Управлять сессионными куками (abt_data, __Secure-ETC и др.)
Поддерживать работу через SOCKS5-прокси
Метод решения challenge — на усмотрение исполнителя (headless-браузер, реверс JS-движка, другое).
5. Интерфейс запуска
bashpython script.py \
--sku 15817423453 \
--query "наушники беспроводные" \
--proxy socks5://user:pass@host:port
Параметры:
--sku — SKU товара для открытия карточки
--query — поисковый запрос
--proxy — прокси (опционально)
--threads — количество параллельных потоков (опционально)
6. Логирование
Каждый запрос: метод, URL, статус, время
Итоговый отчёт: успешных / ошибок / антибот-срабатываний
Режим без реальных запросов для отладки
7. Критерии приёмки
Все 8 шагов выполняются без ошибок
/abt/result возвращает 200 OK (challenge пройден)
initAuth возвращает 200 OK
Поисковая выдача содержит товары
Карточка товара открывается по заданному SKU
Работает с SOCKS5-прокси
Есть логирование каждого шага
8. Стек
Python предпочтителен, но не обязателен. Важен результат.
9. Сдача
Исходный код с комментариями
Краткая инструкция по запуску
Совместный тестовый запуск с проверкой логов
🏷️ Work_feed
