Как использовать puppeteer-humanize для веб-скрапинга
В этом руководстве я покажу, как настроить puppeteer-humanize настроить его, использовать его и рассказать о его ограничениях — и о том, когда переходить на такие инструменты, как Яркие данные.
Что такое puppeteer-humanize?
Puppeteer-humanize — это Node.js библиотека, которая делает ввод более похожим на человеческий при использовании Puppeteer. Она не меняет поведение браузера в целом, но улучшает то, как ваш бот заполняет текстовые поля, например поля для логина и пароля в формах входа.
Вот что делает puppeteer-humanize:
- Вводит символы со случайными задержками
- Добавляет опечатки при вводе и исправляет их клавишей Backspace
- Имитирует нажатие клавиши пробела
- Делает заполнение форм более естественным
Почему сайты обнаруживают Puppeteer
При использовании Puppeteer вы управляете браузером с помощью кода. Это может приводить к паттернам поведения, которые сайты легко распознают. Вот несколько примеров поведения, похожего на бота:
- Всегда вводит текст с одной и той же скоростью
- Нет ошибок при вводе
- Мгновенно кликает по элементам
- Курсор движется неестественно
- Прокрутка фиксированными шагами
- Не реагирует на всплывающие окна или динамические изменения
Антибот-системы могут использовать эти сигналы, чтобы заблокировать ваш скрапер, даже если вы авторизованы или используете прокси. Поэтому важно, чтобы ваша автоматизация вела себя как реальный пользователь.
Установка puppeteer-humanize
Чтобы использовать puppeteer-humanize, нужно установить его вместе с Puppeteer Extra и stealth-плагином, помогающим снизить вероятность обнаружения.
Вот как установить все необходимое:
npm install @forad/puppeteer-humanize puppeteer-extra puppeteer-extra-plugin-stealth
- @forad/puppeteer-humanize: модуль для улучшения поведения при вводе
- puppeteer-extra: обёртка для Puppeteer, позволяющая подключать плагины
- puppeteer-extra-plugin-stealth: скрывает отпечаток Puppeteer
Настройка скрапера
Let’s build a simple scraper that visits a login page and enters credentials using puppeteer-humanize.
Create a file named scraper.js:
const { typeInto } = require('@forad/puppeteer-humanize');
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
Теперь запустим браузер и откроем форму входа:
(async () => {
попробуйте {
const browser = ожидайте puppeteer.launch({ headless: true });
const page = ожидайте browser.newPage();
ожидайте page.goto('https://www.scrapingcourse.com/login/cf-turnstile');
const emailInput = ожидайте page.$('#email');
const passwordInput = ожидайте page.$('#password');
const submitButton = ожидайте page.$('#submit-button');
если (emailInput && passwordInput) {
const config = {
mistakes: {
chance: 8,
delay: {
min: 50,
max: 500,
},
},
delays: {
space: {
chance: 70,
min: 10,
max: 50,
},
},
};
ожидайте typeInto(emailInput, '[email protected]', config);
ожидайте typeInto(passwordInput, 'password123', config);
ожидайте page.waitForTimeout(2000); // simulate thinking time
ожидайте submitButton.click();
ожидайте page.screenshot({ path: 'screenshot.png' });
} else {
console.log('One or more form fields not found.');
}
ожидайте browser.close();
} catch (error) {
console.error('Error:', error);
}
})();
Понимание конфигурации
Объект конфигурации, передаваемый в typeInto(), определяет, насколько ваш ввод должен выглядеть как человеческий.
ошибки
Это задает, как часто скрипт будет допускать опечатки.
mistakes: {
chance: 8, // 8% chance of a mistake
delay: { min: 50, max: 500 } // delay before correcting
}
Бот введет неправильную букву и исправит ее с помощью Backspace, как человек.
задержки
Это управляет задержкой между символами, особенно пробелами:
delays: {
space: {
chance: 70,
min: 10,
max: 50,
}
}
Это имитирует паузу при нажатии клавиши пробела или переходе между словами.
Скриншоты и результаты
После запуска скрипта будет сохранён снимок экрана с заполненной формой. Если на сайте есть простая антибот-защита, этого инструмента может хватить, чтобы пройти её.
Однако на более продвинутых антибот-сайтах, например тех, что используют Cloudflare или Turnstile, ваш скрейпер всё равно может быть заблокирован. Это связано с тем, что puppeteer-humanize улучшает только ввод — не влияет на отпечаток браузера, IP-поведение или JavaScript-проверки.
Распространённые проблемы и способы их устранения
Проблема: селекторы не найдены
Проверьте структуру сайта с помощью DevTools. Убедитесь, что ID или классы для полей ввода и кнопок указаны верно.
Проблема: блокировка CAPTCHA
Puppeteer-humanize не решает CAPTCHA. Вы можете попытаться решить их с помощью внешних сервисов, например 2Captcha или Решатель CAPTCHA от Bright Data, но это добавляет сложности.
Проблема: блокировка сохраняется после имитации человеческого ввода
Это означает, что сайт использует более продвинутые методы, такие как снятие отпечатка браузера, отслеживание IP-адреса или проверка canvas. Вам понадобится нечто большее, чем puppeteer-humanize.
Ограничения puppeteer-humanize
Хотя puppeteer-humanize полезен, это не полноценное решение против ботов. Вот несколько ключевых ограничений:
- Limited Scope
Он лишь имитирует ввод текста. Он не помогает с движениями мыши, прокруткой или взаимодействием со всплывающими окнами. - Outdated
Библиотека не обновлялась уже много лет. Появляются новые антибот-технологии, и puppeteer-humanize уже может быть недостаточно. - No IP Protection
Сайты могут блокировать ваш скрейпер по IP-адресу. puppeteer-humanize не скрывает и не ротирует ваш IP. - No Fingerprint Spoofing
Он не меняет отпечаток браузера. Сайты по-прежнему понимают, что имеют дело с ботом. - Не справляется с JavaScript-проверками
Если сайт использует JavaScript-головоломки или проверки безопасности, ваш скрейпер может не суметь загрузить страницу.
Лучший вариант: использовать Bright Data или других провайдеров прокси
Тем, кому нужно скрапить сайты с продвинутой защитой, стоит рассмотреть Bright Data (ранее Luminati). Bright Data — это провайдер прокси премиум-класса и компания, предоставляющая инфраструктуру для скрапинга. Она предлагает:
- Резидентские и мобильные IP-адреса из миллионов локаций
- Защита от отпечатка браузера
- Управление сессиями
- Автоматическое решение CAPTCHA
- JavaScript-рендеринг
Хотите почитать о других провайдерах? Посмотрите мой список лучшие прокси-провайдеры.
Простой пример с Bright Data:
const кукловод = требуется('puppeteer');
(async () => {
const браузер = ожидайте кукловод.запуск({
headless: true,
args: [
' - proxy-server=http://:@brd.superproxy.io:33335',
],
});
const страница = ожидайте браузер.newPage();
ожидайте страница.перейти по ссылке('https://example.com');
const content = ожидайте страница.содержание();
консоль.журнал(content);
ожидайте браузер.закрыть();
})();
Подставьте свои учетные данные Bright Data. Это даст вам доступ к реальным IP-адресам, помогая обходить геоблокировку и защиту на основе браузерного отпечатка.
Заключение
Puppeteer-humanize — полезный инструмент, который заставляет ваш скрейпер набирать текст как реальный человек. Он добавляет задержки, ошибки и исправления, чтобы ввод выглядел более естественно. Это может помочь избежать простых систем обнаружения ботов, которые отслеживают идеальный ввод. Однако у puppeteer-humanize есть ограничения. Он не скрывает ваш IP-адрес, не может изменить отпечаток браузера и не решает CAPTCHA.
Так что если вы скрапите сайты с серьёзной защитой, вам понадобится не только этот инструмент. Но для базовых задач скрапинга, таких как заполнение форм входа или сбор общедоступных данных, это простой и полезный способ сделать вашего бота более похожим на реального пользователя.

