Cross-device tracking: łączenie sesji bez logowania
Jak nasz algorytm identyfikacji urządzeń łączy anonimowe sesje w różnych przeglądarkach i urządzeniach dzięki probabilistycznemu dopasowaniu sygnałów i analizie grafów.
Gdy użytkownik rano odwiedza Twoją stronę na laptopie, a po południu na telefonie, większość platform analitycznych widzi dwóch zupełnie różnych odwiedzających. Nasz algorytm identyfikacji urządzeń potrafi połączyć te sesje probabilistycznie — bez wymogu logowania — analizując nakładanie się sygnałów i budując grafy urządzeń.
Problem cross-device
Tradycyjny fingerprinting generuje unikalny identyfikator dla każdej instancji przeglądarki. Chrome na laptopie daje jeden identyfikator; Safari na iPhonie — inny. Nawet na tym samym urządzeniu różne przeglądarki generują różne fingerprinty, ponieważ mają różne user agenty, różny zakres obsługiwanych funkcji i różną charakterystykę renderowania.
Ale użytkownicy nie myślą w kategoriach przeglądarek. Myślą w kategoriach sesji. Zaczynają zakup na telefonie w czasie lunchu, a kończą go na laptopie w domu. Szukają produktu na tablecie, a kupują go na komputerze stacjonarnym. Dla wykrywania oszustw i personalizacji kluczowe jest zrozumienie, że te sesje należą do tej samej osoby.
Probabilistyczne dopasowanie sygnałów
Nasze łączenie cross-device zbudowane jest wokół grafu osób z trzema rodzajami węzłów: odwiedzający (jeden profil przeglądarki), urządzenie (maszyna znajdująca się pod kilkoma profilami przeglądarki) oraz zahaszowany identyfikator wyprowadzony z podpisanego adresu e-mail lub numeru telefonu, który przekazuje nam Twoja własna aplikacja. To krawędzie między tymi węzłami spinają dwie sesje w jedną osobę.
Celowo nieobecne na tej liście: adres IP i ASN. Wspólna sieć to sygnał kuszący i zarazem błędny — biuro, kampus czy carrier-grade NAT umieszcza za jednym adresem tysiące osób niemających ze sobą nic wspólnego, więc krawędź oparta na IP tworzy dokładnie ten rodzaj fałszywego powiązania, którego odkręcenie kosztuje najwięcej. Krawędzie deterministyczne, których faktycznie używamy — to samo urządzenie, ten sam zahaszowany identyfikator, ten sam kanoniczny korzeń odwiedzającego — to takie, których wspólna sieć nie jest w stanie wykreować.
Nad tym działa ograniczony komponent probabilistyczny: potwierdzone pary behawioralne danego odwiedzającego mogą być rozpatrywane jako kandydaci do dołączenia — z limitem kilku na jednego odwiedzającego i wyłącznie powyżej progu pewności. Poszerza on klaster, który krawędzie deterministyczne już zakotwiczyły; sam z siebie żadnego nie zakłada.
Budowa grafu urządzeń
Każde potwierdzone lub wysoce prawdopodobne powiązanie między sesjami tworzy krawędź w grafie urządzeń. Graf łączy instancje przeglądarek z węzłami urządzeń, a węzły urządzeń z węzłami osób. Z czasem, w miarę gromadzenia się kolejnych sesji, graf staje się coraz dokładniejszy.
Budowa grafu opiera się na podejściu zachowawczym. Krawędź deterministyczna — to samo urządzenie rozpoznane pod dwoma profilami przeglądarki albo ten sam zahaszowany identyfikator podany dla dwóch kont — tworzy powiązanie od razu. Wszystko słabsze traktujemy jako kandydata, a nie powiązanie: musi przekroczyć próg pewności i podlega limitowi, żeby jeden odwiedzający nie pociągnął za sobą nieograniczonego klastra. Odwiedzającego lub pomost objęty kwarantanną w całości pomijamy, zamiast scalać go na podstawie samego podejrzenia.
Zastosowania w wykrywaniu oszustw
Łączenie cross-device jest szczególnie skuteczne w wykrywaniu oszustw. Oszust prowadzący konta w kilku profilach przeglądarki zostaje zidentyfikowany, gdy te profile rozwiązują się do tego samego urządzenia pod spodem albo gdy ten sam podpisany identyfikator pojawia się za dwoma z tych kont. Skradziona karta kredytowa użyta na urządzeniu, które nigdy nie było powiązane z grafem urządzeń posiadacza karty, natychmiast wywołuje alert.
Widzieliśmy siatki oszustów, w których pojedynczy operator uruchamia dziesiątki maszyn wirtualnych do zakładania fałszywych kont. Każda maszyna wirtualna prezentuje odrębny fingerprint przeglądarki, ale wszystkie działają na tym samym fizycznym sprzęcie, a to rozpoznanie urządzenia sprowadza je z powrotem do jednej maszyny. Ten wspólny węzeł urządzenia jest krawędzią, na której zbudowany jest graf — ujawnia całą siatkę na podstawie jednego wykrytego konta, bez odwoływania się do wspólnego adresu.
Projekt chroniący prywatność
Łączenie cross-device budzi uzasadnione obawy o prywatność. Nasze podejście łagodzi je dzięki kilku decyzjom projektowym. Po pierwsze, ta warstwa jest domyślnie wyłączona — nie pojawia się wraz z wdrożeniem, włącza się ją świadomie dla konkretnej przestrzeni roboczej, a do tego czasu żaden graf osób w ogóle nie powstaje. Po drugie, łączenie odbywa się po stronie serwera i nigdy nie trafia do przeglądarki, więc grafu powiązań nie da się odczytać po stronie klienta, a tryb ustawiany jest po naszej stronie, a nie przez cokolwiek, co może wysłać strona. Po trzecie, krawędź identyfikatora istnieje tylko wtedy, gdy Twoja własna aplikacja zdecyduje się przekazać podpisany adres e-mail lub numer telefonu — sami nie wyprowadzamy go od odwiedzającego. Po czwarte, użytkownikom można zapewnić przejrzystość co do powiązanych urządzeń poprzez Twój interfejs prywatności.
Metryki dokładności
Kompromis jest celowy i przedkłada precision nad recall: wolimy pominąć powiązanie, niż utworzyć fałszywe. Ta preferencja widoczna jest w samej konstrukcji, a nie w jednej efektownej liczbie — powiązania tworzą krawędzie deterministyczne, słabe sygnały jedynie poszerzają klastry, które są już zakotwiczone, pomosty objęte kwarantanną są pomijane, a każdy klaster podlega limitowi. Pominięte powiązanie kosztuje Cię wzorzec oszustwa, który i tak wychwyciłbyś później innymi środkami. Fałszywe powiązanie scala dwóch prawdziwych klientów w jedną osobę, a ten błąd propaguje się na każdą podjętą później decyzję.
Zmierz to na własnym ruchu, zanim zaczniesz na tym polegać. Recall cross-device zależy od tego, jak wielu Twoich użytkowników w ogóle się uwierzytelnia — krawędź identyfikatora jest najsilniejsza z dostępnych i istnieje tylko tam, gdzie dostarczy ją Twoja aplikacja.