Как парсить Золотое Яблоко и обойти блокировки

    Парсинг интернет-магазина «Золотое Яблоко» - сложная задача из-за агрессивной антибот-защиты. Сервер блокирует запросы к API и страницам товаров, даже при использовании Selenium и прокси. В этой статье разберём основные причины блокировок и эффективные способы их обхода.

    Почему сервер блокирует запросы?

    Сайт использует многоуровневую защиту: анализ User-Agent, проверку заголовков (Referer, Origin), ограничение по IP и детект автоматизированных браузеров. Даже при корректных заголовках запросы могут отклоняться из-за несоответствия «цифрового отпечатка» (fingerprinting).

    Обход блокировок API Золотого Яблока

    Прямой вызов скрытого API (https://goldapple.ru/front/api/catalog/product-card/base/v2) часто приводит к ошибке 403. Чтобы успешно получать JSON с данными о товаре, необходимо:

    • Использовать реальные cookies и сессии, полученные через браузер. Без них сервер считает запрос ботом.
    • Эмулировать заголовки в точности как у браузера: Accept, Accept-Language, Referer, Origin.
    • Добавить задержки между запросами (1-3 секунды) и случайные паузы.
    • Применять ротацию прокси высокого качества (резидентные или мобильные IP).

    Настройка Selenium для парсинга

    Selenium с headless-режимом легко детектится. Для обхода используйте:

    • undetected-chromedriver - библиотека, скрывающая признаки автоматизации.
    • Случайный User-Agent и разрешение экрана.
    • Эмуляцию действий мыши (движения, клики) через ActionChains.
    • Отключение WebDriver-флагов (navigator.webdriver).

    Работа с прокси

    Простые HTTP/HTTPS прокси часто уже заблокированы. Лучшие варианты:

    • Резидентные прокси - IP реальных пользователей, минимальный риск блокировки.
    • Мобильные прокси - сложнее детектятся.
    • Прокси-ротаторы с автоматической сменой IP после каждого запроса.

    Перед использованием обязательно тестируйте прокси через httpbin.org/ip или аналогичные сервисы.

    Пример рабочего кода

    Ниже - улучшенная версия скрипта с undetected-chromedriver и ротацией User-Agent:

    import undetected_chromedriver as uc
    from selenium.webdriver.common.by import By
    import time
    import random
    
    driver = uc.Chrome()
    driver.get('https://goldapple.ru/88800900003-pinup-liquid-eyeliner')
    time.sleep(random.uniform(5, 8))
    
    try:
        button = driver.find_element(By.CSS_SELECTOR, 'button[data-testid="addToCart"]')
        print('Товар в наличии')
    except:
        print('Товара нет в наличии')
    
    driver.quit()

    Для API используйте requests с сессией и cookies, полученными после первого визита на сайт.

    Альтернативные методы

    Если обход блокировок слишком сложен, рассмотрите:

    • Покупку данных через официальные партнёрские API - если доступно.
    • Использование сервисов-парсеров (ScrapingBee, ScraperAPI) - они решают проблемы с прокси и капчей.
    • Ручной сбор данных для малого объёма.

    Парсинг «Золотого Яблока» требует комплексного подхода: качественные прокси, эмуляция реального пользователя и современные инструменты антидетекта. Начните с undetected-chromedriver и ротации заголовков.

    Часто задаваемые вопросы