Jak zidentyfikować użytkownika bez cookies i rejestracji
Wyobraź sobie sytuację: użytkownik odwiedza Twoją stronę w trybie incognito, czyści cache, zmienia IP przez proxy, ale Ty nadal musisz wiedzieć, że to ta sama osoba. Dlaczego? Na przykład po to, by zapobiec atakującemu w nieskończoność łamiącemu hasła lub by nie pokazywać dziesiąty raz tej samej „nowej" klientce kodu rabatowego na powitanie.
Tradycyjne metody jak LocalStorage czy Cookies tutaj zawodzą — można je usunąć jednym kliknięciem. Dokładnie ten problem rozwiązuje FingerprintJS. To biblioteka, która zbiera dziesiątki pośrednich sygnałów z przeglądarki i urządzenia, by stworzyć unikalny identyfikator odwiedzającego.
Co to jest i jak to działa
FingerprintJS to narzędzie open-source do fingerprintingu przeglądarki. Mówiąc wprost, biblioteka pyta przeglądarkę: „Jakie masz zainstalowane czcionki? Jaka jest rozdzielczość Twojego ekranu? Jak renderujesz grafikę przez Canvas"?
Indywidualnie te dane niewiele znaczą. Miliony ludzi używają Chrome na Windowsie z rozdzielczością 1920x1080. Ale gdy połączysz wersję silnika, listę dostępnych języków, strefę czasową, parametry stosu audio i specyficzne cechy renderowania czcionek, otrzymasz kombinację unikalną dla niemal każdego urządzenia. Wszystkie te dane są hashowane i otrzymujesz krótki ciąg znaków — visitorId.
Jak szybko uruchomić projekt
Integracja jest niezwykle przyjazna dla developerów. Możesz zainstalować przez npm:
npm install @fingerprintjs/fingerprintjs
I uruchomić zaledwie kilkoma linijkami kodu:
import FingerprintJS from '@fingerprintjs/fingerprintjs'
async function initFingerprint() {
// Инициализируем агент при запуске приложения
const fpPromise = FingerprintJS.load()
const fp = await fpPromise
const result = await fp.get()
// Вот он, наш уникальный ID
console.log(result.visitorId)
}
initFingerprint()
Jeśli nie chcesz korzystać z bundlerów, biblioteka jest dostępna przez CDN. Ale jest pewne „ale": niektóre agresywne blokery reklam lub przeglądarki jak Brave mogą blokować ładowanie skryptów z zewnętrznych domen. W takich przypadkach autorzy zalecają użycie pakietu npm i zbundlowanie kodu do własnego bundle'a.
Gdzie to naprawdę się przyda
Z mojego doświadczenia, takie narzędzia najczęściej pojawiają się w zadaniach związanych z bezpieczeństwem i analityką.
Po pierwsze, zapobieganie oszustwom. Jeśli ktoś próbuje zarejestrować 50 kont, by nabić bonusy polecającego, FingerprintJS wychwyci, że wszyscy ci „różni" ludzie siedzą za tym samym laptopem.
Po drugie, ograniczanie dostępu. Możesz ograniczyć liczbę darmowych wyświetleń treści (jak robią to główne serwisy informacyjne) bez zmuszania użytkownika do logowania.
Po trzecie, ochrona przed łamaniem haseł. Jeśli próby logowania z jednego urządzenia używają różnych nazw użytkowników, to powód, by zablokować dostęp dla tego konkretnego „odcisku palca" bez wpływu na innych użytkowników z tego samego IP (na przykład w budynku biurowym).
O czym warto wiedzieć zawczasu
Biblioteka jest świetna, ale nie jest „magicznym rozwiązaniem". Wersja open-source ma swoje ograniczenia, które autorzy uczciwie opisują w README.
Dokładność wersji darmowej jest niższa niż ich komercyjnego produktu chmurowego. Ponieważ wszystkie obliczenia odbywają się po stronie klienta, zaawansowany użytkownik może sfałszować niektóre parametry przeglądarki, by zmienić swój identyfikator.
Ponadto, jeśli użytkownik zaktualizuje przeglądarkę lub system operacyjny, jego odcisk palca najprawdopodobniej się zmieni. To nie jest stały identyfikator, lecz raczej bardzo wiarygodny marker tymczasowy.
FingerprintJS to doskonały wybór, jeśli potrzebujesz dodać warstwę bezpieczeństwa lub podstawową analitykę bez używania cookies. Projekt jest aktywny, ma ogromną społeczność (prawie 28 tysięcy gwiazdek na GitHubie) i przejrzystą dokumentację.
Czy to jest odpowiednie dla Ciebie? Jeśli celem jest odfiltrowanie 90% botów i amatorskich oszustów, to zdecydowanie tak. W przypadku systemów bankowych z krytycznymi wymaganiami bezpieczeństwa możesz potrzebować przyjrzeć się ich płatnym rozwiązaniom z walidacją po stronie serwera, ale dla większości projektów webowych możliwości wersji MIT są więcej niż wystarczające.
Możesz wypróbować bibliotekę w akcji na ich stronie demo — otwórz ją w trybie normalnym, potem w incognito, a zobaczysz, że magia działa.
Powiązane projekty