Kullanıcı aracısı azaltma nedir?

User-Agent (UA) azaltma, Kullanıcı Aracısı dizesinde paylaşılan tanımlayıcı bilgileri en aza indirir. Bu bilgiler, pasif dijital parmak izi için kullanılabilir. Bu değişiklikler genel kullanıma sunulduğundan tüm kaynak istekleri azaltılmış bir User-Agent başlığına sahiptir. Bunun sonucunda, navigator.userAgent, navigator.appVersion ve navigator.platform dahil olmak üzere belirli Navigator arayüzlerinden gelen dönüş değerleri azalır.

Web geliştiricileri, 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 User-Agent dizesini ayrıştırmaya dayanıyorsa User-Agent Client İpuçları API'sini uygulamanız gerekir.

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

Kullanıcı Aracısı İstemci İpuçları, tüm Kullanıcı Aracısı veri grubuna erişim sağlar, ancak bunu yalnızca sunucular belirli veri parçalarına yönelik açık bir ihtiyaç duyduğunda etkin olarak belirtir.

Pasif olarak açığa çıkan kullanıcı verilerini kaldırarak istek başlıkları, JavaScript API'leri ve diğer mekanizmaların kasıtlı olarak açığa çıkardığı bilgi miktarını daha iyi ölçer ve azaltırız.

UA ve UA-CH'nin azaltılmasına neden ihtiyaç duyuyoruz?

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

  • Ayrıntı düzeyi ve çok fazla ayrıntı, kullanıcıların kimliğini tespit etmesine neden olabilir.
  • Bu bilgilerin varsayılan olarak kullanılabilir olması gizli izlemeye yol açabilir.

UA ve UA-CH'nin azaltılması varsayılan olarak yalnızca temel bilgileri paylaşarak kullanıcı gizliliğini iyileştirir.

Kullanıcı aracısı, tarayıcının markası ile birlikte isteğin geldiği önemli bir sürüm (masaüstü veya mobil) ve platformu da içerir. Kullanıcı Aracısı İstemci İpuçları, daha fazla veriye erişmek için kullanıcının cihazı veya koşulları hakkında belirli bilgiler istemenize olanak tanır.

Bunun yanı sıra, User-Agent dizesi zamanla daha uzun ve karmaşık hale gelerek hataya yatkın dize ayrıştırmaya yol açmıştır. UA-CH, yorumlanması daha kolay olan yapılandırılmış ve güvenilir veriler sunar. UA dizesini ayrıştıran mevcut kod bozulmaz (ancak daha az veri döndürür) ve siteniz belirli müşteri bilgilerine ihtiyaç duyuyorsa UA-CH'ye taşımanız gerekir.

İndirimli 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 bölümüne bakın.

Kullanıcı tarayıcıyı açar ve adres çubuğuna example.com yazar:

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

    1. Tarayıcı, User-Agent üst bilgisini azaltılmış User-Agent dizesiyle 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 istemcisi İpucu başlıklarında da içerir. Ö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 üst bilgilerinde hangi verilerin sunucuya dönmesine izin verileceğini belirlemek için politikalar ve kullanıcı yapılandırması 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"
    

İstemciler için Önemli İpuçları

İlk isteğinizde belirli bir İstemci İpuç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 istek, Device-Memory ve Viewport-Width için bir istek içerebilir. Bu durumda Device-Memory kritik 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 ipucuna (Critical-CH) ihtiyaç duyuyorsa sunucu, Accept-CH üstbilgisiyle bu ek bilgileri isteyebilir. Ardından, tarayıcı kritik ipucunu da içeren yeni bir sayfa için istek gönderebilir.

Özetle, Accept-CH sayfa için istediğiniz tüm değerleri isterken Critical-CH, sayfayı doğru bir şekilde yüklemek için yükleme sırasında sahip olmanız gereken değerlerin yalnızca alt kümesini ister. Daha fazla bilgi için İstemci İpuçları Güvenilirliği spesifikasyonuna bakın.

UA-CH API ile tablet cihazları algılama

Mobil, tablet ve masaüstü cihazlar arasındaki çizgi giderek daha az ayırt edildikçe ve dinamik form faktörleri daha yaygın (katlanan ekranlar, dizüstü bilgisayar ve tablet modu arasında geçiş yapma) yaygınlaştıkça, uygun bir kullanıcı arayüzü sunmak için duyarlı tasarım ve özellik algılamanın kullanılması önerilir.

Bununla birlikte, tarayıcı tarafından hem User-Agent dizesi hem de Kullanıcı Aracısı İstemci İpuçları için sağlanan bilgiler aynı kaynaktan geldiği için aynı mantık biçimlerinin işe yaraması gerekir.

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

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

Eşleşen varsayılan UA-CH başlıkları arayüzü işaretlenebilir:

  • Telefon deseni: Sec-CH-UA-Platform: "Android", Sec-CH-UA-Mobile: ?1
  • Tablet deseni: Sec-CH-UA-Platform: "Android", Sec-CH-UA-Mobile: ?0

