Αυτό το αποθετήριο περιέχει ένα κανονικοποιημένο, επιμελημένο σύνολο δεδομένων από σειρές User-Agent, αποθηκευμένο ως αρχεία JSON και σχεδιασμένο να χρησιμοποιείται ως πίνακας αναζήτησης προκειμένου να εξαχθούν απλά δεδομένα User-Agent, όπως ο πελάτης του User-Agent και το λειτουργικό σύστημα.
Χρησιμοποιείται ως στοιχείο του PageviewsOnline, αλλά δημοσιεύεται εδώ για γενική χρήση.
Το σύνολο δεδομένων συμπληρώνεται από απλά βοηθητικά scripts για τον έλεγχο των δεδομένων και την εξαγωγή τους σε άλλες μορφές ή γλώσσες προγραμματισμού (όπως η Java).
Φιλοσοφία Έργου
Ο στόχος αυτού του έργου δεν είναι να προσφέρει ένα αδιάβλητο ή τέλεια ακριβές σύστημα εντοπισμού User-Agent, αλλά μια πρακτική λύση, με την καλύτερη δυνατή προσπάθεια, που βελτιώνεται με την πάροδο του χρόνου μέσω πραγματικής χρήσης και συνεισφορών της κοινότητας.
Ο εντοπισμός του User agent είναι εγγενώς ατελής. Αντί να επιδιώκουμε απόλυτη ακρίβεια, αυτό το έργο εστιάζει στο να είναι:
- Πρακτικό
- Συντηρήσιμο
- Διαφανές
- Αρκετά καλό για αναλύσεις και ταξινόμηση στον πραγματικό κόσμο.
Η ακρίβεια βελτιώνεται με την πάροδο του χρόνου μέσω επιμελημένων ενημερώσεων, χρήσης στην πράξη και συνεισφορών από την κοινότητα.
Η ευρετική ανάλυση και οι πολύπλοκες κανονικές εκφράσεις συχνά θυσιάζουν την προβλεψιμότητα για μικρές βελτιώσεις στην ακρίβεια.
Αυτό το έργο προτιμά:
- Η διαφάνεια υπερέχει της μαγείας
- Επιμελημένα δεδομένα αντί για αδιαφανή λογική
- Εξηγήσιμα αποτελέσματα αντί για υποθετική ανίχνευση
Χαρακτηριστικά
- Ομαλοποιημένο και ελεγμένο από ανθρώπους σύνολο δεδομένων User-Agent
- Απλή και προβλέψιμη συμπεριφορά αναζήτησης
- Μορφή βασισμένη σε JSON, εύκολη στον έλεγχο και στη διαχείριση εκδόσεων
- Ελαφριά σκριπτ επικύρωσης
- Εξαγωγή βοηθητικών εργαλείων για άλλες γλώσσες (π.χ. Java)
- Χρησιμοποιείται ενεργά σε περιβάλλον παραγωγής SaaS
Κανονικοποιημένες User Agent Συμβολοσειρές
Ο βασικός στόχος αυτού του έργου είναι να εξάγει πληροφορίες υψηλού επιπέδου και σταθερές από συμβολοσειρές user-agent με γρήγορο και προβλέψιμο τρόπο.
Για να το υποστηρίξουμε, κάθε συμβολοσειρά User-Agent κανονικοποιείται πριν από την επεξεργασία. Η κανονικοποίηση αφαιρεί ασταθείς παραλλαγές (όπως αριθμούς έκδοσης και διαφορές πεζών-κεφαλαίων) διατηρώντας το δομικό και σημασιολογικό νόημα του User-Agent.
Οι συμβολοσειρές User-Agent κανονικοποιούνται χρησιμοποιώντας τα ακόλουθα βήματα:
- Αντικαταστήστε όλους τους αριθμητικούς χαρακτήρες (0-9) με τον χαρακτήρα x. Αυτό αφαιρεί τον θόρυβο που προκαλείται από αλλαγές έκδοσης, διατηρώντας τη δομή και το μήκος των tokens.
- Μετατρέψτε ολόκληρη τη συμβολοσειρά σε πεζά γράμματα. Τα tokens του User agent είναι κατά σύμβαση χωρίς διάκριση πεζών-κεφαλαίων, και η μετατροπή σε πεζά εξασφαλίζει συνεπείς και αξιόπιστες αναζητήσεις.
Για παράδειγμα, η παρακάτω συμβολοσειρά 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
Κανονικοποιείται σε:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Αυτή η προσέγγιση ομαλοποίησης διευκολύνει την ομαδοποίηση, τη σύγκριση και τη διατήρηση των user agents με την πάροδο του χρόνου, ενώ παραμένει αρκετά ακριβής για την ταξινόμηση πελάτη και λειτουργικού συστήματος σε υψηλό επίπεδο.
Αφαιρώντας τη μεταβλητότητα που σχετίζεται με τις εκδόσεις και με την περίπτωση των χαρακτήρων, η διαδικασία εύρεσης γίνεται πιο προβλέψιμη και ανθεκτική σε μελλοντικές αλλαγές του user agent.
Μορφή Δεδομένων
Κάθε κανονικοποιημένη καταχώρηση πράκτορα χρήστη περιλαμβάνει:
- id - Η κανονικοποιημένη συμβολοσειρά του user agent
- client_family - Κατηγορία πελάτη υψηλού επιπέδου (π.χ. περιηγητής, ρομπότ, εφαρμογή)
- os_family - Υψηλού επιπέδου ταξινόμηση του λειτουργικού συστήματος
Τα ακριβή πεδία μπορεί να αλλάξουν με την πάροδο του χρόνου καθώς μεγαλώνει το σύνολο δεδομένων.
Τρόπος Αναζήτησης
Η αντιστοίχιση του User agent πραγματοποιείται σε κανονικοποιημένες συμβολοσειρές.
Προτιμούνται ακριβείς αντιστοιχίσεις· αποφεύγονται σκόπιμα οι μερικές ή ευριστικές αντιστοιχίσεις, ώστε η συμπεριφορά να παραμείνει προβλέψιμη και εύκολη στην αποσφαλμάτωση.
Συνεισφορά
Οι συνεισφορές είναι ευπρόσδεκτες και βοηθούν στη βελτίωση της συνολικής ποιότητας και ακρίβειας αυτού του έργου.
Ο πιο ουσιαστικός τρόπος να συνεισφέρετε είναι να προσθέσετε ή να ενημερώσετε τις κανονικοποιημένες εγγραφές User-Agent στο αρχείο user_agents.json, μαζί με τα σχετικά δεδομένα ταξινόμησης.
Μόλις οι αλλαγές σας είναι έτοιμες, παρακαλούμε υποβάλετε ένα pull request που περιέχει τα απαραίτητα δεδομένα και/ή ενημερώσεις κώδικα.
Ακόμη και μερικές ή ελλιπείς πληροφορίες είναι χρήσιμες και εκτιμώνται - κάθε συνεισφορά συμβάλλει στη βελτίωση της κάλυψης και της μακροπρόθεσμης αξιοπιστίας.
Ξεκινώντας (Οδηγός Γρήγορης Εκκίνησης)
Ο πυρήνας αυτού του πρότζεκτ είναι το σύνολο αρχείων δεδομένων JSON που βρίσκονται στον φάκελο data/.
Για τη συντήρηση και επαναχρησιμοποίηση αυτών των δεδομένων, το αποθετήριο περιλαμβάνει ένα μικρό σετ απλών scripts Node.js που εκτελούν βασικές επικυρώσεις και εργασίες εξαγωγής.
Κοινές διαθέσιμες εντολές:
- npm run test - Ελέγχει τα δεδομένα JSON και εντοπίζει σφάλματα δομής ή συνοχής.
- npm run build - Εκτελεί, ταξινομεί και εξάγει τα κανονικοποιημένα δεδομένα σε άλλες μορφές γλωσσών προγραμματισμού (όπως η Java) για ευκολότερη ενσωμάτωση.
Αυτά τα εργαλεία είναι σκόπιμα ελάχιστα, εστιάζοντας στην ακρίβεια των δεδομένων και στη φορητότητα αντί για περίπλοκη επεξεργασία.
Οι συμβολοσειρές User-Agent δεν είναι αξιόπιστες
Η εξαγωγή ακριβών πληροφοριών από συμβολοσειρές user-agent είναι εγγενώς αναξιόπιστη για αρκετούς λόγους:
- Δεν υπάρχει επίσημο πρότυπο ή προδιαγραφή που να διέπει τη δομή ή το περιεχόμενο των συμβολοσειρών user-agent.
- Πολλοί πελάτες (user-agents) προσποιούνται ή μιμούνται άλλους πελάτες για λόγους συμβατότητας και παλαιότερων εκδόσεων
Για αυτόν τον λόγο, είναι εξαιρετικά δύσκολο να προσδιοριστούν τα δεδομένα του user-agent με πλήρη ακρίβεια και συνέπεια.
Αυτή η βιβλιοθήκη θα πρέπει συνεπώς να θεωρείται ως μια λύση με την καλύτερη δυνατή προσπάθεια, και όχι ως πηγή εγγυημένης ή εξουσιοδοτημένης αλήθειας.
Με συνεχή χρήση και συνεισφορές από την κοινότητα, η ακρίβεια μπορεί να βελτιωθεί με τον καιρό.
Διαχείριση Εκδόσεων & Σταθερότητα
Το σύνολο δεδομένων μπορεί να αλλάξει με την πάροδο του χρόνου καθώς εξελίσσονται οι user agents.
Οι ταξινομήσεις δεν θεωρούνται αλλαγές που διακόπτουν τη συμβατότητα, ακόμη και μεταξύ μικρών εκδόσεων.
Οι καταναλωτές θα πρέπει να θεωρούν τα αποτελέσματα ως ενδείξεις με την καλύτερη δυνατή προσπάθεια, όχι ως νομικές εγγυήσεις.
Άδεια χρήσης
Αυτό το έργο και τα δεδομένα του διατίθενται υπό την Apache License 2.0 (Apache-2.0).
Επιτρέπεται η εμπορική χρήση, η τροποποίηση και η αναδιανομή.
Οι συνεισφορές είναι ευπρόσδεκτες και εκτιμώνται.
Εμπορικό σήμα
PageviewsOnline, Two-Dot-Oh, και κάθε συναφές λογότυπο, όνομα υπηρεσίας ή branding, είναι εμπορικά σήματα της Two-Dot-Oh.
Αυτό το έργο είναι ανοικτού κώδικα· ωστόσο, η χρήση του ονόματος PageviewsOnline ή οποιασδήποτε σχετικής επωνυμίας σε σχέση με ένα προϊόν, υπηρεσία ή προσφορά δεν επιτρέπεται χωρίς προηγούμενη γραπτή συγκατάθεση.
Τα Forks και τα παραγωγά έργα πρέπει να χρησιμοποιούν διαφορετικό όνομα και εμπορική ταυτότητα και δεν πρέπει να υποδηλώνουν έγκριση ή σχέση με το PageviewsOnline ή το Two-Dot-Oh.