Apa yang dimaksud dengan pengurangan Agen Pengguna?

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:

  1. Browser mengirim permintaan untuk memuat halaman web.

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

  3. 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.
Saat petunjuk penting diminta oleh server, klien akan mencoba mengirimkan permintaan pertama untuk halaman web dengan petunjuk kritis tersebut. 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 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

Cari tahu selengkapnya