Kullanıcı aracısı azaltma nedir?

Kullanıcı aracısı (UA) azaltma, kullanıcı aracısı dizesinde paylaşılan ve pasif parmak izi oluşturma için kullanılabilen tanımlayıcı bilgileri en aza indirir. Bu değişiklikler genel kullanıma sunulduğundan artık tüm kaynak isteklerinde User-Agent üstbilgisi daha az yer kaplıyor. 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ştiriciler, User-Agent dizesinin kullanımı için site kodlarını incelemelidir. Siteniz, cihaz modelini, platform sürümünü veya tam tarayıcı sürümünü okumak için Kullanıcı Aracısı dizesinin ayrıştırılmasına dayanıyorsa Kullanıcı Aracısı İstemci İpuçları API'sini uygulamanız gerekir.

Kullanıcı Aracısı İstemci İpuçları (UA-CH)

User-Agent Client Hints, User-Agent verilerinin tamamına erişime izin verir ancak yalnızca sunucular belirli veri parçaları için açık bir ihtiyaç olduğunu aktif olarak beyan ettiğinde.

Pasif olarak gösterilen kullanıcı verilerini kaldırarak, istek başlıkları, JavaScript API'leri ve diğer mekanizmalar tarafından kasıtlı olarak gösterilen bilgi miktarını daha iyi ölçüp azaltıyoruz.

Neden azaltılmış UA ve UA-CH'ye ihtiyacımız var?

Geçmişte, User-Agent dizesi her HTTP isteğinde kullanıcının tarayıcısı, işletim sistemi ve sürümü hakkında büyük bir veri dizesi yayınlıyordu. Bu durum iki nedenden dolayı sorunluydu:

  • Ayrıntıların ayrıntı düzeyi ve çokluğu, kullanıcı tanımlamaya yol açabilir.
  • Bu bilgilerin varsayılan olarak kullanılabilir olması gizli izlemeye yol açabilir.

Azaltılmış UA ve UA-CH, varsayılan olarak yalnızca temel bilgileri paylaşarak kullanıcı gizliliğini artırır.

Azaltılmış User-Agent, tarayıcının markasını ve önemli bir sürümünü, isteğin geldiği yeri (masaüstü veya mobil) ve platformu içerir. Kullanıcı aracısı istemci ipuçları, daha fazla veriye erişmek için kullanıcının cihazı veya koşulları hakkında belirli bilgiler istemenize olanak tanır.

Ayrıca, zaman içinde User-Agent dizesi daha uzun ve karmaşık hale geldi. Bu da dize ayrıştırmanın 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 bozulmamalıdır (daha az veri döndürse de) ve sitenizin belirli istemci bilgilerine ihtiyacı varsa UA-CH'ye geçmeniz gerekir.

UA ve UA-CH'nin azaltılmış sürümü 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 User-Agent Client Hints ile kullanıcı gizliliğini ve geliştirici deneyimini iyileştirme başlıklı makaleyi inceleyin.

Kullanıcı tarayıcıyı açıp adres çubuğuna example.com girerse:

  1. Tarayıcı, web sayfasını yüklemek için bir istek gönderir.

    1. 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
    2. Tarayıcı, aynı bilgileri varsayılan User-Agent Client Hint üstbilgilerine ekler. Örneğin:

      Sec-CH-UA: "Chrome"; v="98"
      Sec-CH-UA-Mobile: ?1
      Sec-CH-UA-Platform: "Android"
      
  2. Sunucu, Accept-CH yanıt başlığıyla tarayıcıdan 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

  3. Tarayıcı, sonraki istek üstbilgilerinde sunucuya hangi verilerin döndürülmesine izin verileceğ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 ipuçları 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 istekte Device-Memory ve Viewport-Width için istek yer alabilir. Burada 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ının web sayfasını düzgün şekilde oluşturmak için kritik bir ipucuna (Critical-CH) ihtiyacı varsa sunucu, Accept-CH üstbilgisiyle bu ek bilgiyi isteyebilir. Ardından tarayıcı, kritik ipucu da dahil olmak üzere sayfa için yeni bir istek gönderebilir.

Özetle, Accept-CH sayfada istediğiniz tüm değerleri isterken Critical-CH yalnızca sayfanın düzgün şekilde yüklenmesi için yükleme sırasında sahip olmanız gereken değerlerin alt kümesini ister. Daha fazla bilgi için İstemci İpuçları Güvenilirliği şartnamesini inceleyin.

UA-CH API ile tablet cihazları algılama

Mobil, tablet ve masaüstü cihazlar arasındaki çizgi bulanıklaşmaya devam ederken dinamik form faktörleri (katlanabilir ekranlar, dizüstü bilgisayar ve tablet modu arasında geçiş) daha yaygın hale geliyor. Bu nedenle, uygun bir kullanıcı arayüzü sunmak için duyarlı tasarım ve özellik algılama kullanmanız önerilir.

Ancak, hem kullanıcı aracısı dizesi hem de kullanıcı aracısı istemci ipuçları için tarayıcı tarafından sağlanan bilgiler aynı kaynaktan geldiğinden aynı mantık biçimleri çalışmalıdır.

Örneğin, UA dizesinde bu kalıp kontrol ediliyorsa:

  • Telefon kalıbı: 'Android' + 'Chrome/[.0-9]* Mobile'
  • Tablet kalıbı: 'Android' + 'Chrome/[.0-9]* (?!Mobile)'

