İçeriğe geç

Reklam

Tarayıcılar Neden Kendini Mozilla Olarak Tanıtır?

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxx.0.0.0 Safari/537.36 biçimindeki tarayıcı User-Agent satırını gösteren kapak görseli

Chrome kullanırken bile tarayıcınız kendini sunuculara “Mozilla” diye tanıtır. Aynı satırda “Safari” ve “like Gecko” ifadeleri de yan yana durur. Bunların hiçbiri yazım hatası değildir. Peki tarayıcılar neden kendini Mozilla olarak tanıtır? Yanıt, 1990’ların tarayıcı savaşlarında ve o günlerden kalan bir uyumluluk mirasında saklıdır.

Bu içeriğimizde User-Agent (kullanıcı aracısı) satırının anatomisini, her bir ifadenin nereden geldiğini ve bu tuhaf mirasın neden hâlâ temizlenemediğini sizler için adım adım inceledik.

Reklam

User-Agent (Kullanıcı Aracısı) Nedir?

User-Agent, tarayıcınızın her HTTP isteğiyle birlikte sunucuya gönderdiği bir başlık satırıdır. Türkçede “kullanıcı aracısı” denir. İçinde tarayıcının adı, sürümü, işletim sistemi ve kullandığı işleme motoru (rendering engine) hakkında ipuçları bulunur.

Sunucular bu satırı birkaç farklı amaçla kullanır:

  • Ziyaretçi istatistiklerini tarayıcı ve cihaz kırılımıyla raporlamak
  • Mobil ve masaüstü ziyaretçilere farklı düzen sunmak
  • Arama motoru botlarını ve otomatik istekleri ayırt etmek
  • Bilinen bir tarayıcı hatasına özel geçici çözüm uygulamak

Burada gözden kaçan kritik bir ayrıntı var. User-Agent bir beyandır, kimlik belgesi değildir. Sunucu bu bilgiyi doğrulayamaz; isteyen herkes tarayıcı ayarlarından ya da bir eklentiyle satırı değiştirebilir. Ağ protokollerinin perde arkası genel olarak ilginizi çekiyorsa, DHCP nedir ve ne işe yarar yazımız iyi bir başlangıç noktası sunar.

Tarayıcılar Neden Kendini Mozilla Olarak Tanıtır?

Bu sorunun yanıtı teknik değil, tarihseldir. User-Agent satırı bir noktada tarayıcıyı tanımlayan bir etiket olmaktan çıktı ve sitelere girebilmek için gösterilen bir parolaya dönüştü. Parolalar ise silinmez, kopyalanarak taşınır.

Netscape’in Kod Adı: Mosaic Killer

Web’in ilk popüler grafik tarayıcısı NCSA Mosaic’ti ve kendini NCSA_Mosaic/2.0 (Windows 3.1) gibi sade bir satırla tanıtıyordu. 1994’te Netscape’te çalışan Jamie Zawinski, geliştirilmekte olan yeni tarayıcı için bir kod adı önerdi: “Mosaic killer” ifadesiyle Godzilla kelimesini birleştiren Mozilla. Netscape Navigator sahneye çıktığında kendini Mozilla/1.0 (Win3.1) olarak tanıttı. Teknoloji dünyasının isim hikâyeleri ilginizi çekiyorsa, Google adının nereden geldiğini anlattığımız yazımıza da bakabilirsiniz.

Netscape Navigator 3.04 Gold tarayıcısının klasik gri arayüzü ve N logosu, 1990lar dönemi
Netscape Navigator’ın klasik arayüzü — “Mozilla” kod adı buradan geliyor. (Wikimedia Commons, CC0)

Netscape’in en büyük kozu çerçeve (frame) desteğiydi. Mosaic çerçeveleri işleyemiyordu. Site yöneticileri de basit bir çözüm buldu: gelen isteğin User-Agent satırında “Mozilla” geçiyorsa çerçeveli sayfayı gönder, geçmiyorsa sade sürümü gönder. Böylece web’in en uzun ömürlü alışkanlıklarından biri doğdu.

