Tüm makaleler

User-Agent: bu dizenin neden böyle bir karmaşa olduğu

Modern bir Chrome'un User-Agent'ına bakarsanız "Mozilla/5.0 ... AppleWebKit/537.36 ... Chrome/120.0 Safari/537.36" gibi bir şey görürsünüz — Chrome'un aslında olmadığı tarayıcı isimleriyle dolu bir dize. Bu bir tesadüf değil, on yıllara yayılan tarihsel geçici çözümlerin sonucudur.

"Mozilla" kelimesinin kökeni

1990'larda siteler, User-Agent'ın "Mozilla" (o dönemin pazar lideri Netscape Navigator'ın kod adı) içerip içermediğini kontrol ederek tarayıcı yeteneklerini tespit ediyordu. Internet Explorer aynı "gelişmiş" içeriği almak isteyince kendi User-Agent'ına da "Mozilla" eklemeye başladı — ve bu emsal sektörde kalıcı hale geldi.

Türkiye'de Android'in ağırlığı

Türkiye mobil pazarında Android, dünya ortalamasına göre oldukça yüksek bir paya sahiptir ve bu durum çoğunlukla orta-alt segment Android cihazların yaygınlığıyla açıklanır. Bu da yalnızca iPhone/Safari üzerinde test edilen bir arayüzün, gerçek trafiğin önemli bir bölümünü — özellikle daha eski Android sürümlerini ve daha küçük ekranları — kaçırma riski taşıdığı anlamına gelir; User-Agent ayrıştırma bu tür cihaz/OS dağılımını loglardan anlamlandırmak için pratikte hâlâ sık kullanılır.

User-Agent tespitinin neden güvenilmez olduğu

Her yeni tarayıcı, uyumluluk uğruna kendinden öncekilerin belirteçlerini User-Agent'a eklediği için, bu dize tarayıcının doğru bir tanımı olmaktan çıkıp tarihsel kalıntıların yığını haline gelmiştir. Günümüzün en iyi uygulaması, User-Agent'ı ayrıştırmak yerine belirli JavaScript/CSS özelliklerinin desteğini doğrudan tespit etmektir.

Ne işe yarar

  • İstemcinin tam olarak hangi tarayıcı ve sürümü bildirdiğini inceleyerek uyumluluk sorunlarını teşhis etmek.
  • Ziyaretçilerin User-Agent'ının kaydedildiği sunucu loglarını anlamlandırmak.
  • User-Agent tabanlı eski tespit kodunun neden sık sık yanıldığını anlamak.

Yerine geçen çözüm: User-Agent Client Hints

Tek bir şişkin dizeyi ayrıştırmak yerine, Chromium tabanlı modern tarayıcılar artık User-Agent Client Hints'i destekler — Sec-CH-UA, Sec-CH-UA-Platform ve Sec-CH-UA-Mobile gibi, sunucunun açıkça talep etmesi gereken ve yapılandırılmış biçimde aldığı ayrı başlıklar. Bu, gizlilik amacıyla yapılan daha geniş bir "User-Agent Reduction" (User-Agent Küçültme) hareketinin parçasıdır, dolayısıyla zamanla klasik User-Agent dizesi giderek daha az ayrıntı taşıyacaktır.

Aracı dene