Apa yang dimaksud dengan pengurangan Agen Pengguna?

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:

  1. Browser mengirimkan permintaan untuk memuat halaman web.

    1. 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
    2. 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"
      
  2. 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

  3. 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.

Diagram urutan untuk Client Hints dengan petunjuk penting.
Saat petunjuk penting diminta oleh server, klien akan mencoba mengirim ulang permintaan pertama untuk halaman web dengan petunjuk penting. Dalam contoh ini, petunjuk untuk 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

Cari tahu selengkapnya