Tento repozitár obsahuje normalizovanú, starostlivo vybranú množinu dát obsahujúcu reťazce používateľských agentov, uloženú ako JSON súbory a určenú na použitie ako vyhľadávací zoznam na odvodenie jednoduchých údajov o používateľskom agentovi, ako napríklad používateľský agent a operačný systém.
Používa sa ako súčasť PageviewsOnline, ale je tu zverejnené na všeobecné použitie.
Dátová množina je doplnená o jednoduché pomocné skripty na validáciu údajov a export do iných formátov alebo programovacích jazykov (napríklad Java).
Filozofia projektu
Cieľom tohto projektu nie je poskytnúť spoľahlivý alebo dokonale presný systém detekcie používateľských agentov, ale skôr praktické riešenie s čo najväčšou snahou, ktoré sa časom zlepší vďaka reálnemu používaniu a príspevkom komunity.
Detekcia užívateľského agenta je v podstate nepresná. Namiesto snahy o dokonalú presnosť sa tento projekt zameriava na to, aby bol:
- Praktické
- Udržateľný
- Priehľadný
- Dostačujúce pre analýzu a klasifikáciu v reálnom svete
Presnosť sa zlepšuje v priebehu času vďaka starostlivo vyberaným aktualizáciám, používaním v praxi a príspevkom komunity.
Heuristické parsovanie a zložité regulárne výrazy často obetujú spoľahlivosť pre marginálne zvýšenie presnosti.
Tento projekt uprednostňuje:
- Transparentnosť nad mágiou
- Kurátorované dáta nad nepriehľadnou logikou
- Dávame prednosť vysvetliteľným výsledkom pred špekulatívnou detekciou
Funkcie
- Normalizovaná, ručne skontrolovaná dátová sada užívateľských agentov
- Jednoduché a predvídateľné správanie pri vyhľadávaní
- Formát založený na JSON-e, ľahko sa dá preskúmať a verzovať
- Ľahké skripty na validáciu
- Exportovať pomocníkov pre ďalšie jazyky (napr. Java)
- Aktívne používané v produkčnom prostredí SaaS
Normalizované Reťazce Používateľského Agenta
Primárnym cieľom tohto projektu je rýchlo a predvídateľne extrahovať vysokoúrovňové, stabilné informácie zo reťazcov používateľského agenta.
Na tento účel sa každý reťazec používateľského agenta normalizuje ešte pred spracovaním. Normalizácia odstraňuje nestabilné variácie (ako napríklad čísla verzií a rozdiely v zápise veľkosti písmen), pričom zachováva štrukturálny a sémantický význam používateľského agenta.
Reťazce používateľského agenta sa normalizujú podľa nasledujúcich krokov:
- Nahradiť všetky číslice (0–9) zástupným znakom x. Toto odstraňuje rušenie spôsobené zmenami verzií a zároveň zachováva štruktúru a dĺžku tokenov.
- Preveďte celý reťazec na malé písmená. Tokeny používateľského agenta sú zvyčajne bez rozlišovania veľkosti písmen a zmenou na malé písmená sa zaisťuje konzistentné a spoľahlivé vyhľadávanie.
Napríklad nasledujúci reťazec užívateľského 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 normalizované na:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Tento prístup k normalizácii uľahčuje zoskupovanie, porovnávanie a dlhodobú údržbu používateľských agentov, pričom ostáva dostatočne presný pre klasifikáciu na vyššej úrovni klientov a operačných systémov.
Odstránením variácií špecifických pre verziu a variácií súvisiacich s veľkosťou písmen sa proces vyhľadávania stane predvídateľnejším a odolnejším voči budúcim zmenám používateľského agenta.
Formát údajov
Každý normalizovaný záznam používateľského agenta obsahuje:
- id - Normalizovaný reťazec používateľského agenta
- client_family - Všeobecná klasifikácia klientov (napr. prehliadač, bot, aplikácia)
- os_family - Vysoká úroveň klasifikácie operačného systému
Presné polia sa môžu vyvíjať v priebehu času, ako dataset rastie.
Správanie vyhľadávania
Zhodovanie používateľských agentov sa vykonáva voči normalizovaným reťazcom.
Uprednostňujeme presné zhody; čiastočné alebo heuristické zhody sú úmyselne vyhýbané, aby bolo správanie predvídateľné a ľahko debugovateľné.
Prispievanie
Príspevky sú veľmi vítané a pomáhajú zlepšiť celkovú kvalitu a presnosť tohto projektu.
Najväčší dopad na prínos má pridaním alebo aktualizáciou normalizovaných záznamov užívateľských agentov v súbore user_agents.json spolu s príslušnými klasifikačnými údajmi.
Keď budú vaše zmeny hotové, prosím pošlite pull request obsahujúci potrebné dáta a/alebo aktualizácie kódu.
Aj čiastočné alebo neúplné informácie sú užitočné a oceňované – každý príspevok pomáha zlepšiť pokrytie a dlhodobú spoľahlivosť.
Ako začať (Rýchly návod)
Jadro tohto projektu tvorí sada JSON dátových súborov, ktorá sa nachádza v adresári data/.
Aby bolo možné tieto dáta udržiavať a znovu ich používať, repozitár obsahuje malú sadu jednoduchých Node.js skriptov, ktoré vykonávajú základnú validáciu a exportné úlohy.
Bežné dostupné príkazy:
- npm run test - Overí dáta JSON a skontroluje štrukturálne chyby alebo chyby konzistencie.
- npm run build - Vytvára, triedi a exportuje normalizované údaje do formátov iných programovacích jazykov (napríklad Java) pre jednoduchšiu integráciu.
Tieto nástroje sú zámerne minimalistické a zamerané na správnosť údajov a ich prenositeľnosť, nie na zložité spracovanie.
Reťazce používateľského agenta nie sú spoľahlivé
Získavanie presných informácií zo reťazcov používateľského agenta je inherentne nespolehlivé z niekoľkých dôvodov:
- Neexistuje formálny štandard ani špecifikácia, ktorá by upravovala štruktúru alebo obsah reťazcov používateľského agenta
- Mnoho používateľských agentov zámerne falšuje alebo napodobňuje iné používateľské identifikátory kvôli kompatibilite a starším verziám
Z tohto dôvodu je veľmi ťažké spoľahlivo a presne určiť údaje o užívateľskom agentovi.
Táto knižnica by sa preto mala vnímať ako riešenie s najlepším možným úsilím, nie ako zdroj zaručenej alebo autoritatívnej pravdy.
Pri pokračujúcom používaní a príspevkoch komunity sa presnosť môže časom zlepšovať.
Verzovanie & Stabilita
Sada údajov sa môže meniť v priebehu času, ako sa vyvíjajú používateľskí agenti.
Klasifikácie sa nepovažujú za prelomné zmeny, ani pri menších verziách.
Spotrebitelia by mali brať výsledky ako informácie poskytované s najlepším možným úsilím, nie ako zmluvné záruky.
Licencia
Tento projekt a jeho údaje sú sprístupnené pod licenciou Apache 2.0 (Apache-2.0).
Komerčné použitie, úpravy a redistribúcia sú povolené.
Príspevky sú vítané a oceňované.
Ochranná známka
PageviewsOnline, Two-Dot-Oh, a všetky súvisiace logá, názvy služieb alebo branding sú ochrannými známkami spoločnosti Two-Dot-Oh.
Tento projekt je open source; používanie názvu PageviewsOnline alebo akéhokoľvek s ním spojeného brandingu v súvislosti s produktom, službou alebo ponukou nie je povolené bez predchádzajúceho písomného súhlasu.
Forky a odvodené diela musia používať iný názov a značku a nesmú naznačovať schválenie ani spojenie so PageviewsOnline alebo Two-Dot-Oh.