Токарев Lab Все проекты

АвтоматизацияМаркетплейсы

Парсер Озона: цены, карточки товаров и все SKU магазина

HTTP-сервис для сбора данных с витрины Озона без доступа к кабинету продавца. По SKU отдаёт цены и полную карточку товара, по ссылке на магазин собирает все его SKU. Результат приходит в JSON.

Зачем нужен парсер Озона

Через Seller API продавец видит только свой кабинет. А цены конкурентов, карточки чужих товаров или полный список SKU другого магазина можно получить только с витрины, так, как их видит покупатель. Вручную это открывать страницы и копировать данные, а при сотнях товаров это уже не работает.

Парсер закрывает эту задачу как отдельный HTTP-сервис: ему передают SKU или ссылку, а он возвращает данные в JSON. Такой ответ легко встроить в таблицу, бота, репрайсер или каталог на сайте.

Что умеет парсер

  • Цена по SKU. Витринная цена, цена с Ozon Картой и цена до скидки.
  • Полная карточка товара. Название, бренд, описание, обложка и все фото, категория, основные характеристики, продавец, рейтинг, число отзывов и первые отзывы с оценкой, текстом, плюсами, минусами и фото.
  • Все SKU магазина. По ссылке на магазин или ID продавца сервис проходит витрину постранично и собирает список товаров: SKU, название, ссылку, цену и картинку. Дубли отбрасываются, число страниц и пауза между ними настраиваются.

Как проходит защиту от ботов

Озон проверяет посетителей антибот-системой, и обычные запросы к витрине быстро блокируются. Поэтому сервис работает в два этапа:

  1. Браузер Camoufox (Firefox с правдоподобным отпечатком) открывает страницу товара через резидентный прокси и проходит проверку, как обычный посетитель.
  2. Полученная сессия (cookies, user-agent и IP) сохраняется, и дальше запросы идут через curl_cffi с TLS-отпечатком Firefox. Это быстро и не требует держать открытый браузер на каждый запрос.

Сессия обновляется по расписанию, а если запрос всё же заблокирован, сервис повторяет его, при повторной блокировке заново проходит проверку в браузере и отдаёт результат уже по свежей сессии.

Честные ограничения

  • Персональные цены, которые видны только после входа в аккаунт, скрейпингом не получить.
  • Характеристики отдаются кратким списком, как в блоке рядом с ценой, а не полной таблицей.
  • Если товара нет в наличии или ссылка ведёт на категорию, сервис возвращает пустую цену и причину, а не ошибку.
  • Без прокси сервис не работает: без него защита Озона не пропускает.

Как устроено

Python и FastAPI, одно приложение в Docker-контейнере. Эндпоинты: цена по SKU, полная карточка, список SKU магазина, проверка состояния и ручное обновление сессии. Браузер запускается по одному, чтобы не плодить сессии, а обычные запросы идут параллельно. Данные берутся из того же JSON, которым витрина Озона наполняет страницу, а если его нет, цены достаются из HTML страницы.

Частые вопросы

Можно ли спарсить цены конкурентов на Озоне?

Да, если товар доступен на витрине без входа в аккаунт. Парсер отдаёт обычную цену, цену с Ozon Картой и цену до скидки по SKU или ссылке.

Можно ли выгрузить все товары чужого магазина?

Да. По ссылке на магазин или ID продавца сервис проходит витрину постранично и собирает SKU, названия, ссылки, цены и картинки.

В каком формате приходят данные?

В JSON через HTTP API. Его можно забирать из Google Таблицы, бота, 1С или своего сервиса.

Собирает ли парсер отзывы?

Да, в режиме полной карточки: первые отзывы с оценкой, датой, текстом, плюсами, минусами и фото.

Нужен ли доступ к кабинету продавца?

Нет. Парсер работает только с публичной витриной Озона.

Нужно похожее?

Напишите, что хотите автоматизировать или сделать, обсудим задачу.