Repositori ini berisi kumpulan data agen pengguna yang telah dinormalisasi dan dikurasi, disimpan sebagai berkas JSON, dan dirancang untuk digunakan sebagai tabel lookup guna memperoleh data agen pengguna yang sederhana, seperti klien agen pengguna dan sistem operasi.
Ini digunakan sebagai komponen PageviewsOnline, tetapi dipublikasikan di sini untuk penggunaan umum.
Dataset ini dilengkapi dengan skrip pembantu sederhana untuk memvalidasi data dan mengekspornya ke format lain atau bahasa pemrograman (seperti Java).
Filosofi Proyek
Tujuan proyek ini bukan untuk menyediakan sistem deteksi user-agent yang benar-benar kebal terhadap kesalahan atau sepenuhnya akurat, tetapi lebih sebagai solusi praktis dengan upaya terbaik yang berkembang seiring waktu melalui penggunaan di dunia nyata dan kontribusi komunitas.
Deteksi agen pengguna secara inheren tidak sempurna. Alih-alih mengejar akurasi penuh, proyek ini fokus pada menjadi:
- Praktis
- Mudah dipelihara
- Transparan
- Cukup andal untuk analitik dan klasifikasi dunia nyata
Akurasi meningkat seiring waktu melalui pembaruan terkurasi, penggunaan di dunia nyata, dan kontribusi komunitas.
Penguraian heuristik dan ekspresi reguler yang kompleks sering kali mengorbankan prediktabilitas demi peningkatan akurasi yang marginal.
Proyek ini lebih mengutamakan:
- Transparansi lebih penting daripada keajaiban
- Data terkurasi lebih diutamakan daripada logika yang tidak transparan
- Hasil yang dapat dijelaskan lebih diutamakan daripada deteksi spekulatif
Fitur
- Kumpulan data agen pengguna yang telah dinormalisasi dan ditinjau secara manual
- Perilaku pencarian yang sederhana dan dapat diprediksi
- Format berbasis JSON, mudah diperiksa dan menggunakan kontrol versi
- Skrip validasi ringan
- Ekspor helper untuk bahasa lain (mis. Java)
- Digunakan secara aktif dalam lingkungan SaaS produksi
String Agen Pengguna Terstandarisasi
Tujuan utama proyek ini adalah mengekstrak informasi tingkat tinggi yang stabil dari deretan string user agent dengan cara yang cepat dan dapat diprediksi.
Untuk mendukung hal ini, setiap string agen pengguna dinormalisasi sebelum diproses. Normalisasi menghilangkan variasi yang tidak stabil (seperti nomor versi dan perbedaan huruf besar/kecil) sambil mempertahankan makna struktural dan semantik dari agen pengguna.
String agen pengguna dinormalisasi menggunakan langkah-langkah berikut:
- Gantilah semua digit numerik (0-9) dengan karakter placeholder x. Ini menghilangkan gangguan yang disebabkan oleh perubahan versi sambil mempertahankan struktur token dan panjangnya.
- Ubah seluruh string menjadi huruf kecil. Token agen pengguna tidak membedakan huruf besar-kecil secara konvensional, dan penggunaan huruf kecil memastikan pencarian yang konsisten dan andal.
Sebagai contoh, string agen pengguna berikut:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Dinormalisasi menjadi:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Pendekatan normalisasi ini memudahkan pengelompokan, perbandingan, dan pemeliharaan agen pengguna seiring waktu, sambil tetap cukup akurat untuk klasifikasi tingkat tinggi terhadap klien dan sistem operasi.
Dengan menghilangkan variasi yang spesifik terhadap versi dan terkait kapitalisasi, proses pencarian menjadi lebih dapat diprediksi dan tahan terhadap perubahan agen pengguna di masa mendatang.
Format Data
Setiap entri agen pengguna yang telah dinormalisasi mencakup:
- id - String agen pengguna yang dinormalisasi
- client_family - Klasifikasi klien tingkat tinggi (mis. browser, bot, app)
- os_family - Klasifikasi tingkat tinggi sistem operasi
Kolom-kolom tertentu mungkin berubah seiring pertumbuhan dataset.
Perilaku Pencarian
Pencocokan agen pengguna dilakukan terhadap string yang dinormalisasi.
Kecocokan yang tepat diutamakan; kecocokan parsial atau berbasis heuristik sengaja dihindari agar perilaku tetap terprediksi dan mudah di-debug.
Kontribusi
Kontribusi sangat kami hargai dan membantu meningkatkan kualitas serta akurasi proyek ini secara keseluruhan.
Cara paling berdampak untuk berkontribusi adalah dengan menambahkan atau memperbarui entri user agent yang telah dinormalisasi dalam file user_agents.json, beserta data klasifikasi terkait yang relevan.
Setelah perubahan Anda siap, silakan ajukan pull request yang berisi data dan/atau pembaruan kode yang diperlukan.
Bahkan informasi yang sebagian atau tidak lengkap pun berguna dan dihargai - setiap kontribusi membantu meningkatkan cakupan dan keandalan jangka panjang.
Mulai (Panduan Cepat)
Inti dari proyek ini adalah kumpulan berkas data JSON, yang terletak di direktori data/.
Untuk membantu memelihara dan menggunakan kembali data ini, repositori ini menyertakan sejumlah kecil skrip Node.js sederhana yang melakukan validasi dasar dan tugas ekspor.
Perintah yang tersedia secara umum:
- npm run test - Memvalidasi data JSON dan memeriksa adanya kesalahan struktural atau inkonsistensi.
- npm run build - Membuat, mengurutkan, dan mengekspor data yang telah dinormalisasi ke format bahasa pemrograman lain (seperti Java) untuk integrasi yang lebih mudah.
Alat-alat ini sengaja minimal, berfokus pada keakuratan data dan portabilitas daripada pemrosesan yang kompleks.
User-Agent Strings Tidak Dapat Diandalkan
Menarik informasi yang akurat dari deretan string agen pengguna secara inheren tidak dapat diandalkan karena beberapa alasan:
- Tidak ada standar formal atau spesifikasi yang mengatur struktur atau isi string user-agent.
- Banyak agen pengguna sengaja menyamarkan identitasnya atau meniru agen pengguna lain demi alasan kompatibilitas dan warisan
Karena hal ini, sangat sulit untuk menentukan data user-agent secara akurat dan konsisten.
Oleh karena itu pustaka ini sebaiknya dipandang sebagai solusi terbaik yang bersifat upaya, bukan sumber kebenaran yang dijamin atau otoritatif.
Dengan penggunaan yang berkelanjutan dan kontribusi komunitas, akurasi dapat meningkat seiring waktu.
Pengelolaan Versi & Stabilitas
Dataset dapat berubah seiring waktu saat agen pengguna berkembang.
Klasifikasi tidak dianggap sebagai perubahan yang memutus kompatibilitas, bahkan di antara versi minor.
Konsumen sebaiknya menganggap hasilnya sebagai petunjuk terbaik, bukan jaminan kontraktual.
Lisensi
Proyek ini beserta datanya dirilis di bawah Apache License 2.0 (Apache-2-0).
Penggunaan komersial, modifikasi, dan pendistribusian ulang diizinkan.
Kontribusi sangat kami sambut dan hargai.
Merek Dagang
PageviewsOnline, Two-Dot-Oh, dan logo-logo terkait, nama-nama layanan, atau branding apa pun merupakan merek dagang dari Two-Dot-Oh.
Proyek ini bersifat sumber terbuka; namun, penggunaan nama PageviewsOnline atau merek terkait apa pun sehubungan dengan produk, layanan, atau tawaran tidak diizinkan tanpa persetujuan tertulis sebelumnya.
Forks dan karya turunan harus menggunakan nama dan branding yang berbeda dan tidak boleh menyiratkan dukungan atau afiliasi dengan PageviewsOnline atau Two-Dot-Oh.