Aquest repositori conté un conjunt de dades normalitzades i curades de cadenes d'agents d'usuari, emmagatzemades com a arxius JSON i dissenyades per ser utilitzades com a taula de consultes per derivar dades simples associades a l'agent d'usuari, com el client i el sistema operatiu.
S'utilitza com a component de PageviewsOnline, però es publica aquí per a ús general.
El conjunt de dades és complementat per scripts d'ajuda simples per validar les dades i exportar-les a altres formats o llenguatges de programació (com Java).
Filosofia del projecte
L'objectiu d'aquest projecte no és proporcionar un sistema de detecció de l'agent d'usuari infal·lible o perfectament exacte, sinó una solució pràctica, amb el millor esforç possible, que millori amb el temps a través de l'ús en el món real i de les contribucions de la comunitat.
La detecció de l'agent d'usuari és inherentment imperfecta. En lloc de perseguir una precisió completa, aquest projecte es centra en ser:
- Pràctic
- Mantenible
- Transparente
- Suficientment bo per a l’anàlisi i classificació del món real
La precisió millora amb el temps a través d'actualitzacions curades, l'ús al món real i les contribucions de la comunitat.
L'anàlisi heurística i les expressions regulars complexes sovint cedeixen la previsibilitat a canvi de guanys marginals d'exactitud.
Aquest projecte afavoreix:
- Transparència sobre la màgia
- Dades curades sobre la lògica opaca
- Resultats explicables per sobre de la detecció especulativa
Característiques
- Conjunt de dades d'agents d'usuari normalitzades i revisades per humans
- Comportament de cerca senzill i previsible
- Format basat en JSON, fàcil d'inspeccionar i amb control de versions
- Scripts de validació lleugers
- Exporta helpers per a altres llenguatges (p. ex. Java)
- Actualment utilitzat en un entorn SaaS de producció
Cadenes normalitzades d'agent d'usuari
El objectiu principal d'aquest projecte és extreure informació d'alt nivell i estable a partir de cadenes d'agent d'usuari de manera ràpida i previsible.
Per donar suport a això, cada cadena de l'agent d'usuari s'normalitza abans de processar-la. La normalització elimina la variació inestable (com ara números de versió i diferències de majúscules i minúscules) mentre es conserva el significat estructural i semàntic de l'agent d'usuari.
Les cadenes de l'agent d'usuari es normalitzen seguint els següents passos:
- Substitueix tots els dígits numèrics (0-9) pel caràcter marcador x. Això elimina el soroll causat per canvis de versió, mentre es conserva l'estructura i la longitud del token.
- Converteix tota la cadena a minúscules. Els tokens de l'agent d'usuari són insensibles a les majúscules segons la convenció, i utilitzar minúscules assegura consultes consistents i fiables.
Per exemple, la següent cadena d'agent de l'usuari:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Es normalitza a:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Aquest enfoc de normalització facilita agrupar, comparar i mantenir els agents d'usuari al llarg del temps, alhora que encara és prou precisa per a la classificació d'alt nivell del client i del sistema operatiu.
En eliminar la variabilitat específica de la versió i la relacionada amb el cas (majúscules/minúscules), el procés de cerca serà més previsible i més robust davant els canvis futurs de l'agent d'usuari.
Format de dades
Cada entrada normalitzada de l'agent d'usuari inclou:
- id - La cadena normalitzada de l'agent d'usuari
- client_family - Classificació de clients a nivell superior (per exemple, navegador, bot, aplicació)
- os_family - Classificació de sistemes operatius d'alt nivell
Els camps exactes poden evolucionar amb el temps a mesura que el conjunt de dades creix.
Comportament de cerca
La coincidència de l'agent d'usuari s'executa sobre cadenes normalitzades.
Les coincidències exactes són preferides; la coincidència parcial o heurística s'evita intencionadament per mantenir un comportament previsible i depurable.
Contribuint
Les aportacions són molt benvingudes i ajuden a millorar la qualitat i la precisió globals d'aquest projecte.
La manera més eficaç de contribuir és afegir o actualitzar entrades normalitzades d'agents d'usuari al fitxer user_agents.json, juntament amb dades de classificació rellevants.
Un cop els vostres canvis estiguin llestos, si us plau, envieu una pull request que contingui les dades i/o les actualitzacions de codi necessàries.
Fins i tot la informació parcial o incompleta és útil i apreciada — cada aportació ajuda a millorar la cobertura i la fiabilitat a llarg termini.
Començar (Guia ràpida)
El nucli d'aquest projecte és el conjunt de fitxers de dades JSON, situats al directori data/.
Per ajudar a mantenir i reutilitzar aquestes dades, el repositori inclou un petit conjunt de scripts senzills de Node.js que realitzen validacions bàsiques i tasques d'exportació.
Comandes comunes disponibles:
- npm run test - Valida les dades JSON i verifica possibles errors d'estructura o de consistència.
- npm run build - Crea, ordena i exporta les dades normalitzades a altres formats de llenguatges de programació (com Java) per a una integració més fàcil.
Aquestes eines són intencionadament mínimes, centrant-se en la correcció de dades i en la portabilitat més que en el processament complex.
Les cadenes d'User-Agent no són fiables
Derivar informació precisa a partir de cadenes d'agent d'usuari és inherentment poc fiable per diverses raons:
- No hi ha cap estàndard formal ni cap especificació que reguli l’estructura o el contingut de les cadenes d’agent d’usuari.
- Molts agents d'usuari intencionadament suplanten o imiten altres agents d'usuari per raons de compatibilitat i de versions antigues
Per això, és extremadament difícil determinar les dades de l'agent d'usuari de manera completament precisa i coherent.
Aquesta biblioteca, per tant, s'ha de veure com una solució de millor esforç, i no com una font de veritat garantida ni de gran autoritat.
Amb l'ús continuat i les contribucions de la comunitat, la precisió pot millorar amb el temps.
Gestió de versions i estabilitat
El conjunt de dades pot canviar amb el temps a mesura que evolucionin els agents d'usuari.
Les classificacions no es consideren canvis que trenquen la compatibilitat, fins i tot entre versions menors.
Els consumidors haurien de considerar els resultats com a suggeriments de millor esforç, i no com a garanties contractuals.
Llicència
Aquest projecte i les seves dades estan publicades sota la llicència Apache 2.0 (Apache-2.0).
L'ús comercial, la modificació i la redistribució estan permesos.
Les aportacions són benvingudes i apreciades.
Marca
PageviewsOnline, Two-Dot-Oh, i qualsevol logotip associat, noms de serveis o imatge de marca són marques comercials de Two-Dot-Oh.
Aquest projecte és de codi obert; no obstant això, l'ús del nom PageviewsOnline o de qualsevol marca associada en relació amb un producte, servei o oferta no està permès sense el consentiment previ per escrit.
Les bifurcacions i les obres derivades han de fer servir un nom i una identitat de marca diferents i no han de donar a entendre cap aprovació per part de PageviewsOnline ni afiliació amb PageviewsOnline o Two-Dot-Oh.