Ovaj repozitorij sadrži normalizirani, kurirani skup podataka o stringovima korisničkog agenta, pohranjen kao skup JSON datoteka i dizajniran za korištenje kao tablica pretraživanja radi izdvajanja jednostavnih podataka o korisničkom agentu, poput klijenta i operativnog sustava.
Služi kao komponenta PageviewsOnline, ali je ovdje objavljeno za opću namjenu.
Skup podataka dopunjen je jednostavnim pomoćnim skriptama za validaciju podataka i izvoz u druge formate ili programske jezike (kao što je Java).
Filozofija projekta
Cilj ovog projekta nije pružiti besprijekoran ili savršeno točan sustav za detekciju korisničkog agenta, već praktično rješenje uz najbolje napore koje se s vremenom poboljšava kroz stvarnu upotrebu i doprinose zajednice.
Detekcija korisničkog agenta je po sebi nepotpuna. Umjesto težnje za potpunom točnošću, ovaj projekt usredotočuje se na to da bude:
- Praktičan
- Održivo
- Prozirno
- Dovoljno dobro za analitiku i klasifikaciju u stvarnom svijetu
Točnost se poboljšava s vremenom zahvaljujući pažljivo odabranim ažuriranjima, stvarnoj upotrebi i doprinosima zajednice.
Heurističko parsiranje i složeni regularni izrazi često žrtvuju predvidljivost u zamjenu za marginalna poboljšanja točnosti.
Ovaj projekt preferira:
- Transparentnost nad magijom
- Odabrani podaci umjesto neprozirne logike
- Objašnjivi rezultati umjesto spekulativne detekcije
Značajke
- Normaliziran, ručno pregledan skup podataka korisničkih agenata
- Jednostavno i predvidljivo ponašanje pretraživanja
- Format temeljen na JSON-u, jednostavan za pregledavanje i verzioniranje
- Lagane skripte za validaciju
- Izvoz pomoćnih funkcija za druge programske jezike (npr. Java)
- Aktivno se koristi u produkcijskom SaaS okruženju
Normalizirani Nizovi User-Agent-a
Primarni cilj ovog projekta je izvući informacije visokog nivoa i stabilne iz stringova korisničkog agenta na brz i predvidljiv način.
Kako bi to podržali, svaki niz korisničkog agenta normalizira se prije obrade. Normalizacija uklanja nestabilne varijacije (kao što su brojevi verzija i razlike u pisanju velikih i malih slova) dok zadržava strukturno i semantičko značenje korisničkog agenta.
Nizovi korisničkog agenta normaliziraju se korištenjem sljedećih koraka:
- Zamijenite sve cifre (0-9) zamjenskim znakom x. Ovo uklanja šum uzrokovan promjenama verzije uz očuvanje strukture i duljine tokena.
- Pretvorite cijeli niz u mala slova. Tokeni korisničkih agenata su osjetljivi na velika i mala slova prema konvenciji, a pretvaranje u mala slova osigurava dosljedne i pouzdane pretrage.
Na primjer, sljedeći string korisničkog agenta:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Je normalizirano na:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Ovaj pristup normalizaciji olakšava grupiranje, uspoređivanje i održavanje korisničkih agenata tijekom vremena, a pritom ostaje dovoljno točan za klasifikaciju klijenta i operativnog sustava na visokoj razini.
Eliminiranjem varijabilnosti specifične za verziju i varijabilnosti vezane uz velika i mala slova, postupak pretraživanja postaje predvidljiviji i otporniji na buduće promjene korisničkog agenta.
Format Podataka
Svaki normalizirani unos korisničkog agenta uključuje:
- id - Normalizirani string korisničkog agenata
- client_family - Klasifikacija klijenta na visokoj razini (npr. preglednik, bot, aplikacija)
- os_family - Klasifikacija operativnog sustava na visokoj razini
Točna polja mogu se mijenjati tijekom vremena kako se skup podataka povećava.
Ponašanje pretraživanja
Uspoređivanje korisničkog agenta provodi se na normaliziranim nizovima znakova.
Točna podudaranja su preferirana; djelomično ili heurističko podudaranje namjerno se izbjegava kako bi ponašanje bilo predvidljivo i lakše za debugiranje.
Doprinos
Doprinosi su vrlo dobrodošli i pomažu poboljšati ukupnu kvalitetu i točnost ovog projekta.
Najveći doprinos postižete dodavanjem ili ažuriranjem normaliziranih unosa korisničkih agenata u datoteku user_agents.json, uz relevantne podatke o klasifikaciji.
Kada su vaše promjene spremne, pošaljite pull request koji sadrži potrebne podatke i/ili ažuriranja koda.
Čak i djelomične ili nepotpune informacije su korisne i cijenjene - svaki doprinos pomaže poboljšati pokrivenost i dugoročnu pouzdanost.
Početak (Brzi vodič)
Središnji dio ovog projekta je skup JSON datoteka, smještenih u direktoriju data/.
Kako bi se olakšalo održavanje i ponovnu upotrebu ovih podataka, repozitorij sadrži mali skup jednostavnih Node.js skripti koje obavljaju osnovnu provjeru valjanosti i izvozne zadatke.
Uobičajene dostupne naredbe:
- npm run test - Validira JSON podatke i provjerava postoje li strukturne greške ili greške u dosljednosti.
- Izgrađuje, sortira i izvozi normalizirane podatke u formate drugih programskih jezika (npr. Java) radi lakše integracije.
Ovi alati su namjerno minimalni, fokusirajući se na točnost podataka i prenosivost, a ne na složeno procesiranje.
Nizovi User-Agent-a nisu pouzdani
Izvlačenje točnih informacija iz user-agent stringova po prirodi je nepouzdano iz nekoliko razloga:
- Ne postoji službeni standard ili specifikacija koja uređuje strukturu ili sadržaj niza korisničkog agenta
- Mnogi korisnički agenti namjerno lažno predstavljaju ili oponašaju druge korisničke agente radi kompatibilnosti i podrške za starije verzije.
Zbog toga je izuzetno teško odrediti podatke o korisničkom agentu na potpuno točan i dosljedan način.
Stoga ovu biblioteku treba smatrati rješenjem uz najbolji mogući napor, a ne izvorom zajamčene ili autoritativne istine.
S nastavkom korištenja i doprinosima zajednice, točnost se može poboljšati s vremenom.
Verzioniranje & Stabilnost
Skup podataka može se mijenjati tijekom vremena kako se korisnički agenti razvijaju.
Klasifikacije se ne smatraju promjenama koje narušavaju kompatibilnost, čak i između manjih verzija.
Potrošači bi trebali rezultate tretirati kao okvirne smjernice, a ne kao ugovorne garancije.
Licenca
Ovaj projekt i njegovi podaci su objavljeni pod Apache licencom verzije 2.0 (Apache-2.0).
Korištenje u komercijalne svrhe, izmjene i redistribucija dopuštene su.
Doprinosi su dobrodošli i cijenjeni.
Žig
PageviewsOnline, Two-Dot-Oh, i svi povezani logotipi, nazivi usluga ili branding su zaštitni znakovi Two-Dot-Oh.
Ovaj projekt je otvorenog koda; međutim, upotreba imena PageviewsOnline ili bilo kojeg povezanog brendiranja u vezi s proizvodom, uslugom ili ponudom nije dopuštena bez prethodnog pisanog pristanka.
Forkovi i derivirana djela moraju koristiti drugačije ime i brendiranje te ne smiju implicirati podršku ili povezanost s PageviewsOnline ili Two-Dot-Oh.