Header User-Agent secara historis telah disertakan dalam permintaan bid untuk memberikan data penargetan yang berguna seperti browser dan platform perangkat yang memulai. Namun, browser sering kali sangat menyamarkan Agen Pengguna karena kesulitan penggunaannya dan untuk melindungi privasi pengguna dengan lebih baik. Untuk merespons hal ini, Google mendukung Petunjuk Klien Agen Pengguna, yang disertakan dalam permintaan bid jika tersedia untuk melengkapi header Agen Pengguna. Petunjuk Klien ini (singkatnya) dapat bersumber dari header Sec-Ch-UA* atau dari JavaScript Client Hints API.
Bergantung pada protokol yang digunakan, header Agen Pengguna diekspos dengan salah satu kolom string berikut:
- Google:
BidRequest.user_agent
- OpenRTB:
BidRequest.device.ua
Pesan UserAgent
akan diisi dengan Petunjuk Klien jika tersedia, tetapi akan diisi berdasarkan nilai yang diuraikan dari header Agen Pengguna. Bergantung pada protokol yang digunakan, kolom ini akan ditampilkan sebagai salah satu kolom berikut:
- Google:
BidRequest.user_agent_data
- OpenRTB:
BidRequest.device.sua
Bidder sangat dianjurkan untuk menggunakan pesan UserAgent
, bukan string Agen Pengguna.
Cara UserAgent
diisi
Tidak seperti header Agen Pengguna, pesan UserAgent
mewakili informasi
agen pengguna yang dibagi menjadi beberapa kolom untuk informasi tertentu.
Bergantung pada apakah Petunjuk Klien tersedia dalam permintaan iklan, pesan UserAgent
dapat diisi dengan cara berikut:
- Jika permintaan berisi setidaknya Petunjuk Klien entropi rendah,
UserAgent
akan diisi berdasarkan kontennya. - Jika permintaan hanya berisi header Agen Pengguna,
UserAgent
akan diisi berdasarkan apa yang dapat diurai dari header.
Contoh: Mengisi UserAgent
berdasarkan header Agen Pengguna
Misalkan ada permintaan iklan yang dikirim browser untuk header berikut:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
UserAgent
yang diisi hanya berdasarkan header Agen Pengguna mungkin terlihat seperti berikut:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
Contoh: Mengisi UserAgent
berdasarkan Petunjuk Klien
Misalkan ada permintaan iklan yang dikirim browser untuk header berikut:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
Jika setidaknya Petunjuk Klien dengan entropi rendah disertakan, UserAgent
akan diisi berdasarkan konten header tersebut meskipun header
Agen Pengguna ada. URL tersebut akan terlihat seperti berikut:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
Mengisi berdasarkan header Agen Pengguna versus Petunjuk Klien
Beberapa kolom diisi secara berbeda, bergantung pada apakah kolom tersebut didasarkan pada header Agen Pengguna atau Petunjuk Klien. Berikut ringkasan perbedaan tersebut:
- Untuk browser dan platform yang identik,
UserAgent.browsers.brand
danUserAgent.platform.brand
akan sering berbeda di antaraUserAgent
berdasarkan header Agen Pengguna atau Petunjuk Klien. Misalnya,UserAgent.platform.brand
mungkin muncul sebagai “Windows NT” jika didasarkan pada header Agen Pengguna, atau “Windows” jika didasarkan pada Petunjuk Klien. - Beberapa entri
UserAgent.browsers
bersifat unik untuk header Agen Pengguna atau Petunjuk Klien. Misalnya, "AppleWebKit" akan muncul jikaUserAgent
didasarkan pada header Agen Pengguna, sedangkan "Chromium" hanya akan muncul jika didasarkan pada Petunjuk Klien. - Hanya
UserAgent
berdasarkan header Agen Pengguna yang dapat berisi nilai yang dibekukan. Misalnya, jika platformnya adalah Windows 11 22H2,UserAgent.platform.brand
akan ditetapkan ke “Windows NT” danUserAgent.platform.version
akan ditetapkan ke[“10”, “0”]
karena ini adalah nilai yang dibekukan untuk semua versi Windows pada atau di atas 10.
Data dalam UserAgent
yang didasarkan pada Petunjuk Klien biasanya tidak akan menjadi
pengganti informasi yang dibekukan atau disamarkan. Jika ada
inkonsistensi antara header Agen Pengguna dan UserAgent
berdasarkan Petunjuk Klien, informasi dari UserAgent
harus dipilih.
Kolom objek UserAgent
Bagian ini merangkum setiap kolom, dengan fokus pada perilaku dan praktik terbaik khusus RTB Google untuk penggunaan.
Browser
Berisi daftar entri BrandVersion yang umumnya diurutkan berdasarkan kekhususan–misalnya, jika Anda mencantumkan konten browsers
, brand
untuk setiap entri dapat muncul dalam urutan berikut:
Merek | Meaning |
Mozilla | Kompatibel dengan Mozilla |
AppleWebKit | Berbasis AppleWebKit, subset dari Mozilla. |
Chrome | Browser Chrome, subset browser yang kompatibel dengan AppleWebKit |
Safari | Varian desktop, bukan seluler. |
UserAgent
tidak akan selalu mencantumkan browser dalam urutan tertentu, terutama
jika didasarkan pada Petunjuk Klien. Berikut ini penjelasan tentang perbedaan lain
yang akan Anda lihat berdasarkan nilai source
:
USER_AGENT
: Kolomversion
dapat dikurangi menjadi versi utama atau dibekukan (bergantung pada kebijakan khusus agen). Perlu diperhatikan bahwa tidak akan ada indikasi bahwa nilai dibekukan.CLIENT_HINTS_LOW_ENTROPY
danCLIENT_HINTS_HIGH_ENTROPY
: Entri tidak diurutkan berdasarkan kriteria apa pun; misalnya, browser yang sama mungkin mengirimkan entri ini dalam urutan yang berbeda di setiap permintaan. Class ini juga dapat berisi entri GREASE, yang harus diabaikan.CLIENT_HINTS_HIGH_ENTROPY
: Semua kolomversion
yang ditemukan di browser dapat ditetapkan ke versi lengkap.
Platform
Entri BrandVersion yang mendeskripsikan platform. Opsi ini mungkin tidak kompatibel di seluruh header Agen Pengguna dan Petunjuk Klien, sehingga penargetan beberapa platform mungkin memerlukan pengujian dua nama. Misalnya, sistem operasi Macintosh Apple diberi merek "Macintosh" di header Agen Pengguna, tetapi "macOS" di Client Hints.
Berikut ini penjelasan tentang perbedaan lain yang akan Anda lihat berdasarkan
nilai source
:
USER_AGENT
: Kolomversion
dapat dikurangi menjadi versi utama atau dibekukan. Perhatikan bahwa tidak akan ada indikasi bahwa nilai telah dibekukan.CLIENT_HINTS_LOW_ENTROPY
: Kolomversion
tidak akan diisi.CLIENT_HINTS_HIGH_ENTROPY
: Kolomversion
dapat disetel ke versi lengkap.
Ponsel
Menunjukkan apakah konten seperti iklan harus dioptimalkan untuk layar kecil dan/atau input sentuh. Perhatikan bahwa hal ini belum tentu merupakan indikator jenis perangkat, karena browser seluler dapat dikonfigurasi untuk meminta “situs desktop”.
Arsitektur
Mengidentifikasi arsitektur platform seperti "x86" atau "arm".
Untuk UserAgent
berdasarkan Petunjuk Klien, perhatikan bahwa kolom ini hanya akan diisi
jika source
ditetapkan ke CLIENT_HINTS_HIGH_ENTROPY
.
Bit
Mengidentifikasi bit platform, seperti apakah platform memiliki CPU 32-bit atau 64-bit. Kolom ini adalah string bilangan bulat yang memberikan informasi tambahan tentang arsitekturnya; misalnya, arsitektur "x86" dapat memiliki bitness yang ditetapkan ke "32" atau "64".
Untuk UserAgent
berdasarkan Petunjuk Klien, perhatikan bahwa kolom ini hanya akan diisi
jika source
ditetapkan ke CLIENT_HINTS_HIGH_ENTROPY
.
Model
Mengidentifikasi model perangkat. Untuk perangkat seluler–artinya bukan laptop atau desktop–ini akan diisi dengan nama model seperti “Pixel 6 Pro”.
Berikut ini penjelasan perbedaan yang akan Anda lihat berdasarkan
nilai source
:
USER_AGENT
- Perangkat non-seluler: Kolom
model
sering kali berisi gabungan arsitektur dan nilai bit seperti "x64" untuk Windows. Nilai ini tidak lintas platform; misalnya, Linux mungkin menggunakan “x86_64” untuk hardware yang sama. - Perangkat seluler: Kolom ini tidak akan menyertakan arsitektur dan bitness.
Jika Anda tertarik dengan nilai ini, lihat
UserAgent.architecture
danUserAgent.bitness
.
- Perangkat non-seluler: Kolom
CLIENT_HINTS_LOW_ENTROPY
: Kolommodel
tidak akan diisi.CLIENT_HINTS_HIGH_ENTROPY
: Kolommodel
hanya akan diisi untuk model perangkat pada perangkat seluler. Tidak ada nilai yang ditetapkan untuk platform desktop.
Sumber
Mengidentifikasi header mana yang digunakan untuk membuat UserAgent
. Untuk Petunjuk Klien, cara ini juga membedakan dua kasus berikut:
CLIENT_HINTS_LOW_ENTROPY
: Hanya Petunjuk Klien dasar yang tersedia.CLIENT_HINTS_HIGH_ENTROPY
: Petunjuk Klien tersedia, termasuk setidaknya satu kolom yang diklasifikasikan sebagai entropi tinggi.