Eşleşen varsayılan UA-CH üstbilgileri arayüzü işaretlenmiş olabilir:

  • 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 entropili Sec-CH-UA-Model ipucu aracılığıyla istenebilir.

Azaltılmış UA'yı nasıl kullanır ve test ederim?

Başlamak için site kodunuzu inceleyerek User-Agent dizesinin örneklerini ve kullanımlarını bulun. Siteniz, cihaz modelini, platform sürümünü veya tam tarayıcı sürümünü okumak için User-Agent dizesinin ayrıştırılmasına dayanıyorsa UA-CH API'yi uygulamanız gerekir.

UA-CH API'ye güncelledikten sonra, User-Agent'tan beklediğiniz verileri aldığınızdan emin olmak için test yapmanız gerekir. Üç test yöntemi vardır ve her biri daha karmaşıktır.

Kullanıcı aracısı kısaltma özelliğinin ölçeklendirilmiş kullanılabilirliği, tamamen kısaltılmış kullanıcı aracısı dizesinin tüm Chrome cihazlarda kullanıma sunulduğu anlamına gelir. Azaltma, 2022'nin 2. çeyreğinde Chrome'un küçük bir sürümüyle başladı.

Özel dizeleri yerel olarak test etme

Farklı cihazları simüle etmek için özel kullanıcı aracısı dizeleri kullanarak sitenizi 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ü kullanın.

Sitenizin kodundaki dizeyi dönüştürme

Mevcut Chrome user-agent dizesini istemci tarafı veya sunucu tarafı kodunuzda işliyorsanız uyumluluğu test etmek için bu dizeyi yeni biçime dönüştürebilirsiniz. Dizeyi geçersiz kılıp değiştirerek veya yeni sürümü oluşturup yan yana test ederek test yapabilirsiniz.

İstemci ipuçları ve kritik ipuçları için destek

Tarayıcı adı ve ana sürümü, tarayıcının mobil cihazda olup olmadığını belirten bir boole değeri ve işletim sistemi adı dahil olmak üzere sunucuya döndürülen üç varsayılan istemci ipucu vardır. Bunlar, Taşıma Katmanı Güvenliği (TLS) protokolü el sıkışmasından sonra gönderilir. Bunlar tarayıcınızda zaten kullanılabilir ve desteklenir.

Ancak, sitenizin oluşturulması için kritik bilgileri almanız gereken zamanlar olabilir.

Önemli 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 tarayıcıya ilk istek kritik bir ipucu olmadan gönderildiyse isteği hemen yeniden denemesini söyleyecek şekilde tasarlanmıştır.

Önemli ipuçları içeren istemci ipuçları için sıralı diyagram.
Sunucu tarafından kritik bir ipucu istendiğinde istemci, kritik ipucuyla birlikte web sayfası için ilk isteği yeniden göndermeyi dener. Bu örnekte, Sec-CH-UA-Model ipucu iki kez isteniyor: bir kez Accept-CH ile istemci ipucu olarak, bir kez de Critical-CH ile kritik ipucu olarak.

Kritik ipuçlarını (Critical-CH üstbilgi) optimize etmek için bu el sıkışmayı yakalamanız ve İstemci İpuç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 iletmek üzere bağlantı düzeyinde yapılan bir optimizasyondur. Bunlar karmaşık yapılandırma gerektirir ve yalnızca gerçekten kritik bilgiler için kullanılmasını öneririz.

BoringSSL (OpenSSL'nin bir çatallanması), Chromium'daki deneysel Google özellikleriyle çalışmanıza yardımcı olur. ALPS şu anda yalnızca BoringSSL'de uygulanmaktadır.

Önemli ipuçlarını kullanmanız gerekiyorsa önemli ipuçlarının güvenilirliği ve optimizasyonu ile ilgili kılavuzumuza bakın.

SSS

Accept-CH üstbilgisi 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 süresince 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ı (ve CNAME'ler), yüksek entropili UA-CH'ye erişmek için üst düzey bir sayfa Permissions-Policy gerektirir mi?

İstek başlıklarındaki yüksek entropili UA-CH, kaynaklar arası isteklerde, kaynağın DNS tarafında nasıl tanımlandığına bakılmaksızın kısıtlanır. Kökler arası erişime kapalı alt kaynaklar için yetki verme işlemi Permissions-Policy üzerinden yapılmalı veya kökler arası erişime kapalı bağlamda yürütülen JavaScript aracılığıyla alınmalıdır.

Kullanıcı aracısı daraltması, bot algılamayı nasıl etkiler?

Chrome'un kullanıcı aracısı dizesinde yaptığı değişiklik, bir botun göndermeyi seçtiği kullanıcı aracısı dizesini doğrudan etkilemez.

Botlar, Chrome'un gönderdiği bilgilerin azaltılmasını yansıtacak şekilde kendi dizelerini güncellemeyi tercih edebilir ancak bu tamamen kendi uygulama tercihlerine bağlıdır. Chrome, aynı User-Agent biçimini göndermeye devam ediyor ve kendi tanımlayıcılarını bir Chrome User-Agent dizesinin sonuna ekleyen botlar bunu yapmaya devam edebilir.

Belirli botlarla ilgili endişeleriniz varsa doğrudan sahiplerine ulaşarak kullanıcı aracısı dizelerini değiştirme planları olup olmadığını sormanız faydalı olabilir.

Etkileşim kurma ve geri bildirim paylaşma

Daha fazla bilgi