Puppeteer Guide

Посібник із фінгерпринтингу в Puppeteer: покроково та просто!

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

Що таке браузерний фінгерпринтинг?

Браузерний фінгерпринтинг Це метод, який вебсайти використовують, щоб зібрати інформацію про ваш пристрій і браузер та створити унікальний профіль користувача. Цей профіль, або «відбиток», формується шляхом збирання таких даних:

  • Тип і версія браузера: Інформація про браузер, яким ви користуєтеся, зокрема номер його версії.
  • Операційна система: Відомості про вашу операційну систему, наприклад чи ви використовуєте Windows, macOS або Linux.
  • Роздільна здатність екрана: Розміри екрана вашого пристрою.
  • Встановлені плагіни: Список плагінів, установлених у вашому браузері.
  • Timezone: Поточний часовий пояс вашого пристрою.
  • Налаштування мови: Мова, яку використовує ваш браузер.
  • Fonts: Шрифти, встановлені у вашій системі.

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

Як Puppeteer можна використовувати для зняття цифрового відбитка браузера

Puppeteer — це потужний інструмент, який дає розробникам змогу автоматизувати браузери на кшталт Chrome та Chromium. Його широко використовують для вебскрапінгу, автоматизованого тестування та моніторингу продуктивності. Однак його також можна використовувати для імітації або маніпулювання цифровими відбитками браузера, тож це і інструмент для їх створення, і для боротьби з ними.

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

Пом’якшення фінгерпринтингу в Puppeteer

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

Використовуйте Stealth-плагін

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

Щоб використовувати цей плагін, встановіть його через npm і додайте до свого скрипта Puppeteer:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
})();

Randomize Your User-Agent

The User-Agent Рядок User-Agent є ключовим параметром, який використовують під час формування цифрового відбитка браузера. Він повідомляє сайтам, який браузер і операційну систему ви використовуєте. За замовчуванням Puppeteer використовує типовий User-Agent, який легко розпізнати як бот. Щоб уникнути цього, слід випадково змінювати рядок User-Agent для кожної сесії.

Ось як можна задати власний User-Agent у Puppeteer:

await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');

Ви можете генерувати випадкові User-Agent за допомогою бібліотек на кшталт user-agents або вручну вибирати їх зі списку популярних User-Agent.

Mimic Human Interaction

Автоматизований перегляд це можна виявити за швидкістю та патернами взаємодії. Поведінка людей різниться — вони можуть зробити паузу перед натисканням на посилання або рухати мишу нелінійно. Щоб уникнути виявлення, можна запрограмувати Puppeteer так, щоб він імітував таку людську поведінку.

Наприклад, ви можете додавати затримки між діями, щоб імітувати людський час реакції:

await page.click('#some-button', {delay: 100});

You can also use the page.mouse API to move the mouse in a natural way:

await page.mouse.move(100, 200);
await page.mouse.down();
await page.mouse.move(200, 300);
await page.mouse.up();

Rotate IP Addresses

Ротація IP-адреси Ще один ефективний спосіб уникнути фінгерпринтингу. Якщо ви використовуєте одну й ту саму IP-адресу в кількох сесіях, сайти можуть легко пов’язати вашу активність між собою. Завдяки ротації IP-адрес ви ускладнюєте сайтам відстеження ваших дій.

Ви можете реалізувати ротацію IP-адрес, використовуючи проксі-сервіси з Puppeteer. Багато проксі-сервісів пропонують Резидентські проксі or дата-центр проксі, які можна інтегрувати з Puppeteer, щоб змінювати IP-адресу в кожному сеансі.

Ось як налаштувати проксі в Puppeteer:

const browser = await puppeteer.launch({
args: [' - proxy-server=your-proxy-server:port']
});

Block JavaScript Fingerprinting

Some websites use JavaScript to collect fingerprinting data, such as canvas fingerprinting, WebGL information, or audio context. You can block these scripts by using Puppeteer’s page.setRequestInterception method to intercept and block specific requests.

Наприклад:

await page.setRequestInterception(true);
page.on('request', (request) => {
if (запит.resourceType() === 'script') {
request.abort();
} else {
request.continue();
}
});

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

Spoof Browser Properties

Наостанок, підміна властивостей браузера може допомогти уникнути виявлення. За допомогою Puppeteer можна змінювати або приховувати певні властивості, наприклад об'єкт navigator, щоб ваш браузер виглядав менш автоматизованим.

For example, you can spoof the navigator.webdriver property, which is often used to detect Puppeteer:

await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => false,
});
});

Conclusion

Зняття відбитка браузера — потужна техніка відстеження, і як звичайному користувачу Puppeteer, вам критично важливо зменшувати її ризики. Я застосовую такі підходи, як використовуючи stealth-плагіни, рандомізуючи User-Agent, імітуючи людську поведінку, змінюючи IP-адреси, блокуючи скрипти зняття браузерного відбитка та підміняючи властивості браузера, щоб захистити мою ідентичність. Ці кроки гарантують, що мої сеанси Puppeteer залишатимуться захищеними та невиявними, даючи мені змогу впевнено виконувати свої завдання.

Хочете побачити інші посібники зі зняття відбитка браузера? Напишіть у коментарях!

Схожі записи