Как настроить Puppeteer Stealth чтобы обходить антибот-защиты
Сайты научились определять ботов. Cloudflare, антиспам-системы и скрипты вычисляют Puppeteer, если не настроить его правильно. Результат? Баны, капчи и невозможность собрать данные. Эта статья покажет, как включить Stealth-режим в Puppeteer, чтобы бот выглядел как обычный пользователь и обходил защиту.
Stealth-режим Puppeteer маскирует бота под настоящего пользователя: добавляет отпечатки браузера, симулирует движение мыши и скрывает следы автоматизации. В этой статье разберемся:
- Как установить и активировать Puppeteer Stealth.
- Какие плагины и настройки нужны для обхода антибот-защит.
- Как протестировать работу и убедиться, что вас не блокируют.
Вы узнаете, как настроить 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-режиме и покажет, насколько ваш бот маскируется как обычный пользователь.
Настройте дополнительные параметры запуска
Чтобы бот выглядел ещё правдоподобнее, добавьте параметры запуска браузера. Например:
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 ограничивается одним 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-запросов, позволяя проверить, какие данные передаются.
Пример кода для проверки на 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.