User-Agent (UA) azaltma, User-Agent dizesinde paylaşılan ve pasif parmak izi oluşturmak için kullanılabilecek tanımlayıcı bilgileri en aza indirir. Bu değişiklikler genel kullanıma sunulduğundan, tüm kaynak isteklerinde daha kısa bir User-Agent
başlığı kullanılmaktadır. Sonuç olarak, navigator.userAgent
, navigator.appVersion
ve navigator.platform
dahil olmak üzere belirli Navigator
arayüzlerinden döndürülen değerler azaltılır.
Web geliştiricileri, site kodlarında User-Agent dizesinin kullanımını incelemelidir. Siteniz cihaz modelini, platform sürümünü veya tam tarayıcı sürümünü okumak için User-Agent dizesini ayrıştırıyorsa User-Agent İstemci İpuçları API'sini uygulamanız gerekir.
Kullanıcı Aracısı İstemci İpuçları (UA-CH)
Kullanıcı Aracı İstemci İpuçları, yalnızca sunucuların belirli veri parçalarına açıkça ihtiyaç duyduğunu aktif olarak beyan ettiğinde tüm Kullanıcı Aracı verilerine erişime olanak tanır.
Pasif olarak açığa çıkan kullanıcı verilerini kaldırarak istek üstbilgileri, JavaScript API'leri ve diğer mekanizmalar tarafından kasıtlı olarak açığa çıkarılan bilgi miktarını daha iyi ölçer ve azaltırız.
Neden azaltılmış UA ve UA-CH'ye ihtiyacımız var?
Geçmişte User-Agent dizesi, her HTTP isteğiyle birlikte kullanıcının tarayıcısıyla, işletim sistemiyle ve sürümüyle ilgili büyük bir veri dizesi yayınlıyordu. Bu durum iki nedenden dolayı sorunluydu:
- Ayrıntıların ayrıntı düzeyi ve sayısı, kullanıcıların tanımlanmasına neden olabilir.
- Bu bilgilerin varsayılan olarak kullanılabilir olması gizli izlemeye neden olabilir.
Azaltılmış UA ve UA-CH, varsayılan olarak yalnızca temel bilgileri paylaşarak kullanıcı gizliliğini iyileştirir.
Azaltılmış User-Agent, tarayıcının markasını ve önemli bir sürümü, isteğin geldiği yeri (masaüstü veya mobil) ve platformu içerir. Daha fazla veriye erişmek için User-Agent istemci ipuçları, kullanıcının cihazı veya koşulları hakkında belirli bilgiler istemenize olanak tanır.
Ayrıca, User-Agent
dizesi zaman içinde daha uzun ve karmaşık hale geldi. Bu da dize ayrıştırma işleminin hataya açık olmasına neden oldu. UA-CH, yorumlanması daha kolay olan yapılandırılmış ve güvenilir veriler sağlar. UA dizesini ayrıştıran mevcut kod bozulmaz (ancak daha az veri döndürür) ve sitenizin belirli istemci bilgilerine ihtiyacı varsa UA-CH'ye geçmeniz gerekir.
Azaltılmış UA ve UA-CH nasıl çalışır?
Aşağıda, kısaltılmış User-Agent dizesi ve UA-CH'nin nasıl çalıştığına dair kısa bir örnek verilmiştir. Daha ayrıntılı bir örnek için Kullanıcı Aracısı İstemci İpuçları ile kullanıcı gizliliğini ve geliştirici deneyimini iyileştirme başlıklı makaleyi inceleyin.
Kullanıcı tarayıcıyı açar ve adres çubuğuna example.com
yazar:
Tarayıcı, web sayfasını yüklemek için bir istek gönderir.
- Tarayıcı, kısaltılmış User-Agent dizesiyle
User-Agent
üstbilgisini içerir. Örneğin:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
Tarayıcı, aynı bilgileri varsayılan User-Agent istemci ipucu üstbilgilerine ekler. Örneğin:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- Tarayıcı, kısaltılmış User-Agent dizesiyle
Sunucu, tarayıcıdan
Accept-CH
yanıt üstbilgisiyle cihaz modeli gibi ek istemci ipuçları göndermesini isteyebilir. Örneğin:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
Tarayıcı, sonraki istek üstbilgilerinde sunucuya hangi verilerin döndürülebileceğini belirlemek için politikaları ve kullanıcı yapılandırmasını uygular. Örneğin:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
Kritik İstemci İpuçları
İlk isteğinizde belirli bir istemci ipucu grubuna ihtiyacınız varsa Critical-CH
yanıt başlığını kullanabilirsiniz. Critical-CH
değerleri, Accept-CH
tarafından istenen değerlerin alt kümesi olmalıdır.
Örneğin, ilk istek Device-Memory
ve Viewport-Width
isteği içerebilir. Bu durumda Device-Memory
kritik olarak kabul edilir.
GET / HTTP/1.1
Host: example.com
HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Device-Memory, Viewport-Width
Vary: Device-Memory, Viewport-Width
Critical-CH: Device-Memory
Tarayıcı, web sayfasını düzgün bir şekilde oluşturmak için kritik bir ipucu (Critical-CH
) gerektiriyorsa sunucu, Accept-CH
üstbilgisiyle bu ek bilgileri isteyebilir. Ardından tarayıcı, kritik ipucu da dahil olmak üzere sayfa için yeni bir istek gönderebilir.
Özetlemek gerekirse Accept-CH
, sayfa için istediğiniz tüm değerleri ister. Critical-CH
ise sayfayı düzgün bir şekilde yüklemek için yalnızca yükleme sırasında sahip olmanız gereken değer alt kümesini ister. Daha fazla bilgi için İstemci İpuçları Güvenilirliği spesifikasyonunu inceleyin.
UA-CH API ile tablet cihazları algılama
Mobil, tablet ve masaüstü cihazlar arasındaki çizgi giderek daha belirsiz hale geldikçe ve dinamik form faktörleri (katlanabilir ekranlar, dizüstü bilgisayar ve tablet modu arasında geçiş) daha yaygın hale geldikçe uygun bir kullanıcı arayüzü sunmak için duyarlı tasarım ve özellik algılama özelliklerini kullanmanız önerilir.
Ancak tarayıcı tarafından hem User-Agent dizesi hem de User-Agent istemci ipuçları için sağlanan bilgiler aynı kaynaktan geldiğinden aynı mantık biçimleri işe yarayacaktır.
Örneğin, UA dizesinde bu kalıp kontrol edilirse:
- Telefon kalıbı:
'Android' + 'Chrome/[.0-9]* Mobile'
- Tablet kalıbı:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Eşleşen varsayılan UA-CH üstbilgi arayüzü kontrol edilebilir:
- Telefon kalıbı:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- Tablet deseni:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
Veya eşdeğer JavaScript arayüzü:
- Telefon kalıbı:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- Tablet kalıbı:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
Donanıma özgü kullanım alanları için cihaz modeli adı, yüksek entropi Sec-CH-UA-Model
ipucu aracılığıyla istenebilir.
Azaltılmış UA'yı nasıl kullanır ve test ederim?
Başlamak için User-Agent dizesinin örnekleri ve kullanımları için site kodunuzu inceleyin. Siteniz, cihaz modelini, platform sürümünü veya tam tarayıcı sürümünü okumak için User-Agent dizesini ayrıştırıyorsa UA-CH API'yi uygulamanız gerekir.
UA-CH API'ye geçtikten sonra, User-Agent'tan beklediğiniz verileri aldığınızdan emin olmak için test yapmanız gerekir. Testin üç yolu vardır ve her biri karmaşıklık açısından birbirinden farklıdır.
Kullanıcı aracısı kısaltma özelliğinin ölçeklendirilmiş kullanılabilirliği, tüm Chrome cihazlarda tamamen kısaltılmış UA dizesinin gönderildiği anlamına gelir. Azaltma, 2022'nin 2. çeyreğindeki küçük bir Chrome sürümüyle başladı.
Özel dizeleri yerel olarak test etme
Farklı cihazları simüle etmek için sitenizi özel User-Agent dizeleri kullanarak test etmek istiyorsanız Chrome'u --user-agent="Custom string here"
komut satırı işaretiyle başlatın. Komut satırı işaretleri hakkında daha fazla bilgiyi burada bulabilirsiniz.
Alternatif olarak Chrome Geliştirici Araçları'ndaki cihaz emülatörünü de kullanabilirsiniz.
Sitenizin kodundaki dizeyi dönüştürme
İstemci tarafı veya sunucu tarafı kodunuzda mevcut Chrome user-agent
dizesini işlerseniz uyumluluğu test etmek için bu dizeyi yeni biçime dönüştürebilirsiniz. Dilerseniz dizeyi geçersiz kılıp değiştirerek, dilerseniz de yeni sürümü oluşturup yan yana test ederek deneyebilirsiniz.
İstemci ipuçları ve kritik ipuçları için destek
Tarayıcı adı ve büyük sürüm, tarayıcının mobil cihazda olup olmadığını belirten bir boole değeri ve işletim sistemi adı da dahil olmak üzere sunucuya üç varsayılan istemci ipucu döndürülür. Bunlar, Taşıma Katmanı Güvenliği protokolü (TLS) el sıkışmasından sonra gönderilir. Bu özellikler tarayıcınızda zaten mevcut ve desteklenmektedir.
Bununla birlikte, sitenizin oluşturulması için kritik bilgileri almanız gerekebilir.
Kritik ipuçlarını optimize etme
TLS el sıkışması, tarayıcı ile web sunucusu arasında güvenli bir bağlantı oluşturmanın ilk adımıdır. Critical-CH yanıt başlığı, müdahale olmadan ilk istek kritik bir ipucu olmadan gönderilmişse tarayıcıya isteği hemen yeniden denemesini bildirecek şekilde tasarlanmıştır.

