Как настроить Puppeteer Stealth чтобы обходить антибот-защиты

Puppeteer

Сайты научились определять ботов. Cloudflare, антиспам-системы и скрипты вычисляют Puppeteer, если не настроить его правильно. Результат? Баны, капчи и невозможность собрать данные. Эта статья покажет, как включить Stealth-режим в Puppeteer, чтобы бот выглядел как обычный пользователь и обходил защиту.

Stealth-режим Puppeteer маскирует бота под настоящего пользователя: добавляет отпечатки браузера, симулирует движение мыши и скрывает следы автоматизации. В этой статье разберемся:

  • Как установить и активировать Puppeteer Stealth.
 
  • Какие плагины и настройки нужны для обхода антибот-защит.
  • Как протестировать работу и убедиться, что вас не блокируют.

Вы узнаете, как настроить Puppeteer так, чтобы он обходил сложные защиты, а скрипты работали без перебоев.

Puppeteer

Установка Puppeteer и активация Stealth-режима

Чтобы настроить Puppeteer Stealth, нужно установить библиотеку, подключить плагин puppeteer-extra-plugin-stealth и настроить параметры запуска. Все просто.

Установите Puppeteer и пакеты

Откройте терминал CMD в Windows и введите команды для установки Puppeteer и дополнительных плагинов:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

  • puppeteer — основная библиотека для работы с Chrome.
  • puppeteer-extra — расширение для интеграции плагинов.
  • puppeteer-extra-plugin-stealth — плагин, который скрывает признаки автоматизации.

Puppeteer в базовой версии выдает себя: передает заголовки вроде HeadlessChrome и оставляет следы, которые легко обнаруживаются. Плагин Stealth решает эту проблему.

Подключите Stealth

Создайте файл index.js и настройте подключение плагина. Вот пример кода:

const puppeteer = require('puppeteer-extra');

const StealthPlugin = require('puppeteer-extra-plugin-stealth');

 

// Подключаем Stealth-плагин

puppeteer.use(StealthPlugin());

 

(async () => {

    const browser = await puppeteer.launch({ headless: true });

    const page = await browser.newPage();

 

    // Переходим на сайт для теста

    await page.goto('https://bot.sannysoft.com/');

    await page.screenshot({ path: 'result.png' });

 

    console.log('Проверка завершена. Снимок экрана сохранен.');

    await browser.close();

})();

Этот код запустит браузер в Stealth-режиме и покажет, насколько ваш бот маскируется как обычный пользователь.

Puppeteer Stealth

Настройте дополнительные параметры запуска

Чтобы бот выглядел ещё правдоподобнее, добавьте параметры запуска браузера. Например:

const browser = await puppeteer.launch({

    headless: true,

    args: [

        '--no-sandbox',

        '--disable-setuid-sandbox',

        '--disable-dev-shm-usage',

        '--disable-accelerated-2d-canvas',

        '--disable-gpu'

    ]

});

Эти параметры уменьшают нагрузку на систему и помогают обходить некоторые защиты.

Параметры вроде --no-sandbox и --disable-gpu делают браузер быстрее и устраняют потенциальные конфликты с серверами.

Проверьте работу на защищенных сайтах

После настройки нужно протестировать Puppeteer. Вот несколько сайтов, где можно проверить, работает ли маскировка:

  • bot.sannysoft.com — тестирует поведение бота.
  • whatismybrowser.com — показывает, как выглядит ваш браузер для сайта.
  • httpbin.org/headers — проверяет отправляемые заголовки.

настроить Puppeteer Stealth

Настройка Puppeteer Stealth с прокси

Без прокси работа с Puppeteer ограничивается одним IP. Если отправляете слишком много запросов, ваш IP попадет под бан. Подключение прокси решает эту проблему: запросы отправляются с разных адресов. Так маскируется ваша работа.

Выбор подходящего прокси

