Scarnox · Blog

Browser fingerprinting пояснено для скраперів

Browser fingerprinting — це ідентифікація відвідувача за сукупністю ознак його браузера, а не за cookie чи обліковим записом. Сайти використовують його, щоб впізнавати тих, хто повертається, виявляти шахрайство і розпізнавати автоматизацію. Якщо ви скрапите веб, ви з ним зіткнетеся. Цей посібник пояснює, що саме вимірюється, чому навіть одна невідповідність створює проблеми, і як тримати один узгоджений, добропорядний профіль для збору публічних даних. Він також пояснює межі того, що може і має робити тюнінг відбитка.

З чого складається відбиток

Жодне окреме значення не визначає браузер, але багато дрібних значень разом часто визначають. Типові вхідні дані:

Скрипти для fingerprinting об'єднують ці ознаки в хеш або оцінку. Чим більше стабільних і незвичних сигналів, тим більш ідентифікувальним є результат.

Чому невідповідність помітна

Справжній браузер внутрішньо узгоджений. Його операційна система відповідає його шрифтам, часовий пояс відповідає мовному налаштуванню, а розмір екрана відповідає пристрою, на якому він працює. Скрапери часто порушують цю узгодженість, навіть не маючи такого наміру:

Кожна невідповідність — це малий сигнал. Разом вони можуть перевести запит із категорії «звичайний відвідувач» у категорію «треба придивитися».

Крок 1: виміряйте власне налаштування

Ви можете побачити, що сторінка дізнається про ваш клієнт, завантаживши тестову сторінку для fingerprinting, яку ви контролюєте, або локальну діагностичну сторінку. Подивіться на значення і запитайте себе, чи описують вони одну узгоджену машину. Ось мінімальний приклад Playwright, який виводить кілька з них:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
    page = context.new_page()
    page.goto("https://example.com")  # замініть на сторінку, якою володієте
    print(page.evaluate("""() => ({
        language: navigator.language,
        timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
        platform: navigator.platform,
        viewport: [innerWidth, innerHeight]
    })"""))
    browser.close()

Крок 2: одна ідентичність на профіль

Найкорисніша звичка — вважати кожну ідентичність для скрапінгу одним профілем. Задайте їй один набір ознак і зберігайте його протягом усього її життя:

Міняти одну з цих ознак при кожному запиті підозріліше, ніж тримати їх сталими. Саме послідовність робить профіль схожим на звичайний.

Крок 3: темп профілю має бути як у відвідувача

Fingerprinting — лише один вхідний сигнал. Сайти також дивляться, як швидко один профіль рухається сайтом. Профіль, який за хвилину завантажує двісті сторінок товарів, не є людиною, яким би не був його відбиток. Розподіляйте запити, кешуйте результати і зупиняйтеся, коли сторінка вказує на це. Чек-лист скрапінгу без блокування детальніше описує темп.

Крок 4: знайте межі

Тюнінг відбитка не може зробити автоматизований профіль схожим на людину, якої там немає. Сайти, що покладаються на fingerprinting, зазвичай поєднують його з лімітами частоти, перевірками облікових записів і часом з капчею. Коли з'являється капча, вам потрібен токен від солвера, а не ще один тюнінг відбитка. Живий тип капчі в Scarnox — PopularCaptcha; посібник з PopularCaptcha на Python показує запит. Ширшу картину того, які віджети існують, дає огляд типів капчі.

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

Scrape responsibly

Куди йти далі

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

Почніть з безкоштовного пробного кредиту, картка не потрібна: створіть обліковий запис і спробуйте процес PopularCaptcha на сторінці, якою володієте. Актуальні тарифи — на сторінці цін.

Наступні кроки