JavaScript-sormenjäljet ja bottien tunnistaminen: Näin verkkosivustot selvittävät henkilöllisyytesi
Tärkeimmät huomiot
- JavaScript-sormenjälkitunnistus kerää yli 50 selaimen ominaisuutta luodakseen uniikin tunnisteen, joka on evästeitä pysyvämpi ja vaikeammin torjuttavissa.
- Keskeisiä sormenjälkitunnistuksen signaaleja ovat Canvas, WebGL, AudioContext, fontit, näytön ominaisuudet sekä navigator-rajapinnan data..
- Bottien vastaiset järjestelmät yhdistävät JS-sormenjälkitunnistuksen TLS-sormenjälkitunnistukseen (JA3/JA4) ja käyttäytymisanalyysiin, jolla saavutetaan erittäin tarkka bottien tunnistus.
- Päätönselaimet (Puppeteer, Playwright) ja automaatiotyökalut jättävät jälkeensä havaittavia jälkiä, jotka sormenjälkitunnistus paljastaa: puuttuvia rajapintoja, identtisiä tulosteita ja ajoituspoikkeamia.
- Sormenjälkien väärentäminen on mahdollista, mutta vaikeutuu jatkuvasti. Bottien vastaiset järjestelmät hyödyntävät yhdenmukaisuustarkistuksia, jotka paljastavat väärennettyjen arvojen ristiriitaisuudet.
Sisällysluettelo
- Mitä on JavaScript-sormenjälkitunnistus?
- Miten selaimen sormenjälkitunnistus toimii?
- Keskeiset sormenjälkitunnistuksen signaalit
- TLS-sormenjälkitunnistus (JA3/JA4)
- Miten bottitorjuntajärjestelmät hyödyntävät sormenjälkitunnistusta?
- Päätönselainten tunnistaminen
- Sormenjälkien väärentäminen ja tunnistuksen torjunta
- Puolustusstrategiat verkkosivustojen omistajille
- Yksityisyysvaikutukset
Jokaisella verkkosivustokäynnillä selaimesi paljastaa huomaamatta kymmeniä ainutlaatuisia ominaisuuksia. Näitä ovat muun muassa näytön tarkkuus, näytönohjaimen malli, asennetut fontit, äänenkäsittelyn erityispiirteet sekä tapa, jolla selaimesi piirtää näkymättömiä canvas-elementtejä. Yhteenlaskettuna nämä signaalit muodostavat selaimen sormenjäljen, joka on yhtä ainutlaatuinen kuin ihmisen sormenjälki.
Tämä teknologia on modernien bottien tunnistusjärjestelmien, petosten ehkäisyn ja automaation torjunnan ytimessä. Sen toiminnan ymmärtäminen on olennaista, olipa kyse sitten verkkosivustosi suojaamisesta boteilta tai sen selvittämisestä, miksi tietyt turvajärjestelmät haastavat liikennettäsi.
Mitä JavaScript-sormenjälkitunnistus tarkoittaa?
JavaScript-sormenjälkitunnistus on menetelmä, jossa selaimen JavaScript-rajapintoja hyödyntäen kerätään laitteen ja ympäristön ominaisuuksia. Näin luodaan jokaiselle selainistunnolle yksilöllinen tunniste. Toisin kuin evästeet, jotka käyttäjät voivat poistaa, tai IP-osoitteet, jotka voivat muuttua, sormenjäljet ovat:
- Pysyvät: Säilyvät evästeiden poiston, yksityisen selaamisen ja selaimen uudelleenkäynnistyksen jälkeen.
- Ainutlaatuiset: Yli 50 signaalin yhdistelmä synnyttää sormenjälkiä, jotka ovat ainutlaatuisia miljoonien selainten joukossa.
- Passiiviset: Tiedonkeruu tapahtuu näkymättömästi, ilman käyttäjän toimenpiteitä.
- Vaikea väärentää: Yhden signaalin muuttaminen aiheuttaa usein havaittavia ristiriitaisuuksia muiden signaalien kanssa.
Miten selaimen sormenjälkitunnistus toimii?
Sormenjälkitunnistusskripti toimii yleensä kolmessa vaiheessa:
- Kerääminen: JavaScript-rajapinnat hakevat selaimen ominaisuuksia: muun muassa navigator-objektin, näytön ominaisuudet, canvas-renderöinnin, WebGL-ominaisuudet ja AudioContext-käsittelyn.
- Tiivistäminen: Kerätyt arvot yhdistetään ja tiivistetään (yleensä SHA-256 tai MurmurHash3) kompaktiksi sormenjälkijonoksi.
- Vertailu: Tiivisteet verrataan tunnettuihin sormenjälkiin, kuten aiemman kävijän, tunnetun bottityökalun tai väärennetyn ympäristön tiivisteisiin.
Keskeiset sormenjälkitunnistuksen signaalit
Canvas-sormenjälkitunnistus
Tämä on tehokkain sormenjälkitunnistuksen signaali. Piilotettu <canvas>-elementti piirtää tekstiä, muotoja ja liukuvärejä. Pikselikohtainen tuloste vaihtelee näytönohjaimen, ajurin version, fontin renderöintimoottorin ja reunojen pehmennyksen toteutuksen mukaan. Kaksi eri laitetta eivät juuri koskaan tuota identtistä canvas-tulostetta.
WebGL-sormenjälki
WebGL paljastaa näytönohjaimen tietoja, kuten valmistajan ja renderöintiyksikön. Se tuottaa myös yksilöllistä renderöintijälkeä. WEBGL_debug_renderer_info-laajennus kertoo tarkan GPU-mallin. Kun nämä yhdistetään WebGL-renderöintitesteihin, saadaan aikaan vahva laitteistosormenjälki.
AudioContext-sormenjälki
Laitteisto- ja ohjelmistoerojen vuoksi Web Audio API käsittelee äänisignaaleja eri tavoin jokaisella laitteella. Kun skripti luo oskillaattorin ja analysoi sen tuottaman äänen, se pystyy tallentamaan laitteen ainutlaatuiset äänenkäsittelyominaisuudet.
Fonttisormenjälki
Eri käyttöjärjestelmäversiot, kielipaketit ja asennetut sovellukset luovat laitteisiin ainutlaatuisia kirjasinkokoelmia. Mittaamalla tekstin renderöinnin leveyttä ja korkeutta eri fonteilla, skriptit pystyvät selvittämään, mitkä fontit ovat asennettuna. Näin syntyy kirjasinpohjainen sormenjälki.
Navigaattorin ja näytön ominaisuudet
| Signaali | Mitä se paljastaa | Entropia |
|---|---|---|
| navigator.userAgent | Selaimen versio, käyttöjärjestelmä, laitetyyppi | Keskitaso (helposti väärennettävissä) |
| navigator.language | Ensisijaiset kielet | Matala-keskitaso |
| navigator.hardwareConcurrency | Suorittimen ydinten määrä | Matala |
| navigator.deviceMemory | RAM-muistin määrä (likimääräinen) | Matala |
| screen.width/height | Näytön tarkkuus | Keskitaso |
| screen.colorDepth | Värisyvyyden tuki | Matala |
| navigator.platform | Käyttöjärjestelmän alustamerkkijono | Matala (poistettu käytöstä) |
| navigator.maxTouchPoints | Kosketusominaisuus | Matala |
| Intl.DateTimeFormat().resolvedOptions().timeZone | Aikavyöhyke | Keskitaso |
Muita arvokkaita signaaleja
- WebRTC-vuoto: Voi paljastaa paikalliset tai julkiset IP-osoitteet jopa VPN-yhteyden kautta
- Akku-API: Akun varaustaso ja lataustila (useimmissa selaimissa poistettu käytöstä yksityisyyssyistä)
- Lupien tilat: Onko ilmoituksille, sijainnille tai kameralle myönnetty tai evätty käyttöoikeudet
- Asiakasvihjeet: Chromen User-Agent Client Hints -toiminto tarjoaa jäsenneltyä laitetietoa
- CSS-mediakyselyt: Tunnistaa tumman tilan, liikkeen vähennyksen tai kontrastin asetukset
TLS-sormenjälki (JA3/JA4)
TLS-sormenjälkien tunnistus toimii yhteystasolla, jo ennen kuin mitään JavaScriptiä suoritetaan:
JA3-sormenjälki
Salesforce kehitti JA3:n, joka tiivistää TLS Client Hello -viestin komponentit: SSL-version, salauskirjeet, laajennukset, elliptiset käyrät ja EC-pisteiden formaatit. Jokainen HTTP-asiakas (Chrome, Firefox, Python requests, Go http, curl) tuottaa oman JA3-tiivisteen. Tämä tunnistaa varsinaisen asiakkasohjelmiston vaikka käyttäjäagentti-otsikot olisivat väärennetyt.
JA4-sormenjälki
JA4 on uudempi standardi, joka parantaa JA3:a entistä luettavammalla muodolla ja paremmalla versioseurannalla. Se luo sormenjälkimerkkijonon kuten "t13d1715h2_8daaf6152771_b0da82dd1658", joka koodaa TLS-version, salauskirjeiden määrän, laajennusten määrän ja ALPN-arvot.
Kuinka anti-bot-järjestelmät käyttävät sormenjälkiä
Moderni anti-bot-ratkaisut kuten Cloudflare Bot Management, Akamai Bot Manager ja DataDome yhdistävät sormenjälkitoiminnon useisiin tunnistuskerroksiin:
- TLS-sormenjälki-tarkistus: Varmista, että yhteys tulee oikealta selaimelta, ei HTTP-kirjastolta
- JavaScript-suoritus: Suorita sormenjälki-keräyskomentosarjat - botit, jotka eivät voi suorittaa JS-koodia, merkitään välittömästi
- Yhteensopivuustarkistus: Tarkista, että JS-sormenjälki vastaa TLS-sormenjälkeä (esimerkiksi jos JA3 sanoo Chrome mutta canvas sanoo headless, merkitse se)
- Tunnettujen bottien vertailu: Vertaa sormenjälkeä tunnettujen bottityökalujen allekirjoitustietokantaan
- Käyttäytymiskerroin: Yhdistä sormenjälkipistemäärä hiiren liikkeisiin, napsautustimingiin ja vieritystapoihin
Headless-selainten havaitseminen
Headless-selaimet (Chrome headless, Puppeteer, Playwright) jättävät tunnistusmerkejä:
- navigator.webdriver: Asetettu arvoon
trueautomaattisissa selaimissa (voidaan väärentää mutta havaita prototyyppitarkistusten kautta) - Puuttuva chrome-objekti:
window.chromePuuttuu tai on epätäydellinen headless Chrome -selaimen kohdalla - Laajennusten määrä: Tavallinen Chrome raportoi laajennuksia, headless Chrome tyypillisesti nollaa
- WebGL-valmistajan ristiriita: Headless-ympäristöt raportoivat usein "Google Inc. (Google SwiftShader)" - ohjelmistorenderöijän
- Ilmoitusluvan pyyntö: Headless-selaimet eivät voi pyytää ilmoituslupia, mikä paljastaa ne API-käyttäytymisen kautta
- Iframe contentWindow: Headless Chrome käsittelee verkon yli olevan iframe-pääsyn eri tavalla
- Ajoituspoikkeamat: Automatisoidut selaimet suorittavat JavaScriptiä inhimillisesti nopeammin tai täysin johdonmukaisella ajoituksella
Sormenjäljen väärentäminen ja anti-detection
Useat työkalut yrittävät muuttaa selainten sormenjälkiä:
| Työkalu | Lähestymistapa | Havaitsemisriski |
|---|---|---|
| GoLogin | Mukautettu Chromium ja säädettävät sormenjälkiprofiilit | Keskitaso |
| Multilogin | Selainten jäljittely ja syvä sormenjälkirakentaminen | Keskitaso |
| Puppeteer Extra (Stealth) | Laajennus, joka korjaa havaittavat Puppeteer-jäämät | Keskitaso-korkea |
| undetected-chromedriver | Muokattu ChromeDriver, joka kiertää tavalliset havaitsemisjärjestelmät | Keskitaso-korkea |
| Selaimen laajennukset | Canvas-esto, WebGL-spoofing | Korkea (tuottaa havaittavia jälkiä) |
Puolustusstrategiat verkkosivustojen omistajille
Jos suojaat verkkosivustoasi botuilla, ota sormenjälkiotto osaksi monitasoista puolustusta:
- Käytä hallittua ratkaisua: Cloudflare, Akamai tai DataDome hoitavat sormenjälkioton suuressa mittakaavassa
- Yhdistä nopeusrajoituksiin: Sormenjälkiotto tunnistaa botit, nopeusrajoitus rajoittaa niiden vaikutusta
- Lisää käyttäytymisen analyysi: Sormenjälkiotto plus hiiren seuranta plus napsautusajastus tuottavat kattavan havaitsemisen
- Ota käyttöön DDoS-suojatulla infrastruktuurilla: Sormenjälkiotto toimii sovelluskerroksella, joten sinulla täytyy olla myös verkkotason DDoS-suoja käytössä
- Päivitä havaitsemista säännöllisesti: Botit kehittyvät, sinun havaitsemisjärjestelmäsi täytyy kehittyä nopeammin
Yksityisyyden kannalta merkittävät seikat
Selaimen sormenjälkiotto herättää merkittäviä yksityisyyden huolia. Suuret selaimet rajoittavat yhä enemmän sormenjälkioton mahdollisuuksia:
- Firefox: Tarjoaa sormenjälkivastustilan, joka normalisoi canvas-, WebGL- ja muut tuotokset
- Safari: Rajoittaa canvas-lukemista ja kirjainten luettelointia
- Chrome: Vähentää käyttäjäagentti-tietoja Client Hintien ja Privacy Sandboxin kautta
- GDPR ja muut yksityisyyslait: Sormenjälkiotto voi muodostaa henkilötietojen keräämistä, joka vaatii suostumuksen EU:ssa
Suojaa verkkosivustosi bottihyökkäyksiltä
Turvallisuustiimimme toteuttaa kattavaa botinenhavaitsemista, sormenjälkiottoa, DDoS-suojaa ja WAF-konfigurointia hyökkäysten kohteena oleville verkkosivustoille ja sovelluksille.
Telegram: @unlednetwork → WhatsApp Us →
Kommentit
Onko sinulla kysymys tai kokemus? Osallistu keskusteluun.
We implemented this last month and already seeing positive signals.
Thanks for the feedback. Based on our experience across hundreds of accounts, this approach shows results within 2-4 weeks.