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

Як використовувати puppeteer-humanize для вебскрапінгу

У цьому посібнику я покажу, як налаштувати puppeteer-humanize налаштувати його, використати та обговорити його обмеження — а також коли переходити на інструменти на кшталт Bright Data.

Що таке 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 () => {
try {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://www.scrapingcourse.com/login/cf-turnstile');
const emailInput = await page.$('#email');
const passwordInput = await page.$('#password');
const submitButton = await page.$('#submit-button');
if (emailInput && passwordInput) {
const config = {
mistakes: {
chance: 8,
delay: {
min: 50,
max: 500,
},
},
delays: {
space: {
chance: 70,
min: 10,
max: 50,
},
},
};
await typeInto(emailInput, '[email protected]', config);
await typeInto(passwordInput, 'password123', config);
await page.waitForTimeout(2000); // simulate thinking time
await submitButton.click();
await page.screenshot({ path: 'screenshot.png' });
} else {
console.log('Не знайдено одне або кілька полів форми.');
}
await browser.close();
} catch (error) {
console.error('Error:', error);
}
})();

Розуміння конфігурації

Об’єкт конфігурації, переданий до typeInto(), визначає, наскільки природним має бути ваш набір тексту.

mistakes

Це визначає, як часто скрипт робить друкарську помилку.

mistakes: {
chance: 8, // 8% chance of a mistake
delay: { min: 50, max: 500 } // delay before correcting
}

Бот введе неправильну літеру й виправить її клавішею Backspace, як це робить людина.

delays

Це регулює затримку між символами, особливо на пробілах:

delays: {
space: {
chance: 70,
min: 10,
max: 50,
}
}

Це імітує паузу, коли ви натискаєте клавішу пробілу або переходите між словами.

Скріншоти та результати

Після запуску скрипта буде збережено знімок екрана із заповненою формою. Якщо на сайті є простий захист від ботів, puppeteer-humanize може бути достатнім, щоб його пройти.

Однак на більш просунутих антибот-сайтах, як-от ті, що використовують Cloudflare або Turnstile, ваш вебскрапер усе одно може бути заблокований. Це тому, що puppeteer-humanize покращує лише набір тексту — не браузерні відбитки, не поведінку IP-адреси й не JavaScript-виклики.

Поширені проблеми та способи усунення

Проблема: селектори не знайдено

Перевірте структуру сайту за допомогою DevTools. Переконайтеся, що ID або класи для полів введення й кнопок правильні.

Проблема: заблоковано через CAPTCHA

Puppeteer-humanize не розв’яже CAPTCHA. Можна спробувати розв’язати їх за допомогою зовнішніх сервісів, як-от 2Captcha or Bright Data’s CAPTCHA Solver, але це додає складності.

Проблема: усе ще заблоковано після імітації людського набору тексту

Це означає, що сайт використовує складніші методи, як-от браузерний відбиток, відстеження 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 = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: [
' - proxy-server=http://:@brd.superproxy.io:33335',
],
});
const page = await browser.newPage();
await page.goto('https://example.com');
const content = await page.content();
console.log(content);
await browser.close();
})();

Підставте свої облікові дані Bright Data. Це відкриває доступ до реальних IP-адрес і допомагає обходити геоблокування та виявлення браузерного відбитка.

Conclusion

Puppeteer-humanize — це корисний інструмент, який змушує ваш вебскрапер набирати текст, як справжня людина. Він додає затримки, помилки та виправлення, щоб набір виглядав природніше. Це може допомогти уникнути простих систем виявлення ботів, які орієнтуються на надто ідеальний набір тексту. Водночас у puppeteer-humanize є певні обмеження. Він не приховує вашу IP-адресу, не може змінити браузерний відбиток і не розв’язує CAPTCHA.

Отже, якщо ви займаєтеся вебскрапінгом сайтів із потужним захистом, вам знадобиться щось більше, ніж лише цей інструмент. Але для базових завдань вебскрапінгу, як-от заповнення форм входу чи збір публічних даних, це простий і цінний спосіб зробити вашого бота більш схожим на людину.

Схожі записи