Ovaj repozitorijum sadrži normalizovani, kurirani skup podataka o korisničkim agentima, sačuvan u JSON fajlovima i dizajniran da se koristi kao tablica za pretragu radi dobijanja jednostavnih podataka o korisničkom agentu, kao što su klijent korisničkog agenta i operativni sistem.
Koristi se kao komponenta PageviewsOnline-a, ali je ovde objavljena za opštu upotrebu.
Skup podataka je dopunjen jednostavnim pomoćnim skriptama za validaciju podataka i izvoz u druge formate ili programske jezike (npr. Java).
Filozofija projekta
Cilj ovog projekta nije da pruži potpuno pouzdan ili savršeno tačan sistem za detekciju user-agent-a, već praktično rešenje koje nastoji da bude najbolje moguće i koje se vremenom poboljšava kroz upotrebu u praksi i kroz doprinose zajednice.
Detekcija korisničkog agenta je suštinski nesavršena. Umesto da teži ka potpunoj tačnosti, ovaj projekat se fokusira na to da bude:
- Praktičan
- Lako za održavanje
- Prozirno
- Dovoljno dobro za analitiku i klasifikaciju u realnom svetu
Tačnost se vremenom poboljšava kroz pažljivo odabrana ažuriranja, praktičnu upotrebu i doprinose zajednice.
Heurističko parsiranje i složeni regularni izrazi često žrtvuju predvidljivost u korist marginalnog poboljšanja tačnosti.
Ovaj projekat daje prednost:
- Transparentnost nad magijom
- Kurirani podaci naspram neprozirne logike
- Objašnjivi rezultati umesto spekulativne detekcije
Karakteristike
- Normalizovan, ručno pregledan skup podataka agenata korisnika
- Jednostavno i predvidljivo ponašanje pretrage
- format zasnovan na JSON-u, jednostavan za pregled i upravljanje verzijama
- Lagane skripte za validaciju
- Izvoz pomoćnika za druge programske jezike (npr. Java)
- Aktivno se koristi u produkcijskom SaaS okruženju
Normalizovani Stringovi Korisničkog Agenta
Primarni cilj ovog projekta je da izdvoji informacije visokog nivoa i stabilne iz stringova korisničkog agenta na brz i predvidljiv način.
Da bi se to omogućilo, svaki string korisničkog agenta se normalizuje pre obrade. Normalizacija uklanja nestabilne varijacije (kao što su verzije i razlike u pisanju) uz zadržavanje strukturalnog i semantičkog značenja korisničkog agenta.
Stringovi agenata korisnika se normalizuju pomoću sledećih koraka:
- Zamenite sve numeričke cifre (0-9) sa znakom x. Ovo uklanja buku uzrokovanu promenama verzije dok istovremeno čuva strukturu tokena i njegovu dužinu.
- Konvertujte ceo niz u mala slova. Tokeni korisničkog agenta su po konvenciji neosetljivi na velika i mala slova, a konvertovanje u mala slova obezbeđuje dosledne i pouzdane pretrage.
Na primer, sledeć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
Normalizovano 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 grupisanje, poređenje i održavanje korisničkih agenata tokom vremena, dok ostaje dovoljno tačan za visok nivo klasifikacije klijentskih agenata i operativnih sistema.
Eliminisanjem varijabilnosti vezane za verziju i veličinu slova, proces pretrage postaje predvidljiviji i otporniji na buduće promene korisničkog agenta.
Format Podataka
Svaka normalizovana stavka korisničkog agenta sadrži:
- id - Normalizovani string korisničkog agenta
- porodica klijenta - Klasifikacija klijenta na visokom nivou (npr. pretraživač, bot, aplikacija)
- os_family - Klasifikacija operativnog sistema višeg nivoa
Tačna polja mogu se menjati tokom vremena kako se skup podataka širi.
Način Pretraživanja
Podudaranje korisničkog agenta vrši se nad normalizovanim nizovima karaktera.
Tačna podudaranja su prioritet; delimično ili heurističko podudaranje se namerno izbegava kako bi ponašanje ostalo predvidljivo i lakše za debagovanje.
Doprinos
Doprinosi su veoma dobrodošli i doprinose poboljšanju ukupnog kvaliteta i tačnosti ovog projekta.
Najefikasniji način da doprinesete jeste dodavanje ili ažuriranje normalizovanih zapisa korisničkih agenata u datoteku user_agents.json, zajedno sa relevantnim podacima o klasifikaciji.
Kada su vaše izmene spremne, molimo vas da pošaljete pull request koji sadrži potrebne podatke i/ili izmene koda.
Čak i delimične ili nepotpune informacije su korisne i cenjene — svaki doprinos pomaže poboljšanju pokrivenosti i dugoročne pouzdanosti.
Početak Rada (Brzi Vodič)
Suština ovog projekta je skup JSON fajlova podataka, koji se nalaze u direktorijumu data/.
Da bi se olakšalo održavanje i ponovnu upotrebu ovih podataka, repozitorijum sadrži mali skup jednostavnih Node.js skripti koje obavljaju osnovnu validaciju i zadatke za izvoz.
Uobičajene dostupne naredbe:
- npm run test - Validira JSON podatke i proverava greške u strukturi ili konzistenciji.
- npm run build - Kreira, sortira i izvozi normalizovane podatke u druge formate programskih jezika (npr. Java) radi lakše integracije.
Ovi alati su namerno jednostavni i fokusiraju se na tačnost podataka i prenosivost, a ne na složenu obradu.
User-Agent Stringovi Nisu Pouzdani
Izvlačenje tačnih informacija iz stringova user-agenta po prirodi je nepouzdano iz nekoliko razloga:
- Ne postoji formalni standard ili specifikacija koja reguliše strukturu ili sadržaj stringova korisničkih agenata
- Mnogi korisnički agenti namerno lažno predstavljaju identitet ili imitiraju druge korisničke agente radi kompatibilnosti i zbog zastarele podrške
Zbog toga je izuzetno teško tačno i dosledno odrediti podatke o korisničkom agentu.
Stoga bi ovu biblioteku trebalo posmatrati kao rešenje sa najboljim naporom, a ne kao izvor garantovane ili autoritativne istine.
Uz stalnu upotrebu i doprinosi zajednice, tačnost se može poboljšati s vremenom.
Verzionisanje i Stabilnost
Skup podataka može se menjati tokom vremena kako se korisnički agenti razvijaju.
Klasifikacije se ne smatraju promenama koje narušavaju kompatibilnost, čak ni između manjih verzija.
Potrošači treba da smatraju rezultate kao nagoveštaje koji se pružaju uz najbolji napor, a ne kao ugovorne garancije.
Licenca
Ovaj projekat i njegovi podaci objavljeni su pod Apache Licencom verzije 2.0 (Apache-2.0).
Komercijalna upotreba, modifikacija i redistribucija su dozvoljene.
Doprinosi su dobrodošli i cenjeni.
Žig
PageviewsOnline, Two-Dot-Oh, i svi povezani logotipi, imena usluga ili brendiranje su zaštitni znaci Two-Dot-Oh.
Ovaj projekat je otvorenog koda; međutim, korišćenje imena PageviewsOnline ili bilo kog povezanog brendiranja u vezi sa proizvodom, uslugom ili ponudom nije dozvoljeno bez prethodne pisane saglasnosti.
Forkovi i izvedena dela moraju koristiti drugo ime i brendiranje i ne smeju implicirati podršku ili povezanost sa PageviewsOnline ili Two-Dot-Oh.