Internet Explorer’ın “compatible” Hamlesi

Microsoft’un Internet Explorer’ı da çerçeveleri destekliyordu. Ama adında “Mozilla” geçmediği için sitelerden sade sürümü alıyordu. Çözüm hızlı ve kalıcı oldu: Internet Explorer, satırın başına Mozilla ifadesini koydu ve gerçek kimliğini parantez içinde açıkladı. Ortaya Mozilla/2.0 (compatible; MSIE 3.0; Windows 95) biçiminde satırlar çıktı.

Kartopu tam burada büyümeye başladı. Bir tarayıcı, rakibinin adını taşıyarak kapıları açtığında, aynı yol geri kalan herkes için de tek makul seçenek hâline geldi.

User Agent Satırındaki Mozilla/5.0 Ne Anlama Gelir?

User agent satırındaki Mozilla/5.0 ne anlama gelir sorusunu yanıtlamanın en pratik yolu, gerçek bir örneğe bakmaktır. Bugün masaüstünde çalışan Chrome’un gönderdiği satır kabaca şu biçimdedir:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/xxx.0.0.0 Safari/537.36

İlginç olan şu: bu satırdaki ifadelerin çoğu Chrome’un gerçekte ne olduğunu anlatmaz. Parçalara ayırdığımızda tablo netleşiyor.

Mozilla/5.0 user agent satırının parçalarını gösteren Türkçe infografik: uyumluluk etiketi, platform, motor ve tarayıcı sürümü
User-Agent satırının anatomisi: her ifadenin görünürdeki ve gerçek anlamı.
İfadeGörünürdeki anlamıGerçekte anlattığı
Mozilla/5.0Netscape uyumlu tarayıcıNeredeyse tüm tarayıcılarda bulunan tarihsel uyumluluk etiketi
(Windows NT 10.0; Win64; x64)İşletim sistemi ve mimariPlatform ailesi; ayrıntı düzeyi gizlilik için sadeleştiriliyor
AppleWebKit/537.36WebKit motoruChrome artık Blink kullanıyor; bu numara dondurulmuş bir sabit
KHTML, like GeckoKHTML tabanlı, Gecko benzeri“Gecko değilim ama bana Gecko muamelesi yap” anlamına gelen uyumluluk notu
Chrome/xxx.0.0.0Tarayıcı ve sürümüSatırdaki en güncel bilgi; ara sürüm numaraları sıfırlanır
Safari/537.36Safari uyumluluğuChrome’un WebKit geçmişinden kalan etiket

Firefox’un satırı ise farklı bir yol izler ve Gecko/20100101 Firefox/xx.0 biçiminde bir bölüm taşır. Yine de o da Mozilla/5.0 ile başlar. Yani gerçekten Mozilla soyundan gelen tek tarayıcı bile aynı etiketi taşımak zorunda kalır.

Like Gecko İfadesi Neden Kullanılıyor?

Gecko, Mozilla’nın geliştirdiği ve bugün Firefox’un kullandığı işleme motorudur. Peki Gecko ile hiçbir akrabalığı olmayan tarayıcılar neden “like Gecko” yazar?

Hikâye KDE masaüstü projesinin tarayıcısı Konqueror ve onun KHTML motoruyla başlar. Apple, 2003’te Safari’yi tanıtırken KHTML’i çatallayarak (fork) WebKit’i geliştirdi. Yani Safari ne Netscape soyundan geliyordu ne de Gecko’dan.

O dönemin dinamik siteleri pratikte iki adrese içerik sunuyordu: Internet Explorer ya da Gecko. Safari’nin geliştiricilerinden Dave Hyatt, standartlara uyumlu tarafa dahil olabilmek için Gecko’yu taklit etmeyi seçtiklerini açıkladı. Böylece satıra (KHTML, like Gecko) eklendi.

