Pengurangan Agen Pengguna (UA) meminimalkan informasi pengidentifikasi yang dibagikan dalam
string Agen Pengguna, yang mungkin digunakan untuk pelacakan sidik jari pasif. Setelah
perubahan ini diluncurkan untuk ketersediaan umum, semua permintaan
resource memiliki header User-Agent
yang dipersingkat. Akibatnya, nilai yang ditampilkan dari
antarmuka Navigator
tertentu akan dikurangi,
termasuk: navigator.userAgent
, navigator.appVersion
, dan
navigator.platform
.
Developer web harus meninjau kode situs mereka untuk penggunaan string User-Agent. Jika situs Anda mengandalkan penguraian string User-Agent untuk membaca model perangkat, versi platform, atau versi browser lengkap, Anda harus menerapkan Client Hints Agen Pengguna API.
Petunjuk Klien Agen Pengguna (UA-CH)
User-Agent Client Hints memungkinkan akses ke kumpulan lengkap data User-Agent, tetapi hanya jika server secara aktif mendeklarasikan kebutuhan eksplisit untuk bagian data tertentu.
Dengan menghapus data pengguna yang diekspos secara pasif, kami dapat mengukur dan mengurangi jumlah informasi yang sengaja diekspos oleh header permintaan, JavaScript API, dan mekanisme lainnya dengan lebih baik.
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. Hal ini menjadi masalah karena dua alasan:
- Tingkat perincian dan banyaknya detail dapat menyebabkan identifikasi pengguna.
- Ketersediaan default informasi ini dapat menyebabkan pelacakan terselubung.
Pengurangan UA dan UA-CH meningkatkan privasi pengguna dengan hanya membagikan informasi dasar secara default.
Agen Pengguna yang dipersingkat mencakup merek browser dan versi yang signifikan, asal permintaan (desktop atau seluler), dan platform. Untuk mengakses data lainnya, User-Agent Client Hints memungkinkan Anda meminta informasi tertentu tentang perangkat atau kondisi pengguna.
Selain itu, seiring waktu, string User-Agent
menjadi lebih panjang dan lebih kompleks, yang menyebabkan
penguraian string yang rentan terhadap error. UA-CH menyediakan data terstruktur dan andal yang
lebih mudah ditafsirkan. Kode yang ada yang mengurai string UA tidak boleh
terputus (meskipun akan menampilkan lebih sedikit data), dan Anda harus bermigrasi ke UA-CH
jika situs Anda memerlukan informasi klien
tertentu.
Bagaimana cara kerja UA dan UA-CH yang dikurangi?
Berikut adalah contoh singkat tentang cara kerja string Agen Pengguna dan UA-CH yang dipersingkat. Untuk contoh yang lebih mendalam, tinjau Meningkatkan privasi pengguna dan pengalaman developer dengan User-Agent Client Hints.
Pengguna membuka browser dan memasukkan example.com
ke kolom URL:
Browser mengirimkan permintaan untuk memuat halaman web.
- Browser menyertakan header
User-Agent
dengan string Agen Pengguna yang dipersingkat. 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 petunjuk klien 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 di 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 Kritis
Jika memerlukan kumpulan Client Hints 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 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
. Kemudian, browser dapat mengirim permintaan baru untuk halaman, termasuk petunjuk penting.
Singkatnya, Accept-CH
meminta semua nilai yang Anda inginkan untuk halaman, sedangkan Critical-CH
hanya meminta subset nilai yang harus Anda miliki saat pemuatan untuk memuat halaman
dengan benar. Lihat spesifikasi Keandalan Client Hints untuk mengetahui informasi selengkapnya.
Mendeteksi perangkat tablet dengan UA-CH API
Seiring dengan semakin samanya perangkat seluler, tablet, dan desktop, faktor bentuk dinamis menjadi lebih umum (layar foldable, beralih antara mode laptop dan tablet), sebaiknya gunakan desain responsif dan deteksi fitur untuk menampilkan antarmuka pengguna yang sesuai.
Namun, informasi yang diberikan oleh 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 telepon:
'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 telepon:
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
entropi tinggi.
Bagaimana cara menggunakan dan menguji UA yang dikurangi?
Untuk memulai, tinjau kode situs Anda untuk menemukan instance dan penggunaan string Agen Pengguna. Jika situs Anda mengandalkan penguraian string User-Agent untuk membaca model perangkat, versi platform, atau versi browser lengkap, Anda harus menerapkan UA-CH API.
Setelah mengupdate ke UA-CH API, Anda harus menguji untuk memastikan Anda mendapatkan data yang diharapkan dari User-Agent. Ada tiga cara untuk melakukan pengujian, yang masing-masing memiliki tingkat kerumitan yang meningkat.
Ketersediaan yang diskalakan untuk pengurangan Agen Pengguna berarti string UA yang dikurangi sepenuhnya dikirimkan di semua perangkat Chrome. Pengurangan dimulai dengan rilis minor Chrome pada Kuartal 2 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
flag command line di sini.
Atau, gunakan emulator perangkat di Chrome DevTools.
Mengubah string dalam kode situs
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 menguji dengan mengganti dan menggantikan string, atau
membuat versi baru dan menguji secara berdampingan.
Dukungan untuk Client Hints dan petunjuk penting
Ada tiga Client Hints default yang ditampilkan ke server, termasuk nama browser dan versi utama, boolean yang menunjukkan apakah browser berada di perangkat seluler, dan nama sistem operasi. Pesan ini dikirim setelah handshake protokol Transport Layer Security (TLS). Fitur ini sudah tersedia dan didukung di browser Anda.
Namun, ada kalanya Anda perlu mengambil informasi penting agar situs Anda dapat dirender.
Mengoptimalkan petunjuk penting
Handshake TLS adalah langkah pertama untuk membuat koneksi yang aman antara browser dan server web. Tanpa intervensi, header respons Critical-CH dirancang untuk memberi tahu browser agar segera mencoba kembali permintaan jika permintaan pertama dikirim tanpa petunjuk penting.

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 Client Hints. Langkah-langkah
ini mungkin rumit, dan memerlukan pengetahuan lanjutan.
Frame ACCEPT_CH
HTTP/2 dan HTTP/3,
dikombinasikan dengan ekstensi TLS ALPS,
adalah pengoptimalan tingkat koneksi untuk mengirimkan preferensi Client Hint
server tepat waktu untuk permintaan HTTP pertama. Hal ini memerlukan konfigurasi
yang kompleks, dan sebaiknya hanya gunakan ini untuk informasi yang benar-benar penting.
BoringSSL (fork dari OpenSSL) membantu Anda menggunakan fitur eksperimental Google di Chromium. Saat ini, ALPS hanya diterapkan 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 kumpulan petunjuk yang berbeda ditentukan.
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 dengan entropi tinggi?
UA-CH entropi tinggi pada header permintaan dibatasi pada permintaan lintas origin,
terlepas dari cara asal tersebut ditentukan di sisi DNS. Delegasi harus
ditangani melalui Permissions-Policy
untuk sub-resource lintas asal atau diperoleh
melalui JavaScript yang dieksekusi dalam konteks lintas asal.
Bagaimana pengaruh pengurangan Agen Pengguna terhadap deteksi bot?
Perubahan Chrome pada string Agen Pengguna tidak secara langsung memengaruhi string Agen Pengguna yang dipilih bot untuk dikirim.
Bot dapat memilih untuk memperbarui string mereka sendiri untuk mencerminkan informasi yang dikurangi yang dikirim Chrome, tetapi itu sepenuhnya merupakan pilihan implementasi mereka. Chrome masih mengirim format User-Agent yang sama, dan bot yang menambahkan ID-nya sendiri ke akhir string User-Agent Chrome dapat terus melakukannya.
Untuk masalah terkait bot tertentu, sebaiknya hubungi langsung pemiliknya untuk menanyakan apakah mereka berencana mengubah string User-Agent-nya.
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 bergabunglah dalam diskusi di repo 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