Как мы парсили онлайн-тесты под защитой DDoS-Guard: переход на Playwright

04.02.2026
81
Время чтения: 40 мин
Обновлено: 04.02.2026
Сохранить статью:

Содержание статьи

Введение: когда задача упирается в защиту

В практике веб-разработки и автоматизации нередко встречаются задачи, которые на первый взгляд выглядят стандартно. Одна из них — сбор данных с сайтов онлайн-тестов: вопросы, варианты ответов, результаты прохождения.

Однако всё усложняется, когда сайт защищён корпоративными системами безопасности, такими как DDoS-Guard. Прямые HTTP-запросы перестают работать, IP-адреса быстро блокируются, а классические парсеры оказываются бесполезными.

В этом материале команда GLM-DEV делится практическим опытом автоматизации работы с защищёнными сайтами, рассказывает о переходе с Selenium на Playwright и разбирает архитектуру парсера, имитирующего поведение реального пользователя.

Все приведённые примеры предназначены исключительно для изучения принципов автоматизации и работы защитных механизмов.

Почему мы выбрали Playwright

Изначально для решения задачи использовался Selenium в связке с undetected-chromedriver. В ряде случаев это позволяло обходить базовую защиту, но со временем стали заметны ограничения:

  • высокая ресурсоёмкость;
  • необходимость постоянной ручной донастройки;
  • проблемы со стабильностью;
  • сложная работа с iframe и вкладками.

После анализа альтернатив мы в GLM-DEV перешли на Playwright — современный инструмент автоматизации от Microsoft, ориентированный на реальные сценарии пользовательского поведения.

Сравнение Selenium, Playwright и Puppeteer

Selenium — зрелый и проверенный временем инструмент с огромным сообществом, но с достаточно громоздким API.

Puppeteer хорошо подходит для Chromium-браузеров, однако ограничен по функциональности и поддержке других движков.

Playwright предлагает:

  • единый API для Chromium, Firefox и WebKit;
  • встроенные умные ожидания элементов;
  • более реалистичную эмуляцию браузера;
  • удобную работу с сетью, вкладками и iframe.

Для задач, связанных с защищёнными веб-приложениями, именно Playwright показал наилучший баланс между стабильностью, скоростью и контролем.

Как Playwright помогает работать с защитой DDoS-Guard

Современные системы защиты анализируют не только частоту запросов, но и:

  • browser fingerprint;
  • признаки автоматизации;
  • поведенческие паттерны;
  • сетевую активность.

Playwright позволяет управлять браузерным контекстом на низком уровне и максимально приблизить поведение автоматизации к реальному пользователю.

Пример базовой инициализации браузера:

from playwright.sync_api import sync_playwright

def create_stealth_browser(proxy=None):
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=False,
            args=['--disable-blink-features=AutomationControlled']
        )

        context = browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            locale='ru-RU',
            timezone_id='Europe/Moscow'
        )

        page = context.new_page()
        page.add_init_script("""
            Object.defineProperty(navigator, 'webdriver', {
                get: () => undefined
            });
        """)

        return browser, context, page

Как работает парсер онлайн-тестов

Ниже описана общая архитектура парсера без привязки к конкретному сайту.

Общая логика работы

Парсер автоматически:

  • открывает страницу теста;
  • извлекает структуру вопросов и вариантов ответов;
  • формирует возможные комбинации;
  • отправляет ответы и анализирует результаты;
  • сохраняет данные в файлы для дальнейшего использования.

Все запросы выполняются через прокси, чтобы снизить вероятность блокировок.

Как извлекаются вопросы и варианты ответов

Алгоритм работы парсера:

  1. Открывается страница теста и анализируется HTML.
  2. Определяется заголовок теста (title или h1).
  3. Выполняется поиск блоков вопросов по классам и структуре.
  4. Для каждого вопроса:
    • извлекается текст вопроса;
    • находятся варианты ответов;
    • варианты связываются с идентификаторами.
  5. Вопросы нумеруются по порядку.
  6. Формируется структурированный объект данных.

