Ta repozitorij vsebuje normaliziran, kuriran nabor podatkov o nizih uporabniškega agenta, shranjenih kot JSON datotek, in zasnovan za uporabo kot iskalna tabela za pridobivanje preprostih podatkov o uporabniškem agentu, kot sta uporabniški agent (klijent) in operacijski sistem.
Uporablja se kot sestavni del PageviewsOnline, vendar je tukaj objavljeno za splošno rabo.
Nabor podatkov je dopolnjen s preprostimi pomožnimi skriptami za preverjanje podatkov in izvoz v druge formate ali programske jezike (na primer Java).
Filozofija projekta
Cilj tega projekta ni zagotoviti popolnoma zanesljivega ali popolnoma natančnega sistema za identifikacijo uporabniškega agenta, temveč praktična, po najboljših močeh izvedljiva rešitev, ki sčasoma napreduje zaradi uporabe v resničnem svetu in prispevkov skupnosti.
Prepoznavanje uporabniškega agenta je po naravi nepopolno. Namesto prizadevanja za popolno natančnost se ta projekt osredotoča na to, da je:
- Praktično
- Vzdrževano
- Prozoren
- Dovolj dobro za analitiko v resničnem svetu in klasifikacijo
Natančnost se sčasoma izboljšuje prek skrbno izbranih posodobitev, uporabe v resničnem svetu in prispevkov skupnosti.
Heuristično parsiranje in kompleksni regularni izrazi pogosto žrtvujejo predvidljivost v zameno za marginalno povečanje natančnosti.
Ta projekt spodbuja:
- Transparentnost nad magijo
- Izbrani podatki nad neprozorno logiko
- Razlagljivi rezultati namesto špekulativnega odkrivanja
Funkcije
- Normaliziran, ročno pregledan nabor uporabniških agentov
- Preprosto in predvidljivo delovanje iskanja
- Format, ki temelji na JSON-u, enostaven za pregled in upravljanje verzij
- Lahke validacijske skripte
- Izvozi pomočnike za druge jezike (npr. Java)
- Aktivno uporabljano v produkcijskem SaaS okolju
Normalizirani Nizi Uporabniškega Agenta
Glavni cilj tega projekta je iz nizov uporabniškega agenta izluščiti informacije visoke ravni in stabilne na hiter in predvidljiv način.
Da bi to podprli, se vsak niz uporabniškega agenta pred obdelavo normalizira. Normalizacija odstrani nestabilne variacije (npr. številke različic in razlike v velikosti črk), pri čemer ohranja strukturni in semantični pomen uporabniškega agenta.
Nizi uporabniškega agenta se normalizirajo po naslednjih korakih:
- Zamenjajte vse številčne cifre (0-9) z nadomestnim znakom x. To odpravlja šum, ki ga povzročajo različice, pri tem pa ohranja strukturo in dolžino tokenov.
- Pretvori celoten niz v male črke. Tokeni uporabniškega agenta so po navadi neobčutljivi na razlikovanje med velikimi in malimi črkami, in pretvarjanje v male črke zagotavlja dosledne in zanesljive poizvedbe.
Na primer, naslednji niz uporabniškega 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
Ta pristop normalizacije omogoča, da jih lažje združimo, primerjamo in vzdržujemo sčasoma, pri čemer ostaja dovolj natančen za visokonivojsko klasifikacijo odjemalcev in operacijskih sistemov.
Z odpravo variabilnosti, ki je povezana z različicami in velikostjo črk, postopek iskanja postane bolj predvidljiv in bolj odporen na prihodnje spremembe uporabniškega agenta.
Podatkovni format
Vsak normaliziran vnos agenta uporabnika vključuje:
- id - Normaliziran niz uporabniškega agenta
- client_family - Klasifikacija odjemalcev na visoki ravni (npr. brskalnik, bot, aplikacija)
- os_family - Klasifikacija operacijskega sistema na visoki ravni
Natančna polja se lahko sčasoma spreminjajo, ko se nabor podatkov povečuje.
Način Iskanja
Ujemanje uporabniškega agenta se izvaja na normaliziranih nizih.
Natančna ujemanja so prednostna; delna ali heuristična ujemanja so namerno izključena, da delovanje ostane predvidljivo in enostavno za odpravljanje napak.
Prispevanje
Prispevki so zelo dobrodošli in pomagajo izboljšati splošno kakovost in natančnost tega projekta.
Najbolj učinkovit način prispevanja je dodajanje ali posodabljanje normaliziranih vnosov uporabniškega agenta v datoteko user_agents.json, skupaj z ustreznimi podatki o klasifikaciji.
Ko bodo vaše spremembe pripravljene, prosimo oddajte pull request, ki vsebuje potrebne podatke in/ali posodobitve kode.
Tudi delne ali nepopolne informacije so koristne in cenjene – vsak prispevek prispeva k izboljšanju pokritosti in dolgoročne zanesljivosti.
Začetek (Hitri vodič)
Jedro tega projekta je nabor datotek JSON s podatki, ki se nahajajo v imeniku data/.
Da bi olajšali vzdrževanje in ponovno uporabo teh podatkov, repozitorij vključuje manjši nabor preprostih Node.js skriptov, ki izvajajo osnovno validacijo in naloge izvoza.
Najpogostejši razpoložljivi ukazi:
- npm run test - Validira JSON podatke in preveri napake v strukturi ali skladnosti.
- Ustvari, razvrsti in izvozi normalizirane podatke v druge formate programskih jezikov (npr. Java) za lažjo integracijo.
Ta orodja so namenoma zelo preprosta, osredotočena na točnost podatkov in prenosljivost, namesto na zapleteno obdelavo.
Nizi User-Agent Niso Zanesljivi
Pridobivanje točnih informacij iz nizov uporabniškega agenta je zaradi več razlogov nezanesljivo:
- Ne obstaja formalni standard ali specifikacija, ki ureja strukturo ali vsebino nizov uporabniškega agenta
- Veliko uporabniških agentov namerno lažno predstavljajo ali posnemajo druge uporabniške agente zaradi združljivosti in razlogov, povezanih z zastarelo tehnologijo.
Zaradi tega je izjemno težko določiti podatke o uporabniškem agentu na popolnoma natančen in dosleden način.
Zato je treba to knjižnico jemati kot rešitev po najboljših močeh, ne kot vir zagotovljene ali avtoritativne resnice.
Nadaljnja uporaba in prispevki skupnosti lahko izboljšata natančnost sčasoma.
Verzije in Stabilnost
Podatkovni nabor se lahko s časom spreminja, saj se razvijajo uporabniški agenti.
Klasifikacije se ne štejejo za prelomne spremembe, tudi med manjšimi verzijami.
Potrošniki naj rezultate obravnavajo kot namige, ki temeljijo na najboljšem naporu, ne pa kot pogodbeno jamstvo.
Licenca
Ta projekt in njegovi podatki so izdani pod licenco Apache License 2.0 (Apache-2.0).
Komerčna uporaba, prilagoditve in redistribucije so dovoljene.
Prispevki so dobrodošli in cenjeni.
Blagovna znamka
PageviewsOnline, Two-Dot-Oh ter vsi povezani logotipi, imena storitev ali blagovne znamke so blagovne znamke podjetja Two-Dot-Oh.
Ta projekt je odprtokoden; vendar uporaba imena PageviewsOnline ali katere koli povezane blagovne znamke v zvezi z izdelkom, storitvijo ali ponudbo ni dovoljena brez predhodnega pisnega soglasja.
Razvejitve in izpeljana dela morajo uporabljati drugo ime in drugo blagovno identiteto ter ne smejo nakazovati podpore ali povezanosti z PageviewsOnline ali Two-Dot-Oh.