puppeteer-humanize для веб-скрейпинга

Как использовать 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 полезен, это не полноценное решение против ботов. Вот несколько ключевых ограничений:

  1. Limited Scope
    Он лишь имитирует ввод текста. Он не помогает с движениями мыши, прокруткой или взаимодействием со всплывающими окнами.
  2. Outdated
    Библиотека не обновлялась уже много лет. Появляются новые антибот-технологии, и puppeteer-humanize уже может быть недостаточно.
  3. No IP Protection
    Сайты могут блокировать ваш скрейпер по IP-адресу. puppeteer-humanize не скрывает и не ротирует ваш IP.
  4. No Fingerprint Spoofing
    Он не меняет отпечаток браузера. Сайты по-прежнему понимают, что имеют дело с ботом.
  5. Не справляется с 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.

Так что если вы скрапите сайты с серьёзной защитой, вам понадобится не только этот инструмент. Но для базовых задач скрапинга, таких как заполнение форм входа или сбор общедоступных данных, это простой и полезный способ сделать вашего бота более похожим на реального пользователя.

Похожие записи