Bu ifadenin dürüst çevirisi şudur: “Ben Gecko değilim, ama lütfen bana Gecko gibi davran.” Bir tarayıcının kendi kimliğini kabul ettirmek yerine, başka bir motorun itibarını ödünç almasıdır söz konusu olan. Kısacası like Gecko ifadesi neden kullanılıyor sorusunun yanıtı tek kelimeyle uyumluluktur; bu ifade bir tanım değil, sitelere iletilen bir ricadır.

Chrome User Agent Satırında Safari Neden Yazıyor?

Chrome user agent satırında Safari neden yazıyor sorusunun kökeni 2008’e uzanır. Google, Chrome’u duyurduğunda Safari’nin de kullandığı WebKit motorunu tercih etti. Siteler o tarihte WebKit’e özgü kodu “Safari” ifadesine bakarak sunuyordu. Chrome bu ifadeyi satırdan çıkarsaydı, bir gecede pek çok sayfada bozulmalar yaşanacaktı.

2013’te Google, WebKit’i çatallayıp Blink motorunu geliştirdi. Motor değişti, satır değişmedi. AppleWebKit/537.36 numarası o günden beri sabit bir değer gibi taşınıyor. Artık bir sürüm bilgisi değil, kapıyı açan bir anahtar işlevi görüyor.

Aynı mantık Chromium tabanlı diğer tarayıcılar için de geçerli. Her biri ortak mirası taşır ve kendi kimliğini sona küçük bir ek olarak yazar.

TarayıcıGerçek işleme motoruUser-Agent satırında taşıdığı ifadeler
Google ChromeBlinkMozilla/5.0, AppleWebKit, KHTML like Gecko, Chrome, Safari
Microsoft EdgeBlinkChrome ile aynı gövde + Edg/ eki
OperaBlinkChrome ile aynı gövde + OPR/ eki
Apple SafariWebKitMozilla/5.0, AppleWebKit, KHTML like Gecko, Version, Safari
Mozilla FirefoxGeckoMozilla/5.0, Gecko, Firefox

Tabloya baktığınızda ilginç bir sonuç çıkıyor: bir tarayıcının gerçek motorunu User-Agent satırından güvenle okumak mümkün değil.

User Agent Sniffing Nedir ve Neden Sorunlu?

User agent sniffing (kullanıcı aracısı ayıklama), sunucunun veya JavaScript kodunun bu satıra bakarak “karşımdaki tarayıcı hangisi” sorusunu yanıtlamaya çalışmasıdır. Kulağa pratik gelir, ama sonuçları çoğu zaman kötüdür.

User-Agent başlığının tarayıcı geliştirici araçlarının Ağ panelinde nasıl göründüğünü gösteren temsili şema
Tarayıcı geliştirici araçlarının Ağ panelinde User-Agent başlığı böyle görünür (temsili şema).
  • Satırın standart bir yapısı yoktur; ayrıştırmak (parse etmek) hataya çok açıktır.
  • Yeni bir tarayıcı çıktığında kod listesinde yer almadığı için dışlanır.
  • Kullanıcı satırı değiştirdiğinde tüm mantık çöker.
  • Bir motorun yalnızca tek tip cihazda çalıştığı varsayımı yanlıştır.

Bu maddeler bir araya geldiğinde user agent sniffing nedir ve neden sorunlu sorusunun yanıtı netleşiyor: yöntem kısa vadede işe yarar, uzun vadede kaçınılmaz olarak kırılır.

Mozilla’nın geliştirici dokümantasyonu MDN, kullanıcı aracısıyla tarayıcı tespiti rehberinde bu yöntemi açıkça önermez. Önerilen yol özellik algılamadır (feature detection): “Tarayıcı hangisi?” diye sormak yerine “ihtiyacım olan özellik burada var mı?” diye sorulur. Böylece kod, gelecekte çıkacak tarayıcılarda da çalışmaya devam eder.

Bir de gizlilik boyutu var. Satır ne kadar ayrıntılıysa, sizi kalabalıktan ayıran iz o kadar belirginleşir. İşletim sistemi sürümü, cihaz modeli ve ara sürüm numaraları bir araya geldiğinde takip için kullanılabilir bir imza oluşur. Bu konuyu derinlemesine ele aldığımız tarayıcı parmak izi nasıl engellenir rehberimiz, korunma yöntemlerini adım adım anlatıyor.

