Tämä tietovarasto sisältää normalisoidun, kuratoidun käyttäjäagenttimerkkijonotietokannan, joka on tallennettu JSON-tiedostoina ja suunniteltu käytettäväksi hakutauluna, jotta voidaan muodostaa yksinkertaisia käyttäjäagenttitietoja, kuten käyttäjäagentin asiakasohjelma ja käyttöjärjestelmä.
Se toimii osana PageviewsOnlinea, mutta tässä se julkaistaan yleiskäyttöön.
Aineistoon on lisätty yksinkertaisia apuohjelmia aineiston validoimiseksi ja sen viemiseksi muihin formaatteihin tai ohjelmointikieliin (kuten Java).
Projektin filosofia
Projektin tavoitteena ei ole tarjota varmaa tai täysin tarkkaa käyttäjäagentin tunnistusjärjestelmää, vaan käytännöllinen, paras mahdollinen ratkaisu, joka paranee ajan myötä reaalimaailman käytön ja yhteisön panosten kautta.
Käyttäjäagentin tunnistus on luonnostaan epätarkkaa. Sen sijaan, että tavoittelisimme täydellistä tarkkuutta, tämä projekti keskittyy olemaan:
- Käytännöllinen
- Ylläpidettävä
- Läpinäkyvä
- Riittävän hyvä käytännön analytiikkaan ja luokitteluun
Tarkkuus paranee ajan myötä kuratoitujen päivitysten, reaalimaailman käytön ja yhteisön panosten ansiosta.
Heuristinen jäsentäminen ja monimutkaiset säännölliset lausekkeet tekevät usein kompromissin ennustettavuuden ja marginaalisen tarkkuuden paranemisen välillä.
Tämä projekti suosii:
- Läpinäkyvyys taikuuden edelle
- Kuratoidut tiedot läpinäkymättömän logiikan yläpuolella
- Selitettävät tulokset spekulatiivisen havaitsemisen sijaan
Ominaisuudet
- Normalisoitu, ihmisen tarkastama käyttäjäagenttitietojoukko
- Yksinkertainen ja ennustettava hakutoiminto
- JSON-pohjainen formaatti, helppo tarkastella ja hallita versioita
- Kevyet validointiskriptit
- Vie apufunktiot muille kielille (esim. Java)
- Käytössä aktiivisesti SaaS-tuotantoympäristössä
Normalisoidut Käyttäjäagenttien Merkkijonot
Tämän projektin ensisijaisena tavoitteena on poimia käyttäjäagenttien merkkijonoista korkean tason, vakaata tietoa nopeasti ja ennustettavasti.
Tämän tueksi jokainen käyttäjäagentin merkkijono normalisoidaan ennen käsittelyä. Normalisointi poistaa epävakaata vaihtelua (kuten versionumeroita ja kirjoitusasueroja) säilyttäen samalla käyttäjäagentin rakenteellisen ja semanttisen merkityksen.
Käyttäjäagenttien merkkijonot normalisoidaan seuraavien vaiheiden avulla:
- Korvaa kaikki numeeriset merkit (0-9) paikkamerkkinä x. Tämä poistaa versionmuutoksista aiheutuvan kohinan samalla kun säilytetään token-rakenne ja pituus.
- Muuta koko merkkijono pieniksi kirjaimiksi. Käyttäjäagentin tunnisteet ovat käytännössä kirjainkooltaan riippumattomia, ja pienille kirjaimille muuttaminen varmistaa yhdenmukaiset ja luotettavat haut.
Esimerkiksi seuraava käyttäjäagentin merkkijono:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
On normalisoitu:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Tämä normalisointilähestymistapa helpottaa käyttäjäagenttien ryhmittelyä, vertailua ja ylläpitoa ajan mittaan, samalla kun se pysyy riittävän tarkkana korkean tason asiakas- ja käyttöjärjestelmäluokittelussa.
Poistamalla versiokohtaista ja kirjainkokoa koskevaa vaihtelua hakuprosessi tulee ennustettavammaksi ja kestää tulevia käyttäjäagentin muutoksia.
Tietomuoto
Jokainen normalisoitu käyttäjäagenttitietue sisältää:
- fi - Normalisoidun käyttäjäagentin merkkijono
- client_family - Korkean tason asiakasluokitus (esim. selain, botti, sovellus)
- os_family - Korkeatasoinen käyttöjärjestelmäluokitus
Tarkat kentät voivat muuttua ajan myötä, kun tietojoukko kasvaa.
Haun Käyttäytyminen
Käyttäjäagentin vastaavuus suoritetaan normalisoitujen merkkijonojen perusteella.
Täsmälliset vastaavuudet ovat etusijalla; osittainen tai heuristinen vastaavuus vältetään tarkoituksella, jotta käyttäytyminen pysyy ennustettavana ja virheenkorjattavana.
Osallistuminen
Kehitysehdotuksia arvostetaan suuresti, ja ne auttavat parantamaan tämän projektin yleistä laatua ja tarkkuutta.
Merkittävin tapa osallistua on lisätä tai päivittää normalisoituja käyttäjäagentti-tietueita user_agents.json-tiedostoon sekä niihin liittyviä luokittelutietoja.
Kun muutokset ovat valmiita, lähetä pull request, joka sisältää tarvittavat tiedot ja/tai koodimuutokset.
Jopa osittainen tai puutteellinen tieto on hyödyllistä ja arvostettua - jokainen panos auttaa parantamaan kattavuutta ja pitkän aikavälin luotettavuutta.
Päästä Alkuun (Nopea Opas)
Tämän projektin ydin on JSON-datatiedostojen joukko, joka sijaitsee data/ -hakemistossa.
Tämän datan ylläpidon ja uudelleenkäytön helpottamiseksi repositorio sisältää pienen joukon yksinkertaisia Node.js-skriptejä, jotka suorittavat perusvalidoinnin ja vientitehtäviä.
Yleisesti käytettävissä olevat komennot:
- npm run test - Varmistaa JSON-tietojen oikeellisuuden ja tarkistaa rakenteelliset sekä johdonmukaiset virheet.
- npm run build - Kokoaa, lajittelee ja vie normalisoidun datan muihin ohjelmointikieliin sopiviin formaatteihin (kuten Java) helpomman integroinnin mahdollistamiseksi.
Nämä työkalut ovat tarkoituksella minimaalisia, keskittyen tietojen oikeellisuuteen ja siirrettävyyteen eikä monimutkaiseen käsittelyyn.
Käyttäjä-Agentin merkkijonot eivät ole luotettavia
Käyttäjäagentti-merkkijonoista johdettujen tarkkojen tietojen saaminen on luonteeltaan epäluotettavaa useista syistä:
- Ei ole olemassa muodollista standardia tai spesifikaatiota, joka säätelee käyttäjäagenttien merkkijonojen rakennetta tai sisältöä.
- Monet käyttäjäagentit teeskentelevät tahallisesti tai imitoivat muita käyttäjäagentteja yhteensopivuuden ja vanhojen syiden vuoksi
Tästä syystä on äärimmäisen vaikeaa määrittää käyttäjäagenttitiedot täysin tarkasti ja johdonmukaisesti.
Tätä kirjastoa tulisi siksi pitää parhaana mahdollisena ratkaisuna, eikä sitä tulisi pitää varmistetun tai auktoriteetiltaan todellisen totuuden lähteenä.
Jatkuvan käytön ja yhteisön panosten myötä tarkkuus voi parantua ajan myötä.
Versiointi & Vakaus
Aineisto saattaa muuttua ajan myötä käyttäjäagenttien kehittyessä.
Luokituksia ei pidetä rikkovina muutoksina, edes pienempien versioiden välillä.
Kuluttajien tulisi pitää tuloksia parhaimpina vihjeinä, ei sopimuksellisia takuita.
Lisenssi
Tämä projekti ja sen tiedot julkaistaan Apache License 2.0 (Apache-2.0) -lisenssillä.
Kaupallinen käyttö, muokkaus ja uudelleenjakelu ovat sallittuja.
Kaikki panokset ovat tervetulleita ja arvostettuja.
Tavaramerkki
PageviewsOnline, Two-Dot-Oh sekä kaikki logot, palvelujen nimet tai brändäys ovat Two-Dot-Oh:n tavaramerkkejä.
Tämä projekti on avoimen lähdekoodin; kuitenkin PageviewsOnline-nimen tai siihen liittyvän brändäyksen käyttöä minkään tuotteen, palvelun tai tarjouksen yhteydessä ei saa tehdä ilman etukäteen kirjallista suostumusta.
Haarukoiden ja johdannaisteosten on käytettävä erillistä nimeä ja brändäystä, eikä niiden tule antaa vaikutelmaa siitä, että PageviewsOnline tai Two-Dot-Oh tukee tai liittyy niihin.