Ya da eşdeğer JavaScript arayüzü:

  • Telefon deseni: navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
  • Tablet kalıbı: navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false

Donanıma özel kullanım alanlarında cihaz modeli adı, yüksek entropili Sec-CH-UA-Model ipucu aracılığıyla istenebilir.

İndirimli UA'yı nasıl kullanırım ve test ederim?

Başlamak için User-Agent dizesi ö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ırmaya dayanıyorsa UA-CH API'yi uygulamanız gerekir.

UA-CH API'ye geçiş yaptıktan sonra, User-Agent'tan beklediğiniz verileri aldığınızdan emin olmak için test yapmanız gerekir. Test etmenin her biri karmaşıklık olarak artan üç yol vardır.

Kullanıcı aracısını azaltmaya yönelik ölçeklendirilmiş kullanılabilirlik, tüm Chrome cihazlara tamamen azaltılmış UA dizesinin gönderilmesi anlamına gelir. İndirim, 2022'nin 2. çeyreğinde küçük bir Chrome sürümüyle başladı.

Özel dizeleri yerel olarak test etme

Farklı cihazları simüle etmek için özel User-Agent 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ü 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. Dizeyi geçersiz kılıp değiştirerek veya yeni sürümü oluşturup yan yana deneyerek test edebilirsiniz.

İstemci İpuç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ı gösteren boole ve işletim sisteminin adı dahil olmak üzere sunucuya döndürülen üç varsayılan İstemci İpucu vardır. Bunlar, Taşıma Katmanı Güvenliği protokolü (TLS) el sıkışmasından sonra gönderilir. Bunlar zaten mevcut ve tarayıcınızda destekleniyor.

Bununla birlikte, sitenizin oluşturulması için kritik bilgileri almanız gereken durumlar olabilir.

Kritik ipuçlarını optimize edin

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 birinci isteğin kritik bir ipucu olmadan gönderilmesi durumunda tarayıcıya isteği hemen yeniden denemesini bildirecek şekilde tasarlanmıştır.

Kritik ipuçları içeren İstemci İpuçları için sıra şeması.
Sunucu, kritik ipucu istediğinde istemci, kritik ipucuyla web sayfası için ilk isteği göndermeyi yeniden dener. Bu örnekte Sec-CH-UA-Model ipucu iki kez isteniyor: bir kez Accept-CH ile İstemci İpucu olarak ve Critical-CH ile kritik ipucu olarak.

Kritik ipuçlarını (Critical-CH başlığı) optimize etmek için bu el sıkışmayı durdurmanız ve İstemci İpuçları için bir model sağlamanız gerekir. Bu adımlar karmaşık olabilir ve ileri düzeyde bilgi gerektirebilir.

ACCEPT_CH HTTP/2 ve HTTP/3 kareleri TLS ALPS uzantısı ile birlikte, sunucunun İstemci İpucu tercihlerini ilk HTTP isteği için zamanında sunmak için bağlantı düzeyinde bir optimizasyondur. Bu çözümler karmaşık yapılandırmalar gerektirir ve bunu yalnızca gerçekten kritik bilgiler için kullanmanızı öneririz.

BoringSSL (OpenSSL'nin bir ç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ını kullanmanız gerekirse kritik ipuçlarının 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üre boyunca gönderilir?

Accept-CH baş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ışıyor mu?

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şmesi için üst düzey bir sayfa (Permissions-Policy) gerekir mi?

İstek başlıklarındaki yüksek entropili UA-CH, kaynağın DNS tarafında nasıl tanımlandığından bağımsız olarak, kaynaklar arası isteklerde kısıtlanır. Yetkilendirme, kaynaklar arası alt kaynaklar için Permissions-Policy aracılığıyla işlenmeli veya kaynaklar arası bağlamda çalışan JavaScript aracılığıyla alınmalıdır.

Kullanıcı aracısı kısaltma özelliği, bot algılamayı nasıl etkiler?

Chrome'un User-Agent dizesinde yaptığı değişiklik, bir bot'un göndermeyi seçtiği User-Agent dizesini doğrudan etkilemez.

Botlar, Chrome'un gönderdiği daha az bilgiyi yansıtacak şekilde kendi dizelerini güncellemeyi tercih edebilirler, ancak bu uygulama tamamen kendi seçimleridir. Chrome, aynı User-Agent biçimini göndermeye devam etmektedir ve Chrome User-Agent dizesinin sonuna kendi tanımlayıcılarını ekleyen botlar bunu yapmaya devam edebilir.

Belirli bot'larla ilgili endişeleriniz varsa doğrudan hesap sahiplerine ulaşarak Kullanıcı Aracısı dizesini değiştirmeyi planlayıp planlamadıklarını sorabilirsiniz.

Etkileşimde bulunun ve geri bildirim paylaşın

Daha fazla bilgi