Header User-Agent secara historis disertakan dalam permintaan bid untuk memberikan data penargetan yang berguna seperti browser dan platform perangkat yang memulai. Namun, browser sering kali menyamarkan User-Agent secara besar-besaran karena sulit digunakan dan untuk melindungi privasi pengguna dengan lebih baik. Sebagai respons terhadap hal ini, Google mendukung Client Hints Agen Pengguna, yang disertakan dalam permintaan bid jika tersedia untuk melengkapi header Agen Pengguna. Petunjuk Klien ini (singkatnya) dapat diperoleh dari header Sec-Ch-UA* atau dari Client Hints API Javascript.
Header User-Agent ditampilkan sebagai string di kolom BidRequest.device.ua.
Pesan UserAgent
akan diisi dengan Client Hints saat tersedia, tetapi akan
diisi berdasarkan nilai yang diuraikan dari header Agen Pengguna. Status ini
ditampilkan di kolom BidRequest.device.sua.
Sebaiknya bidder menggunakan pesan UserAgent, bukan string User-Agent.
Cara pengisian UserAgent
Tidak seperti header Agen Pengguna, pesan UserAgent merepresentasikan informasi agen pengguna yang dipecah 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 minimal satu Client Hints entropi rendah,
UserAgentakan diisi berdasarkan isinya. - Jika permintaan hanya berisi header Agen Pengguna,
UserAgentakan diisi berdasarkan apa yang dapat diuraikan dari header.
Contoh: Mengisi UserAgent berdasarkan header Agen Pengguna
Misalkan ada permintaan iklan dengan browser mengirimkan 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 dengan browser mengirimkan 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 Client Hints entropi rendah disertakan, UserAgent
akan diisi berdasarkan konten header tersebut meskipun header Agen Pengguna
ada. Tampilannya 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 adalah ringkasan perbedaan tersebut:
- Untuk browser dan platform yang identik,
UserAgent.browsers.branddanUserAgent.platform.brandsering kali berbeda antaraUserAgentberdasarkan header Agen Pengguna atau Petunjuk Klien. Misalnya,UserAgent.platform.brandmungkin muncul sebagai “Windows NT” jika didasarkan pada header Agen Pengguna, atau “Windows” jika didasarkan pada Client Hints. - Beberapa entri
UserAgent.browsersbersifat unik untuk header Agen Pengguna atau untuk Client Hints. Misalnya, “AppleWebKit” akan muncul jikaUserAgentdidasarkan pada header User-Agent, sedangkan “Chromium” hanya akan muncul jika didasarkan pada Petunjuk Klien. - Hanya
UserAgentberdasarkan header User-Agent yang dapat berisi nilai yang dibekukan. Misalnya, jika platformnya adalah Windows 11 22H2,UserAgent.platform.brandakan ditetapkan ke “Windows NT” danUserAgent.platform.versionakan ditetapkan ke[“10”, “0”]karena itu adalah nilai tetap untuk versi Windows apa pun di atau di atas 10.
Data di UserAgent yang didasarkan pada Petunjuk Klien biasanya tidak akan menjadi pengganti yang tidak akurat untuk informasi yang dibekukan atau disamarkan. Jika ada ketidaksesuaian antara header Agen Pengguna dan UserAgent berdasarkan Client Hints, informasi dari UserAgent harus diutamakan.
Kolom objek UserAgent
Bagian ini merangkum setiap kolom, dengan berfokus pada perilaku khusus Google RTB dan praktik terbaik untuk penggunaan.
Browser
Berisi daftar entri
BrandVersion
yang umumnya diurutkan berdasarkan spesifisitas–misalnya, jika Anda mencantumkan
isi browsers, brand untuk setiap entri dapat muncul
dalam urutan berikut:
| Merek | Arti |
| Mozilla | Kompatibel dengan Mozilla |
| AppleWebKit | Berbasis AppleWebKit, subset dari Mozilla. |
| Chrome | Browser Chrome, subkumpulan 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 menjelaskan perbedaan lain yang dapat Anda lihat berdasarkan nilai source:
USER_AGENT: Kolomversiondapat dikurangi menjadi versi utama atau dibekukan (bergantung pada kebijakan khusus agen). Perhatikan bahwa tidak ada indikasi bahwa nilai dibekukan.CLIENT_HINTS_LOW_ENTROPYdanCLIENT_HINTS_HIGH_ENTROPY: Entri tidak diurutkan berdasarkan kriteria apa pun; misalnya, browser yang sama dapat mengirim entri ini dalam urutan yang berbeda di setiap permintaan. Respons ini juga dapat berisi entri GREASE, yang harus diabaikan.CLIENT_HINTS_HIGH_ENTROPY: Semua kolomversionyang ditemukan di browser dapat disetel ke versi lengkap.
Platform
Entri BrandVersion
yang menjelaskan platform. Hal ini mungkin tidak kompatibel di seluruh header User-Agent dan Petunjuk Klien, sehingga penargetan beberapa platform mungkin memerlukan pengujian dua nama. Misalnya, sistem operasi Macintosh Apple diberi merek sebagai
“Macintosh” di header User-Agent, tetapi “macOS” di Petunjuk Klien.
Berikut ini menjelaskan perbedaan lain yang dapat Anda lihat berdasarkan
nilai source:
USER_AGENT: Kolomversiondapat dikurangi menjadi versi utama atau dibekukan. Perhatikan bahwa tidak akan ada indikasi bahwa nilai tersebut dibekukan.CLIENT_HINTS_LOW_ENTROPY: Kolomversiontidak akan diisi.CLIENT_HINTS_HIGH_ENTROPY: Kolomversiondapat disetel ke versi lengkap.
Seluler
Menunjukkan apakah konten seperti iklan harus dioptimalkan untuk layar kecil dan/atau input sentuh. Perhatikan bahwa ini tidak selalu merupakan indikator jenis perangkat, karena browser seluler dapat dikonfigurasi untuk meminta “situs desktop”.
Arsitektur
Mengidentifikasi arsitektur platform seperti “x86” atau “arm”.
Untuk UserAgent berdasarkan Client Hints, perhatikan bahwa ini hanya akan diisi
jika source ditetapkan ke CLIENT_HINTS_HIGH_ENTROPY.
Bitness
Mengidentifikasi bit platform, seperti apakah 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 Client Hints, perhatikan bahwa ini hanya akan diisi
jika source ditetapkan ke CLIENT_HINTS_HIGH_ENTROPY.
Model
Mengidentifikasi model perangkat. Untuk perangkat seluler–bukan laptop atau desktop–kolom ini akan diisi dengan nama model seperti “Pixel 6 Pro”.
Berikut ini menjelaskan perbedaan yang dapat Anda lihat berdasarkan
nilai source:
USER_AGENT- Perangkat non-seluler: Kolom
modelsering kali berisi nilai bit dan arsitektur gabungan 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.architecturedanUserAgent.bitness.
- Perangkat non-seluler: Kolom
CLIENT_HINTS_LOW_ENTROPY: Kolommodeltidak akan diisi.CLIENT_HINTS_HIGH_ENTROPY: Kolommodelhanya akan diisi untuk model perangkat perangkat seluler. Tidak ada nilai yang ditetapkan untuk platform desktop.
Sumber
Mengidentifikasi header mana yang digunakan untuk membuat UserAgent. Untuk Petunjuk Klien,
hal ini juga membedakan antara 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.