Bu depo, normalize edilmiş ve özenle derlenmiş bir kullanıcı ajanı dizileri veri kümesini içerir; JSON dosyaları olarak saklanır ve basit kullanıcı ajanı verilerini türetmek için bir arama tablosu olarak kullanılmak üzere tasarlanmıştır; örneğin kullanıcı ajanı istemcisi ve işletim sistemi gibi.
PageviewsOnline'in bir bileşeni olarak kullanılır, ancak genel amaçlı kullanım için burada yayımlanır.
Veri kümesi, veriyi doğrulamak ve veriyi diğer biçimlere veya programlama dillerine (örneğin Java) aktarmak için basit yardımcı betiklerle tamamlanmıştır.
Proje Felsefesi
Bu projenin amacı kusursuz veya tamamen doğru bir kullanıcı ajanı tespit sistemi sunmak değildir; bunun yerine gerçek dünya kullanımı ve topluluk katkılarıyla zaman içinde gelişen pratik bir çözüm sunmaktır.
Kullanıcı ajanı tespiti doğası gereği kusurludur. Tam doğruluk peşinde koşmak yerine bu proje şu hedeflere odaklanıyor:
- Pratik
- Bakımı Kolay
- Şeffaf
- Gerçek dünya analitiği ve sınıflandırması için yeterli
Doğruluk zamanla, özenle seçilmiş güncellemeler, gerçek dünya kullanımı ve topluluk katkılarıyla artar.
Sezgisel ayrıştırma ve karmaşık düzenli ifadeler genellikle öngörülebilirlikten ödün vererek marjinal doğruluk artışları sağlar.
Bu proje şu konuları tercih eder:
- Şeffaflık sihirden üstündür
- Özenle seçilmiş veriler, örtük mantığa tercih edilir
- Spekülatif tespitler yerine açıklanabilir sonuçlar
Özellikler
- Normalleştirilmiş, insan tarafından gözden geçirilmiş kullanıcı aracı veri kümesi
- Basit ve öngörülebilir arama davranışı
- JSON tabanlı biçim, incelenmesi ve sürüm kontrolü kolay
- Hafif doğrulama betikleri
- Diğer diller için dışa aktarma yardımcıları (örn. Java)
- Üretim SaaS ortamında aktif olarak kullanılıyor
Normalleştirilmiş Kullanıcı Aracı Dizeleri
Bu projenin birincil amacı, kullanıcı ajanı dizelerinden hızlı ve öngörülebilir bir şekilde yüksek düzeyde ve istikrarlı bilgiler elde etmektir.
Bunu desteklemek için her kullanıcı ajanı dizesi işlenmeden önce normalize edilir. Normalizasyon, sürüm numaraları ve büyük/küçük harf farkları gibi kararsız varyasyonları ortadan kaldırırken, kullanıcı ajanının yapısal ve anlamsal anlamını korur.
Kullanıcı aracısı dizeleri şu adımlarla normalize edilir:
- Tüm sayısal rakamları (0-9) yer tutucu karakteri x ile değiştir. Bu, sürüm değişikliklerinden kaynaklanan gürültüyü ortadan kaldırır ve token yapısını ve uzunluğunu korur.
- Tüm dizeyi küçük harfe dönüştürün. Kullanıcı aracısı belirteçleri geleneksel olarak harfe duyarsızdır ve küçük harfe dönüştürme işlemi tutarlı ve güvenilir arama işlemlerini sağlar.
Örneğin, aşağıdaki kullanıcı aracısı dizesi:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Şu değere normalize edilir:
mozilla/x.x (windows nt xx.x; winxx; xxx) applewebkit/xxx.xx (khtml, like gecko) chrome/xxx.x.x.x safari/xxx.xx
Bu normalizasyon yaklaşımı kullanıcı ajanlarını gruplandırmayı, karşılaştırmayı ve zaman içinde bakımı sürdürmeyi kolaylaştırır; aynı zamanda üst düzey istemci ve işletim sistemi sınıflandırması için yeterince doğru kalır.
Sürümle ilgili değişkenlik ve harf büyüklüğüne bağlı değişkenliğin ortadan kaldırılmasıyla arama süreci daha öngörülebilir hale gelir ve gelecekteki kullanıcı aracısı değişikliklerine karşı daha dayanıklı olur.
Veri Biçimi
Her normalleştirilmiş kullanıcı ajanı kaydı şu öğeleri içerir:
- id - Normalleştirilmiş kullanıcı ajanı dizesi
- client_family - Yüksek seviyeli istemci sınıflandırması (örn. tarayıcı, bot, uygulama)
- os_family - Yüksek düzey işletim sistemi sınıflandırması
Veri kümesi büyüdükçe belirli alanlar zamanla değişebilir.
Arama Davranışı
Kullanıcı ajanı eşleşmesi, normalleştirilmiş dizeler üzerinde gerçekleştirilir.
Tam eşleşmeler tercih edilir; davranışı öngörülebilir ve hata ayıklanabilir kılmak için eksik veya sezgisel eşleşmeler kasıtlı olarak kaçınılır.
Katkıda Bulunma
Katkılarınız çok memnuniyetle karşılanır ve bu projenin genel kalitesini ve doğruluğunu artırmaya yardımcı olur.
Katkıda bulunmanın en etkili yolu, user_agents.json dosyasındaki normalize edilmiş kullanıcı aracısı girdilerini eklemek veya güncellemek ve ilgili sınıflandırma verileriyle birlikte olmaktır.
Değişiklikleriniz hazır olduğunda, gerekli veri ve/veya kod güncellemelerini içeren bir pull request gönderin.
Kısmi veya eksik bilgiler bile yararlı ve takdir edilir - her katkı kapsama alanını ve uzun vadeli güvenilirliği artırmaya yardımcı olur.
Başlarken (Kısa Rehber)
Bu projenin çekirdeği, data/ dizininde bulunan JSON veri dosyalarından oluşan kümedir.
Bu veriyi korumaya ve yeniden kullanmaya yardımcı olmak için depo, temel doğrulama ve dışa aktarma görevlerini yerine getiren birkaç basit Node.js betiği içerir.
Kullanılabilir komutlar:
- npm run test - JSON verisini doğrular ve yapısal veya tutarlılık hatalarını kontrol eder.
- npm run build - Normalize edilmiş veriyi diğer programlama dillerinin formatlarına (örneğin Java) daha kolay entegrasyon için dönüştürür, sıralar ve dışa aktarır.
Bu araçlar kasıtlı olarak sade tutuluyor ve karmaşık işlemler yerine veri doğruluğu ve taşıyabilirliğe odaklanıyorlar.
User-Agent Dizeleri Güvenilir Değildir
Kullanıcı aracısı dizelerinden doğru bilgiler çıkarmak birkaç nedenden dolayı özünde güvenilmezdir:
- Kullanıcı aracısı dizgilerinin yapısı veya içeriğini yöneten resmi bir standart veya spesifikasyon bulunmamaktadır.
- Birçok kullanıcı ajanı, uyumluluk ve eski sürümler nedeniyle diğer kullanıcı ajanlarını kasıtlı olarak sahte gösterir ya da taklit eder.
Bu nedenle kullanıcı aracısı verilerini tamamen doğru ve tutarlı bir şekilde belirlemek son derece zordur.
Bu kütüphane bu nedenle elinden gelen en iyi çabayı gösteren bir çözüm olarak görülmelidir; garanti edilen ya da otoritatif bir doğruluk kaynağı değildir.
Sürekli kullanım ve topluluk katkılarıyla doğruluk zamanla artabilir.
Versiyonlama ve Kararlılık
Veri seti, kullanıcı ajanları evrildikçe zamanla değişebilir.
Sınıflandırmalar, küçük sürümler arasında bile geriye dönüştürülemeyen değişiklikler olarak kabul edilmez.
Tüketiciler sonuçları en iyi çabayla sunulan ipuçları olarak görmelidir; bunlar sözleşmeye dayalı garantiler değildir.
Lisans
Bu proje ve verileri Apache License 2.0 (Apache-2.0) altında lisanslanmıştır.
Ticari kullanım, değişiklik yapma ve yeniden dağıtım için izin verilir.
Katkılar hoş karşılanır ve takdir edilir.
Ticari marka
PageviewsOnline, Two-Dot-Oh ve ilişkili logolar, hizmet adları veya markalaşma unsurları Two-Dot-Oh'un tescilli markalarıdır.
Bu proje açık kaynaklıdır; ancak PageviewsOnline adının veya herhangi bir ilgili markanın bir ürün, hizmet veya teklif ile ilişkilendirilerek kullanılmasına önceden yazılı onay verilmez.
Çatallar ve türev eserler farklı bir ad ve marka kimliği kullanmalı ve PageviewsOnline ya da Two-Dot-Oh tarafından onaylandığı ya da bunlarla ilişkili olduğu izlenimini vermemelidir.