Sec-CH-UA-Model
için ipucu iki kez istenir: bir kez Accept-CH
ile müşteri ipucu olarak ve bir kez de Critical-CH
ile kritik ipucu olarak.Kritik ipuçlarını (Critical-CH
başlığı) optimize etmek için bu el sıkışmasını durdurmanız ve istemci ipuçları için bir model sağlamanız gerekir. Bu adımlar karmaşık olabilir ve ileri düzey bilgi gerektirebilir.
ACCEPT_CH
HTTP/2 ve HTTP/3 çerçeveleri, TLS ALPS uzantısıyla birlikte, sunucunun istemci ipucu tercihlerini ilk HTTP isteği için zamanında sunmak üzere bağlantı düzeyinde bir optimizasyondur. Bu yöntemler karmaşık yapılandırma gerektirir ve yalnızca gerçekten kritik bilgiler için kullanılmasını öneririz.
BoringSSL (OpenSSL'in çatalı), Google'ın Chromium'daki deneysel özellikleriyle çalışmanıza yardımcı olur. ALPS şu anda yalnızca BoringSSL'de uygulanmaktadır.
Kritik ipuçları kullanmanız gerekiyorsa kritik ipuçları güvenilirliği ve optimizasyonu ile ilgili kılavuzumuza bakın.
SSS
Accept-CH
başlığı aracılığıyla belirtilen ipuçları ne kadar süreyle gönderilir?
Accept-CH
üst bilgisi aracılığıyla belirtilen ipuçları, tarayıcı oturumu boyunca veya farklı bir ipucu grubu belirtilene kadar gönderilir.
UA-CH, HTTP/2 ve HTTP/3 ile çalışır mı?
UA-CH hem HTTP/2 hem de HTTP/3 bağlantılarıyla çalışır.
Alt alan adlarının (ve CNAME'lerin) yüksek entropili UA-CH'ye erişmek için üst düzey bir sayfa Permissions-Policy
gerektirip gerektirmediği
İstek başlıklarındaki yüksek entropili UA-CH, DNS tarafında kaynağın nasıl tanımlandığına bakılmaksızın kaynak arası isteklerde kısıtlanır. Yetkilendirme, kaynaklar arası alt kaynaklar için Permissions-Policy
aracılığıyla ele alınmalı veya kaynaklar arası bağlamda yürütülen JavaScript aracılığıyla elde edilmelidir.
Kullanıcı aracısı daraltması, bot algılamayı nasıl etkiler?
Chrome'un User-Agent dizesindeki değişiklik, bir botun göndermeyi seçtiği User-Agent dizesini doğrudan etkilemez.
Bot'lar, Chrome'un gönderdiği azaltılmış bilgileri yansıtacak şekilde kendi dizelerini güncellemeyi seçebilir ancak bu tamamen uygulama tercihlerine bağlıdır. Chrome, aynı User-Agent biçimini göndermeye devam eder ve Chrome User-Agent dizesinin sonuna kendi tanımlayıcılarını ekleyen bot'lar bunu yapmaya devam edebilir.
Belirli botlarla ilgili endişeleriniz varsa doğrudan bot sahiplerine ulaşarak User-Agent dizelerini değiştirme planları olup olmadığını sorabilirsiniz.
Etkileşim kurma ve geri bildirim paylaşma
- Kaynak denemesi: Önceki kaynak denemeleriyle ilgili geri bildirimlerinizi paylaşın.
- Demo: Kullanıcı aracısı başlığını kısaltma demomuzu deneyin.
- GitHub: UA-CH açıklamalı makalesini okuyun, soru sorun ve tartışmayı takip edin.
- Geliştirici desteği: Privacy Sandbox Geliştirici Desteği deposunda soru sorabilir ve tartışmalara katılabilirsiniz.
Daha fazla bilgi
- Kullanıcı gizliliğini ve geliştirici deneyimini iyileştirme: web geliştiricileri için genel bakış
- UA dizesinden UA-CH'ye geçiş: web geliştiricileri için eğitim
- Özel Korumalı Alan'ı inceleme