PowerScan
TR

User-Agent dizeleri ve Client Hints: ne ele verirler ve ne donduruldu

Tarayıcı parmak izleri · 6 dk okuma · yazan: PowerScan

Fotoğraf: Unsplash

User agent dizesi, web'deki en eski tanımlama sinyalidir ve son birkaç yılda en çok değişenidir. Onu iyi okumak; içinde hâlâ ne olduğunu, neyin bilerek dondurulduğunu ve kaldırılan ayrıntıların nereye gittiğini bilmek demektir.

Dize ne söyler

Windows'ta güncel bir Chromium dizesi şuna benzer: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Tarihsel belirteçler (Mozilla/5.0, AppleWebKit, like Gecko, Safari) onlarca yıl önce yazılmış betiklerle uyumluluk için oradadır ve hiçbir bilgi taşımaz. Yararlı kısımlar platform (Windows 11'de bile Windows NT 10.0), mimari ve ana tarayıcı sürümüdür.

Eskiden orada olan şey bilerek kaldırıldı. Alt ve yama sürümü artık 0.0.0. Windows sürümü 10.0'a sabitlendi. Android dizeleri artık cihaz modelini içermiyor. Bu, Chromium'un 2022 ile 2023 arasında yayımladığı "user agent azaltma"dır; çünkü dize bir parmak izi yüzeyi haline gelmişti.

Client Hints: aynı veri, istek üzerine

Kaldırılan ayrıntı yok olmadı; User-Agent Client Hints'e taşındı. Bir sunucu bir Accept-CH başlığıyla belirli alanları isteyebilir ve tarayıcı bunun ardından sonraki isteklerde Sec-CH-UA-Platform-Version ya da Sec-CH-UA-Model gibi başlıklar gönderir. Düşük entropili ipuçları (marka ve ana sürüm, platform, mobil bayrağı) varsayılan olarak gönderilir. Yüksek entropililer (tam sürüm, mimari, bit sayısı, model, platform sürümü) yalnızca isteyen sitelere gönderilir ve bir betik aynı kümeyi navigator.userAgentData.getHighEntropyValues() ile isteyebilir.

Tasarım amacı, sitenin ne istediğini beyan etmesi gerektiğidir; bu da toplamayı görünür ve denetlenebilir kılar. Pratikte parmak izi çıkarmak isteyen bir site yine de her şeyi isteyebilir; fark, istemenin tarayıcının görebileceği, kaydedebileceği ya da reddedebileceği bir istek olmasıdır.

Tutarlılık sorunu

Aynı bilgiler artık iki kaynaktan elde edilebildiği için karşılaştırılabilirler. User agent dizesini macOS iddia edecek şekilde değiştiren ama navigator.userAgentData.platform değerini Windows bildirmeye bırakan bir tarayıcı, tespit edilmesi çok kolay bir çelişki yaratmıştır. Aynısı navigator.platform özelliği, sayfaya görünen işletim sistemine özgü yazı tipleri ve yalnızca tek bir işletim sisteminde bulunan bir grafik sürücüsünü adlandıran WebGL oluşturucu dizesi için de geçerlidir. Yalnızca dizeyi taklit etmek yıllardır kaybeden bir stratejidir.

Kendinizinkini okumak

Bir tanılama ham dizeyi, ondan ayrıştırdığı tarayıcıyı ve sürümü ile motoru (Blink, Gecko ya da WebKit) gösterir. iOS'taki her tarayıcının, markası ne derse desin, WebKit bildirdiğini unutmayın; çünkü Apple bunu zorunlu kılar. Ayrıştırılan tarayıcı adı sizi şaşırtıyorsa, dize bir uzantı ya da bir profil ayarı tarafından değiştiriliyordur; bunun bir sorun olup olmadığı, tarayıcının geri kalanının bu değişiklikle uyuşup uyuşmadığına bağlıdır.

Tüm makaleler · Taramayı başlat