Scarnox · Blog

Browser-fingerprinting uitgelegd voor scrapers

Browser-fingerprinting is het identificeren van een bezoeker aan de hand van de gecombineerde kenmerken van zijn browser, niet via een cookie of een account. Sites gebruiken het om terugkerende bezoekers te herkennen, fraude op te sporen en automatisering te herkennen. Als je het web scraped, kom je er vroeg of laat mee in aanraking. Deze gids legt uit wat er wordt gemeten, waarom één afwijking problemen veroorzaakt, en hoe je één consistent, goed gedragend profiel houdt voor het verzamelen van publieke data. Hij legt ook de grenzen uit van wat het afstemmen van een fingerprint kan en mag doen.

Waaruit een fingerprint bestaat

Geen enkele waarde identificeert een browser op zich, maar veel kleine waarden samen vaak wel. Veelvoorkomende invoer zijn:

Fingerprinting-scripts combineren deze tot een hash of een score. Hoe meer signalen stabiel en ongebruikelijk zijn, hoe identificerender het resultaat.

Waarom een afwijking opvalt

Een echte browser is intern consistent. Het besturingssysteem past bij de lettertypen, de tijdzone past bij de taalinstelling, en de schermgrootte past bij het apparaat waarop hij draait. Scrapers breken die consistentie vaak zonder dat ze het willen:

Elke afwijking is een klein signaal. Samen kunnen ze een verzoek verschuiven van "gewone bezoeker" naar "moet nader bekeken worden".

Stap 1: meet je eigen opzet

Je kunt zien wat een pagina over je client te weten komt door een fingerprinttestpagina te laden die je beheert, of een diagnosepagina die je lokaal draait. Bekijk de waarden en vraag je af of ze één coherente machine beschrijven. Hier is een minimaal Playwright-voorbeeld dat er enkele afdrukt:

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")  # vervang door een pagina die je beheert
    print(page.evaluate("""() => ({
        language: navigator.language,
        timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
        platform: navigator.platform,
        viewport: [innerWidth, innerHeight]
    })"""))
    browser.close()

Stap 2: houd één identiteit per profiel

De nuttigste gewoonte is om elke scrape-identiteit als één profiel te behandelen. Geef het één set kenmerken en houd die voor de hele levensduur:

Eén van deze kenmerken voor elk verzoek veranderen is verdachter dan ze stabiel houden. Consistentie is wat een profiel gewoon laat lijken.

Stap 3: laat het profiel zich gedragen als een bezoeker

Fingerprinting is maar één input. Sites letten ook op hoe snel één profiel door de site beweegt. Een profiel dat in een minuut tweehonderd productpagina's laadt, is geen mens, wat de fingerprint ook zegt. Spreid verzoeken, cache resultaten, en stop wanneer een pagina aangeeft dat je moet stoppen. De checklist scrapen zonder geblokkeerd te worden behandelt het tempo in meer detail.

Stap 4: ken de grenzen

Het afstemmen van fingerprints kan een geautomatiseerd profiel niet laten lijken op een persoon die er niet is. Sites die op fingerprinting vertrouwen, combineren het meestal met snelheidslimieten, accountcontroles en soms een captcha. Wanneer een captcha verschijnt, heb je een token van een solver nodig en niet nog meer fingerprint-aanpassingen. Het live captchatype bij Scarnox is PopularCaptcha; de PopularCaptcha Python-gids laat het verzoek zien. Voor het bredere beeld van welke widgets bestaan, lees je soorten captcha uitgelegd.

Belangrijker nog: fingerprint-omzeiling is geen vergunning om de regels van een site te negeren. Als de eigenaar automatische toegang heeft beperkt, is het juiste om te stoppen, niet om je profiel moeilijker op te laten vallen. Fingerprinting is ook een privacykwestie. Sommige sites gebruiken het om mensen over bezoeken heen te volgen, en dat is een reden te meer om alleen te verzamelen wat je project nodig heeft.

Scrape verantwoord

Waar je hierna naartoe gaat

Als je doel achter een controle op browserniveau zit, begin dan met headless-browserdetectie, die de signalen behandelt die specifiek zijn voor geautomatiseerde browsers. Pagina's die JavaScript nodig hebben om hun inhoud te tonen, worden behandeld in JavaScript-websites scrapen.

Begin met gratis proefcredit, zonder creditcard: maak een account aan en probeer de PopularCaptcha-flow op een pagina die je beheert. Voor actuele tarieven zie de prijzenpagina.

Volgende stappen