User Agent Azaltma ve Client Hints Nedir?

Tarayıcı üreticileri bu satırın hem gereksiz derecede ayrıntılı hem de gizlilik açısından riskli olduğunun farkında. Peki user agent azaltma ve client hints nedir? Kısaca, satırdaki bilgiyi kırpan ve geri kalanını talebe bağlayan iki tamamlayıcı yaklaşım. Google, Chromium tarafında User-Agent Reduction (kullanıcı aracısı azaltma) adını verdiği çalışmayla satırın bilgi yoğunluğunu düşürüyor.

  • Ara sürüm, derleme ve yama numaraları 0.0.0 değerinde sabitlenir.
  • Android tarafında cihaz modeli K, sistem sürümü 10 gibi tek bir değere indirilir.
  • Masaüstünde platform bilgisi standart bir değerde dondurulur.

Silinen ayrıntı tamamen yok olmuyor; yer değiştiriyor. User-Agent Client Hints (kullanıcı aracısı istemci ipuçları) yaklaşımında sunucu, ihtiyaç duyduğu bilgiyi Accept-CH başlığıyla açıkça ister. Tarayıcı da yanıtı Sec-CH-UA ile başlayan başlıklarla verir. Mantık tersine döner: bilgi herkese peşinen dağıtılmaz, talep edildiğinde ve gerekçesiyle paylaşılır. Ayrıntılar Chromium’un User-Agent Reduction belgesinde ve Chrome geliştirici dokümantasyonundaki istemci ipuçları sayfasında yer alıyor.

Firefox ve Safari de kendi sadeleştirme yaklaşımlarını uyguluyor, ancak Chromium’un istemci ipuçları modelini benimsemiş değiller. İkisi de geliştiricileri tarayıcı tespiti yerine özellik algılamaya yönlendiriyor. Tarayıcı tarafındaki gizlilik ayarlarını toparlamak isterseniz, tarayıcı çerezlerini yönetme ve gizlilik rehberimiz pratik bir tamamlayıcı olur.

User-Agent Mirası Neden Hâlâ Silinemiyor?

Buraya kadar anlattığımız her ayrıntı tek bir soruda birleşiyor: madem bu ifadelerin çoğu yanlış, neden kaldırılmıyorlar? Çünkü satır artık bir açıklama değil, web’i ayakta tutan sessiz bir uyumluluk sözleşmesi. Milyonlarca sayfa, kurumsal güvenlik filtresi, analitik aracı ve eski kütüphane bu yapının aynı kalacağını varsayarak yazıldı.

Mozilla/5.0 ifadesini kaldırmanın bedeli, onu taşımanın bedelinden çok daha yüksek. Azaltma çalışmaları ayrıntıyı kırpabiliyor, fakat çevresindeki tarihsel etiketlere dokunamıyor. Kısacası tarayıcılar neden kendini Mozilla olarak tanıtır sorusunun yanıtı teknik bir zorunluluk değil, kolektif bir alışkanlığın taşa dönüşmüş hâli. Web’in en kalıcı özelliğinin geriye dönük uyumluluk olduğunu hatırlatan güzel bir örnek.

Bir dahaki sefere geliştirici araçlarını açıp ağ isteklerine baktığınızda, o satırı artık bir hata gibi değil, otuz yıllık bir tarih özeti gibi okuyabilirsiniz. Teknik ayrıntıların tamamı için MDN’in User-Agent başlığı referans sayfasına göz atabilirsiniz.

Eğer bu tarz teknoloji tarihine ve eski yazılım mirasına dair içerikler ilginizi çekiyorsa, sitemizde yer alan “Windows’ta CON Adında Klasör Neden Oluşturulamıyor?” adlı yazımıza da göz atabilirsiniz.

Reklam

Abone ol
Bildir
guest
0 Yorum
Eskiler
En Yeniler Beğenilenler

Reklam

Reklam