Acest repository conține un set normalizat, selectat cu grijă, de șiruri de agenți de utilizator, stocate sub formă de fișiere JSON și conceput pentru a fi folosit ca o tabelă de căutare pentru a deriva date simple despre agenții de utilizator, cum ar fi clientul și sistemul de operare al agentului utilizatorului.
Este folosit ca o componentă a PageviewsOnline, dar este publicat aici pentru uz general.
Setul de date este completat cu scripturi simple de ajutor pentru validarea datelor și pentru exportul acestora în alte formate sau limbaje de programare (de exemplu Java).
Filozofia Proiectului
Scopul acestui proiect nu este să ofere un sistem de detectare a user-agent-ului infailibil sau perfect precis, ci o soluție practică, cu eforturi reale de îmbunătățire, care evoluează în timp prin utilizarea în lumea reală și contribuțiile comunității.
Detecția agentului utilizatorului este în mod inerent imperfectă. În loc să căutăm precizia deplină, acest proiect se concentrează pe a fi:
- Practic
- Ușor de întreținut
- Transparent
- Destul de bun pentru analize din lumea reală și clasificare
Precizia se îmbunătățește în timp prin actualizări atent selecționate, utilizarea în lumea reală și contribuțiile comunității.
Parsarea heuristică și expresiile regulate complexe sacrifică adesea predictibilitatea în favoarea creșterilor de precizie marginală.
Acest proiect favorizează:
- Transparența peste magie
- Date selecționate în loc de logică opacă
- Rezultate explicabile, în loc de detectare speculativă
Caracteristici
- Set de date despre user agents, normalizat, verificat de oameni
- Comportament de căutare simplu și previzibil
- Format bazat pe JSON, ușor de inspectat și cu control al versiunilor
- Scripturi de validare ușoare
- Exportați funcții auxiliare pentru alte limbaje (de ex. Java)
- Este utilizat activ într-un mediu SaaS de producție
Șiruri Normalizate de Agenți Utilizatori
Scopul principal al acestui proiect este să extragă informații de nivel înalt și stabile din șirurile User-Agent într-un mod rapid și previzibil.
Pentru a facilita acest lucru, fiecare șir de user agent este normalizat înainte de procesare. Normalizarea elimină variațiile instabile (de exemplu numerele de versiune și diferențele de majuscule), păstrând în același timp sensul structural și semantic al user agent-ului.
Șirurile User-Agent sunt normalizate folosind pașii următorii:
- Înlocuiește toate cifrele (0-9) cu caracterul de substituție x. Acest lucru elimină zgomotul cauzat de schimbările de versiune, păstrând în același timp structura și lungimea tokenilor.
- Convertește întregul șir la litere mici. Tokenii de User-Agent sunt insensibili la majuscule prin convenție, iar transformarea în litere mici asigură căutări consistente și fiabile.
De exemplu, următorul șir User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Este normalizat la:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Această metodă de normalizare facilitează gruparea, compararea și întreținerea agenților utilizatorilor în timp, păstrând în același timp o precizie suficientă pentru o clasificare la nivel înalt a clientului și a sistemului de operare.
Prin eliminarea variabilității specifice versiunii și a variabilității legate de capitalizare, procesul de căutare devine mai previzibil și mai rezistent la modificările viitoare ale agenților utilizatori.
Formatul datei
Fiecare intrare normalizată a agentului utilizatorului conține:
- id - Șirul normalizat al User-Agent-ului
- client_family - Clasificare la nivel înalt a clientului (de exemplu browser, bot, aplicație)
- os_family - Clasificare la nivel înalt a sistemelor de operare
Câmpurile exacte pot evolua în timp pe măsură ce setul de date crește.
Comportament de Căutare
Potrivirea agentului utilizatorului se efectuează pe șiruri normalizate.
Potrivirile exacte sunt de preferat; potrivirile parțiale sau cele bazate pe reguli heuristice sunt evitate în mod intenționat pentru a menține comportamentul previzibil și ușor de depanat.
Contribuind
Contribuțiile sunt foarte binevenite și ajută la îmbunătățirea calității generale și a preciziei acestui proiect.
Cea mai eficientă modalitate de a contribui este să adăugați sau să actualizați intrări normalizate de user agent în fișierul user_agents.json, împreună cu orice date de clasificare relevante.
Odată ce modificările tale sunt gata, te rugăm să deschizi un pull request care conține datele necesare și/sau actualizările de cod.
Chiar și informațiile parțiale sau incomplete sunt utile și apreciate - fiecare contribuție ajută la îmbunătățirea acoperirii și a fiabilității pe termen lung.
Începerea (Ghid Rapid)
Nucleul acestui proiect este setul de fișiere JSON cu date, situate în directorul data/.
Pentru a ajuta la întreținerea și reutilizarea acestor date, depozitul include un mic set de scripturi Node.js simple care efectuează validări de bază și sarcini de export.
Comenzi obișnuite disponibile:
- npm run test - Validează datele JSON și verifică erorile structurale sau de consistență.
- Construiește, sortează și exportă datele normalizate în alte formate de limbaje de programare (cum ar fi Java) pentru o integrare mai ușoară.
Aceste instrumente sunt intenționat simple, concentrându-se pe corectitudinea datelor și portabilitatea acestora, mai degrabă decât pe procesare complexă.
Șirurile de User-Agent nu sunt de încredere.
Obținerea de informații exacte din șirurile de user-agent este, în mod inerent, nefiabilă din mai multe motive:
- Nu există o standardă formală sau o specificație care să reglementeze structura sau conținutul șirurilor de User-Agent
- Multe agenți de utilizator se deghizează intenționat sau imită alți agenți de utilizator din motive de compatibilitate și de vechime.
Din cauza acestui fapt, este extrem de dificil să determinăm informațiile despre user-agent într-un mod complet precis și consecvent.
Prin urmare, această bibliotecă ar trebui să fie privită ca o soluție de tip best-effort, nu ca o sursă de adevăr garantat sau autoritar.
Cu utilizarea continuă și contribuțiile comunității, precizia poate să se îmbunătățească în timp.
Versionarea & Stabilitatea
Setul de date se poate modifica în timp pe măsură ce agenții de utilizator evoluează.
Clasificările nu sunt considerate schimbări incompatibile, chiar între versiunile minore.
Consumatorii ar trebui sa trateze rezultatele ca simple indicatii, nu ca garantii contractuale.
Licență
Acest proiect și datele sale sunt puse la dispoziție sub Licența Apache 2.0 (Apache-2.0).
Utilizarea comercială, modificarea și redistribuirea sunt permise.
Contribuțiile sunt binevenite și apreciate.
Marcă înregistrată
PageviewsOnline, Two-Dot-Oh, și orice logo-uri asociate, nume de servicii sau branding sunt mărci comerciale ale Two-Dot-Oh.
Acest proiect este open source; cu toate acestea, utilizarea numelui PageviewsOnline sau a oricărei mărci asociate în legătură cu un produs, serviciu sau ofertă nu este permisă fără consimțământ scris prealabil.
Forkuri și opere derivate trebuie să folosească un nume diferit și o identitate de brand diferită și nu trebuie să sugereze susținere din partea PageviewsOnline sau afiliere cu PageviewsOnline sau Two-Dot-Oh.