Результат сохраняется в формате JSON.

Как парсер собирает результаты тестов

Поиск формы теста

Парсер анализирует все формы на странице и выбирает ту, которая содержит максимальное количество вопросов, исключая формы поиска и вспомогательные элементы.

Генерация наборов ответов

Формируются следующие комбинации:

  • минимальная (все первые варианты);
  • максимальная (все последние варианты);
  • медианная;
  • случайные комбинации (обычно около 20).

Отправка и анализ результатов

Для каждого набора:

  • отправляется POST-запрос;
  • парсится страница результата;
  • извлекается текст результата;
  • определяется диапазон и итоговый балл.

Используются регулярные выражения для поиска числовых значений.

Оптимизация и дедупликация

Парсер:

  • предсказывает балл до отправки;
  • отслеживает диапазоны результатов;
  • исключает дубликаты по тексту;
  • сохраняет только уникальные результаты.

Защита от блокировок

В реализации используются базовые защитные меры:

  • циклическая смена прокси;
  • случайные паузы между действиями;
  • повторные попытки при ошибках;
  • остановка при обнаружении капчи или блокировки.

Результат работы парсера

В итоге формируются следующие файлы:

  • data/tests/название_теста.json — структура теста;
  • data/results_full/название_теста.json — все уникальные результаты.

Это позволяет в дальнейшем показывать результат для любого набора ответов без повторных запросов к сайту.

Этика и ответственная автоматизация

Мы в GLM-DEV отдельно подчёркиваем важность ответственного подхода:

  • соблюдение правил сайтов;
  • работа только с публичными данными;
  • ограничение частоты запросов;
  • использование подобных решений исключительно в образовательных целях.

Заключение

Переход на Playwright позволил:

  • сократить объём кода;
  • повысить стабильность;
  • упростить отладку;
  • улучшить эмуляцию реального пользователя.

Playwright сегодня можно считать новым стандартом автоматизации для современных веб-приложений.

Вопросы по теме

Зачем использовать Playwright вместо Selenium?
Можно ли парсить сайты, защищённые DDoS-Guard?
Почему обычные HTTP-запросы не работают?
Какие данные собирает парсер тестов?
Зачем сохранять все результаты теста?
Используется ли прокси в процессе парсинга?
Законно ли использовать такие парсеры?
Подходит ли Playwright для production-задач?
Вам также может понравиться
Yandex Cloud CDN: полное руководство по настройке и оптимизации для ускорения сайта

Yandex Cloud CDN: полное руководство по настройке и оптимизации для ускорения сайта

GLM-DEV представляет новый универсальный онлайн-конвертер файлов

GLM-DEV представляет новый универсальный онлайн-конвертер файлов

Повышение конверсии сайта: эффективные стратегии и техники

Повышение конверсии сайта: эффективные стратегии и техники

LLM.txt и LLM.jsonl: как управлять доступом AI-ассистентов к вашему сайту — новое SEO в эпоху LLM

LLM.txt и LLM.jsonl: как управлять доступом AI-ассистентов к вашему сайту — новое SEO в эпоху LLM

Зачем вашему проекту CI/CD – просто о важном (Continuous Integration/Delivery)

Зачем вашему проекту CI/CD – просто о важном (Continuous Integration/Delivery)

Как выбрать нишу для интернет-проекта: Пошаговое руководство 2025

Как выбрать нишу для интернет-проекта: Пошаговое руководство 2025

Тренды онлайн-бизнеса 2025: актуальные стратегии, практики и инструменты

Тренды онлайн-бизнеса 2025: актуальные стратегии, практики и инструменты

Безопасность веб-сайтов: как защитить свой ресурс от киберугроз

Безопасность веб-сайтов: как защитить свой ресурс от киберугроз

Онлайн-бизнес идеи: как начать успешный проект и что выбрать?

Онлайн-бизнес идеи: как начать успешный проект и что выбрать?

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля помечены *

Поддержка

Есть вопросы? Напишите боту в Telegram.

Прокрутить вверх