Pengurangan Agen Pengguna (UA) meminimalkan informasi pengidentifikasi yang dibagikan dalam string Agen Pengguna, yang dapat digunakan untuk pelacakan sidik jari pasif. Setelah
perubahan ini diluncurkan untuk ketersediaan umum, semua permintaan
resource memiliki header User-Agent
yang dikurangi. Akibatnya, nilai yang ditampilkan dari
antarmuka Navigator
tertentu berkurang,
termasuk: navigator.userAgent
, navigator.appVersion
, dan
navigator.platform
.
Developer web harus meninjau kode situsnya untuk mengetahui penggunaan string Agen Pengguna. Jika situs Anda mengandalkan penguraian string Agen Pengguna untuk membaca model perangkat, versi platform, atau versi browser lengkap, Anda harus menerapkan User-Agent Client Hints API.
Petunjuk Klien Agen Pengguna (UA-CH)
Petunjuk Klien Agen Pengguna mengizinkan akses ke kumpulan data Agen Pengguna lengkap, tetapi hanya jika server secara aktif mendeklarasikan kebutuhan eksplisit untuk bagian data tertentu.
Dengan menghapus data pengguna yang terekspos secara pasif, kami akan mengukur dan mengurangi jumlah informasi yang sengaja diekspos oleh header permintaan, JavaScript API, dan mekanisme lainnya.
Mengapa kita perlu mengurangi UA dan UA-CH?
Secara historis, string Agen Pengguna akan menyiarkan string data yang besar tentang browser, sistem operasi, dan versi pengguna dengan setiap permintaan HTTP. Ini bermasalah karena dua alasan:
- Perincian dan banyak detail dapat mengarah pada identifikasi pengguna.
- Ketersediaan default informasi ini dapat menyebabkan pelacakan tersembunyi.
UA dan UA-CH yang dikurangi meningkatkan privasi pengguna dengan hanya membagikan informasi dasar secara default.
Pengurangan Agen Pengguna mencakup merek browser dan versi signifikan, asal permintaan (desktop atau seluler), dan platform. Untuk mengakses lebih banyak data, Petunjuk Klien Agen Pengguna memungkinkan Anda meminta informasi spesifik tentang perangkat atau kondisi pengguna.
Selain itu, seiring waktu, string User-Agent
menjadi lebih panjang dan lebih kompleks, yang menyebabkan
penguraian string yang rentan mengalami error. UA-CH menyediakan data terstruktur dan andal yang
lebih mudah ditafsirkan. Kode yang sudah ada yang mengurai string UA tidak boleh rusak (meskipun akan menampilkan lebih sedikit data), dan Anda harus bermigrasi ke UA-CH jika situs Anda memerlukan informasi klien tertentu.
Bagaimana cara kerja pengurangan UA dan UA-CH?
Berikut adalah contoh singkat cara kerja pengurangan string Agen Pengguna dan UA-CH. Untuk contoh yang lebih mendalam, tinjau Meningkatkan privasi pengguna dan pengalaman developer dengan Petunjuk Klien Agen Pengguna.
Pengguna membuka browser dan memasukkan example.com
ke kolom URL:
Browser mengirim permintaan untuk memuat halaman web.
- Browser menyertakan header
User-Agent
dengan string Agen Pengguna yang dikurangi. Misalnya:User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.0.0 Mobile Safari/537.36
Browser menyertakan informasi yang sama di header User-Agent Client Hint default. Contoh:
Sec-CH-UA: "Chrome"; v="98" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android"
- Browser menyertakan header
Server dapat meminta browser untuk mengirim client hints tambahan, seperti model perangkat, dengan header respons
Accept-CH
. Misalnya:Accept-CH: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform, Sec-CH-UA-Model
Browser menerapkan kebijakan dan konfigurasi pengguna untuk menentukan data yang diizinkan untuk ditampilkan ke server dalam header permintaan berikutnya. Contoh:
Sec-CH-UA: "Chrome"; v="93" Sec-CH-UA-Mobile: ?1 Sec-CH-UA-Platform: "Android" Sec-CH-UA-Model: "Pixel 2"
Petunjuk Klien Penting
Jika memerlukan kumpulan Petunjuk Klien tertentu dalam permintaan awal, Anda dapat menggunakan header respons Critical-CH
. Nilai Critical-CH
harus merupakan subset dari
nilai yang diminta oleh Accept-CH
.
Misalnya, permintaan awal dapat mencakup permintaan untuk Device-Memory
dan
Viewport-Width
, dengan Device-Memory
dianggap sangat penting.
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
Jika browser memerlukan petunjuk penting (Critical-CH
) untuk merender halaman web dengan benar, server dapat meminta informasi tambahan ini dengan header Accept-CH
. Selanjutnya, browser dapat mengirim permintaan baru untuk halaman tersebut, termasuk petunjuk penting.
Singkatnya, Accept-CH
meminta semua nilai yang Anda inginkan untuk halaman, sedangkan Critical-CH
hanya meminta subkumpulan nilai yang harus Anda miliki saat pemuatan agar dapat memuat halaman dengan benar. Lihat spesifikasi Keandalan Petunjuk Klien untuk mengetahui informasi selengkapnya.
Mendeteksi perangkat tablet dengan UA-CH API
Karena garis antara perangkat seluler, tablet, dan desktop terus menjadi kurang berbeda dan faktor bentuknya semakin dinamis menjadi lebih umum (layar lipat, beralih antara mode laptop dan tablet), sebaiknya gunakan desain responsif dan deteksi fitur untuk menghadirkan antarmuka pengguna yang sesuai.
Namun, informasi yang diberikan browser untuk string Agen Pengguna dan Petunjuk Klien Agen Pengguna berasal dari sumber yang sama, sehingga bentuk logika yang sama akan berfungsi.
Misalnya, jika pola ini dicentang pada string UA:
- Pola ponsel:
'Android' + 'Chrome/[.0-9]* Mobile'
- Pola tablet:
'Android' + 'Chrome/[.0-9]* (?!Mobile)'
Antarmuka header UA-CH default yang cocok dapat diperiksa:
- Pola telepon:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?1
- Pola tablet:
Sec-CH-UA-Platform: "Android"
,Sec-CH-UA-Mobile: ?0
Atau antarmuka JavaScript yang setara:
- Pola ponsel:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === true
- Pola tablet:
navigator.userAgentData.platform === 'Android' && navigator.userAgentData.mobile === false
Untuk kasus penggunaan khusus hardware, nama model perangkat dapat diminta melalui petunjuk Sec-CH-UA-Model
dengan entropi tinggi.
Bagaimana cara menggunakan dan menguji pengurangan UA?
Untuk memulai, tinjau kode situs Anda untuk melihat instance dan penggunaan string Agen Pengguna. Jika situs Anda mengandalkan penguraian string Agen Pengguna untuk membaca model perangkat, versi platform, atau versi browser lengkap, Anda harus menerapkan UA-CH API.
Setelah mengupdate ke UA-CH API, Anda harus melakukan pengujian untuk memastikan Anda mendapatkan data yang diharapkan dari Agen Pengguna. Ada tiga cara untuk menguji, masing-masing meningkatkan kompleksitas.
Ketersediaan yang diskalakan untuk pengurangan Agen Pengguna berarti string UA yang dikurangi sepenuhnya yang dikirim ke semua perangkat Chrome. Pengurangan dimulai dengan rilis kecil Chrome pada Q2 tahun 2022.
Menguji string kustom secara lokal
Jika Anda ingin menguji situs menggunakan string Agen Pengguna kustom untuk menyimulasikan
perangkat yang berbeda, luncurkan Chrome dengan
tanda command line --user-agent="Custom string here"
. Temukan informasi selengkapnya tentang
tanda command line di sini.
Atau, gunakan emulator perangkat di Chrome DevTools.
Mengubah string di kode situs Anda
Jika memproses string user-agent
Chrome yang ada dalam kode sisi klien atau
sisi server, Anda dapat mengubah string tersebut ke format baru untuk menguji
kompatibilitas. Anda dapat melakukan pengujian dengan mengganti dan mengganti string, atau membuat versi baru dan mengujinya secara berdampingan.
Dukungan untuk Petunjuk Klien dan petunjuk penting
Ada tiga Petunjuk Klien default yang ditampilkan ke server, termasuk nama browser dan versi utama, boolean yang menunjukkan apakah browser menggunakan perangkat seluler, dan nama sistem operasi. Ini dikirim setelah handshake protokol Transport Layer Security (TLS). Semua itu sudah tersedia dan didukung di browser Anda.
Namun, terkadang Anda perlu mengambil informasi penting agar situs Anda dapat dirender.
Mengoptimalkan petunjuk penting
TLS handshake adalah langkah pertama untuk membuat koneksi aman antara browser dan server web. Tanpa intervensi, Header respons Kritis-CH dirancang untuk memberi tahu browser agar segera mencoba ulang permintaan jika permintaan pertama dikirim tanpa petunjuk penting.
![Diagram urutan untuk Petunjuk Klien dengan petunjuk penting.](https://developers-dot-devsite-v2-prod.appspot.com/privacy-sandbox/assets/images/sequence-diagram-with-critical-client-hints.avif?authuser=7&hl=id)
Sec-CH-UA-Model
diminta dua kali: sekali sebagai Petunjuk Klien dengan Accept-CH
dan sekali lagi sebagai petunjuk penting dengan Critical-CH
.Untuk mengoptimalkan petunjuk penting (header Critical-CH
),
Anda harus menangkap handshake ini dan memberikan model untuk Petunjuk Klien. Langkah-langkah
ini mungkin rumit, dan memerlukan pengetahuan tingkat lanjut.
ACCEPT_CH
HTTP/2 dan HTTP/3 frames, yang dikombinasikan dengan ekstensi TLS ALPS, adalah pengoptimalan tingkat koneksi untuk mengirimkan preferensi Client Hint server tepat waktu untuk permintaan HTTP pertama. Konfigurasi ini memerlukan konfigurasi yang rumit, dan sebaiknya hanya gunakan opsi ini untuk informasi yang benar-benar penting.
BoringSSL (cabang OpenSSL) membantu Anda menggunakan fitur eksperimental Google di Chromium. Saat ini, ALPS hanya diimplementasikan di BoringSSL.
Jika Anda perlu menggunakan petunjuk penting, lihat panduan kami tentang keandalan dan pengoptimalan petunjuk penting.
FAQ
Berapa lama petunjuk yang ditentukan melalui header Accept-CH
akan dikirim?
Petunjuk yang ditentukan melalui header Accept-CH
akan dikirim selama durasi
sesi browser atau hingga serangkaian petunjuk yang berbeda ditetapkan.
Apakah UA-CH berfungsi dengan HTTP/2 dan HTTP/3?
UA-CH berfungsi dengan koneksi HTTP/2 dan HTTP/3.
Apakah subdomain (dan CNAME) memerlukan halaman tingkat atas Permissions-Policy
untuk mengakses UA-CH entropi tinggi?
UA-CH entropi tinggi pada header permintaan dibatasi pada permintaan lintas origin,
terlepas dari cara origin tersebut ditentukan di sisi DNS. Delegasi harus ditangani melalui Permissions-Policy
untuk setiap subresource lintas origin atau diperoleh melalui JavaScript yang dijalankan dalam konteks lintas origin.
Bagaimana pengurangan Agen Pengguna memengaruhi deteksi bot?
Perubahan Chrome pada string Agen Penggunanya tidak secara langsung memengaruhi string Agen Pengguna yang dipilih untuk dikirim oleh bot.
Bot dapat memilih untuk memperbarui stringnya sendiri guna mencerminkan informasi yang lebih sedikit yang dikirim Chrome, tetapi itu sepenuhnya merupakan pilihan implementasi mereka. Chrome masih mengirimkan format Agen Pengguna yang sama, dan bot yang menambahkan ID-nya sendiri ke akhir string Agen Pengguna Chrome dapat terus melakukannya.
Jika ada masalah dengan bot tertentu, sebaiknya hubungi pemilik secara langsung untuk menanyakan apakah mereka berencana mengubah string Agen Penggunanya.
Berinteraksi dan memberikan masukan
- Uji coba origin: Berikan masukan Anda tentang uji coba origin sebelumnya.
- Demo: Coba demo pengurangan Agen Pengguna kami.
- GitHub: Baca penjelasan UA-CH, ajukan pertanyaan, dan ikuti diskusi.
- Dukungan developer: Ajukan pertanyaan dan ikuti diskusi di repositori Dukungan Developer Privacy Sandbox.
Cari tahu selengkapnya
- Meningkatkan privasi pengguna dan pengalaman developer: ringkasan untuk developer web
- Bermigrasi dari string UA ke UA-CH: tutorial untuk developer web
- Mempelajari Privacy Sandbox