Перед подключением прокси нужно выбрать, какой тип подойдет для вашей задачи:

  • Серверные прокси — обеспечивают высокую скорость и стабильность, полезны для массового парсинга.
  • Мобильные прокси — помогают обойти антибот-защиты, так как используют реальные IP-адреса мобильных операторов.

Подключение прокси в Puppeteer

Простое подключение прокси выполняют через аргумент --proxy-server в настройках браузера. Вот пример кода:

const puppeteer = require('puppeteer-extra');

const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

(async () => {

    const browser = await puppeteer.launch({

        headless: true,

        args: ['--proxy-server=http://username:password@proxy_address:port']

    });

    const page = await browser.newPage();

    await page.goto('https://whatismyipaddress.com/');

    await page.screenshot({ path: 'proxy-test.png' });

    console.log('Запрос через прокси выполнен. Снимок экрана сохранен.');

    await browser.close();

})();

В --proxy-server подставьте адрес прокси, логин и пароль (если они требуются). Например: http://user:pass@192.168.1.1:8080.

Ротация прокси для парсинга

Для обхода лимитов по IP нужно менять прокси на каждом запросе. Это делают с помощью пула прокси. Вот пример кода для ротации:

const proxyList = [

    'http://user1:pass1@proxy1_address:port',

    'http://user2:pass2@proxy2_address:port',

    'http://user3:pass3@proxy3_address:port'

];

const getRandomProxy = () => proxyList[Math.floor(Math.random() * proxyList.length)];

(async () => {

    for (let i = 0; i < 5; i++) {

        const proxy = getRandomProxy();

        const browser = await puppeteer.launch({

            headless: true,

            args: [`--proxy-server=${proxy}`]

        });

        const page = await browser.newPage();

        await page.goto('https://httpbin.org/ip');

        console.log(`Запрос выполнен через прокси: ${proxy}`);

        await browser.close();

    }

})();

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

Тестирование стабильности прокси

Перед использованием обязательно проверьте работоспособность прокси:

  • Загрузите несколько страниц подряд через один прокси, чтобы убедиться в его стабильности.
  • Проверьте скорость соединения — слишком медленные прокси могут замедлить весь процесс.
  • Убедитесь, что прокси подходит для целевого региона. Например, если данные доступны только для пользователей из США, используйте американские IP.

Тестирование Puppeteer Stealth и устранение ошибок

После настройки Puppeteer Stealth с прокси важно убедиться, что все работает корректно. Ошибки могут проявляться в самых разных формах: от отказов в доступе до неожиданного поведения браузера. Этот этап тестирования поможет выявить и устранить такие проблемы, чтобы ваши скрипты работали стабильно.

Проверка маскировки через тестовые сайты

Самый простой способ убедиться, что Stealth-режим настроен правильно — использовать тестовые сайты, которые определяют ботов:

  • bot.sannysoft.com — сайт проверяет поведение браузера на соответствие реальному пользователю.
  • whatismybrowser.com — показывает информацию о вашем браузере, включая версию, отпечаток (fingerprint) и наличие следов автоматизации.
  • httpbin.org/headers — возвращает заголовки HTTP-запросов, позволяя проверить, какие данные передаются.

Puppeteer Stealth настройка

Пример кода для проверки на bot.sannysoft.com:

const puppeteer = require('puppeteer-extra');

const StealthPlugin = require('puppeteer-extra-plugin-stealth');

 

puppeteer.use(StealthPlugin());

 

(async () => {

    const browser = await puppeteer.launch({ headless: true });

    const page = await browser.newPage();

 

    await page.goto('https://bot.sannysoft.com/');

    await page.screenshot({ path: 'stealth-test.png' });

 

    console.log('Проверка завершена. Снимок экрана сохранен.');

    await browser.close();

})();

После тестирования и устранения ошибок вы получите полностью настроенный инструмент, способный обходить антибот-системы и прокси-блокировки. В следующем разделе мы подведем итоги и дадим дополнительные советы по оптимизации работы Puppeteer Stealth.