Профессиональный парсер отзывов с медиа-вложениями с маркетплейса Ozon.
Данный парсер разработан специально для сбора отзывов с медиа-вложениями (фото и видео) с товаров маркетплейса Ozon.ru.
Ключевые особенности:
- ✅ Сбор только отзывов с фото/видео
- ✅ Многопоточный парсинг (до 10 браузеров одновременно)
- ✅ Поддержка HTTP/SOCKS5 прокси с авторизацией
- ✅ Система обхода антибот-защиты Ozon
- ✅ Графический интерфейс для удобной настройки
- ✅ Экспорт данных в JSON формате
Что собирает парсер:
- Автор отзыва
- Дата публикации
- Рейтинг (количество звёзд)
- Текст отзыва
- Фотографии (высокое разрешение)
- Видео (прямые ссылки)
- Python: 3.11 или 3.12 (рекомендуется)
- Google Chrome: последняя версия
- ОС: Windows / Linux / macOS
- ОЗУ: минимум 4 GB (рекомендуется 8 GB)
- Место на диске: 500 MB для профилей браузеров
git clone https://github.com/KalmikOF/ozon-review-parser.git
cd ozon-review-parserИли скачайте ZIP-архив и распакуйте все файлы в одну папку.
Шаг 2: Создайте виртуальное окружение (можно делать без venv, как только перенесли все файлы в 1 папку устанавливайте зависимоти и запускайте gui)
# Создание venv
python -m venv venv
# Активация (Windows)
venv\Scripts\activate
# Активация (Linux/macOS)
source venv/bin/activatepip install -r requirements.txtВажно: При возникновении ошибок смотрите раздел Решение проблем.
Создайте текстовый файл urls.txt со ссылками на товары:
https://www.ozon.ru/product/shveynaya-mashina-janome-225388851/
https://www.ozon.ru/product/noutbuk-lenovo-ideapad-123456789/
https://www.ozon.ru/product/iphone-15-pro-max-987654321/
python ozon_gui.py- Выберите файл с URL - нажмите "📁 Browse" и укажите
urls.txt - Количество браузеров - рекомендуется 5 (можно 1-10)
- Очистка cookies - оставьте включенным ✅
- Прокси - настройте при необходимости (см. ниже)
Нажмите 🚀 START PARSING и наблюдайте за процессом в логе. (если выбираете Proxy rotation при запуске,разверните gui на весь экран,кнопка за раики окна убегает,баг визуала)
Результаты сохраняются в папку results/ в формате JSON.
Нажмите 📂 OPEN RESULTS для открытия папки с результатами.
Используйте свой IP - лучший вариант для 10-50 товаров.
💡 Рекомендация: Раздайте интернет с телефона на компьютер для максимальной стабильности.
Используйте одну прокси на все браузеры:
Режим: Single proxy
Proxy: socks5://username:password@proxy.com:8080
Поддерживаемые форматы:
http://proxy.com:8080http://user:pass@proxy.com:8080socks5://proxy.com:1080socks5://user:pass@proxy.com:1080
Для массового парсинга (500+ товаров) используйте пул прокси.
Создайте файл proxies.txt:
socks5://user1:pass1@proxy1.com:8080
socks5://user2:pass2@proxy2.com:8080
socks5://user3:pass3@proxy3.com:1080
http://user4:pass4@proxy4.com:3128
Настройки в GUI:
- Выберите "Proxy rotation"
- Нажмите "📝 Load proxies from file"
- Укажите файл
proxies.txt - Change every:
5(менять прокси каждые 5 товаров) - Mode:
random(случайный выбор)
Датацентровые прокси (например, с https://proxy6.net/ или https://proxyline.net/) работают плохо при массовом парсинге.
✅ Решение:
Для массового сбора (1000+ карточек товаров):
- Используйте мобильные прокси (4G/LTE)
Для небольших объёмов (до 50 товаров):
- Работайте со своего IP
- Лучше всего: раздайте интернет с телефона на компьютер
Признаки:
- Парсер останавливается
- В логе ошибки
- Браузер показывает капчу
✅ Решение:
Шаг 1: Остановите парсер (⏹ STOP)
Шаг 2: Удалите проблемный профиль:
Папка - chrome_profile_ozon_browser_номер профиля
удаляйте её целиком
Шаг 3: Перезапустите парсер - будет создан чистый профиль.
Профилактика:
- ✅ Включите
Clear cookies(по умолчанию) - ✅ Меняйте прокси чаще (каждые 3-5 товаров)
- ✅ Уменьшите браузеры до 2-3 при проблемах
pip install setuptools==69.5.1pip install blinker==1.7.0Решение: Установите глобально (без venv):
pip install -r requirements.txt
python ozon_gui.pyВозможные причины:
-
У товара нет медиа-отзывов
- Парсер собирает только отзывы с фото/видео
- Проверьте товар вручную
-
Озон изменил структуру
- Обраититест ко мне для фикса
-
Проблемы с прокси
- Попробуйте без прокси
- Смените прокси
Озон использует многоуровневую систему защиты от ботов. Вот как парсер её обходит:
Что проверяет Озон:
- Флаг
navigator.webdriver - JavaScript-окружение
- Automation-флаги Chrome
Наш обход:
// Скрываем webdriver
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
// Отключаем automation-флаги
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])Что проверяет Озон:
- Canvas fingerprinting
- WebGL fingerprinting
- Установленные шрифты
- Разрешение экрана
Наш обход:
- Изолированные профили браузеров
- Блокировка WebRTC (утечка IP)
- Блокировка геолокации
- Отключение уведомлений
Что проверяет Озон:
- Скорость кликов
- Паттерны навигации
- Время на странице
Наш обход:
- Задержки:
time.sleep(1.5-3) - Естественная навигация
- Случайные интервалы
Что проверяет Озон:
- Тип IP (датацентр/резидент/мобильный)
- Количество запросов с IP
- Блеклист IP
Наш обход:
- Ротация прокси
- Очистка cookies
- Изоляция профилей
- Мобильные прокси (лучшая репутация)
Что проверяет Озон:
- TLS/SSL handshake
- Cipher suites
- Тип клиента
Наш обход:
seleniumwire_options = {
'verify_ssl': False,
'suppress_connection_errors': True
}┌─────────────────────────────────────┐
│ GUI (ozon_gui.py) │
│ Tkinter интерфейс │
└─────────────┬───────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Пул браузеров (5 потоков) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │Browser│ │Browser│ │Browser│ │
│ │ #0 │ │ #1 │ │ #2 │ ...│
│ └────────┘ └────────┘ └────────┘ │
└─────────────┬───────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Очередь задач (Queue) │
│ URL1 → URL2 → URL3 → ... │
└─────────────┬───────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Парсинг отзывов (JS) │
│ • data-review-uuid поиск │
│ • Извлечение данных │
│ • Сбор медиа │
└─────────────┬───────────────────────┘
│
↓
┌─────────────────────────────────────┐
│ Сохранение JSON (results/) │
│ Product_YYYYMMDD_HHMMSS.json │
└─────────────────────────────────────┘
ozon-review-parser/
├── ozon_parser.py # Основной парсер
├── ozon_gui.py # GUI интерфейс
├── requirements.txt # Зависимости
├── README.md # Документация
├── .gitignore # Git исключения
├── urls.txt # Ваши URL (создайте)
├── proxies.txt # Ваши прокси (опционально)
├── chrome_profile_browser_*/ # Профили (авто)
└── results/ # Результаты (авто)
└── *.json
[
{
"review_uuid": "1234567890",
"author": "Иван П.",
"date": "15 января 2026",
"rating": 5,
"text": "Отличная машина! Работает тихо...",
"images": [
"https://ir.ozone.ru/s3/rp-photo-1/wc1200/abc.jpg"
],
"videos": [
"https://vr-1.ozone.ru/sashimi/video-1/XYZ/asset.mp4"
]
}
]Для продвинутых пользователей:
python ozon_parser.pyНастройка в коде:
# ozon_parser.py - в начале файла
BROWSER_POOL_SIZE = 5
CLEAR_COOKIES_AFTER_PRODUCT = True
PROXY_MODE = "rotation" # "none", "single", "rotation"
PROXY_ROTATION_POOL = [
"socks5://user:pass@proxy.com:8080",
]
ROTATION_INTERVAL = 5
ROTATION_MODE = "random"Пишите в тг - @sotovs
KalmikOF
- GitHub: @KalmikOF
Если проект помог вам, поставьте ⭐️ на GitHub!