User-Agent (disingkat UA) adalah field dalam header permintaan HTTP, yang dibawa oleh browser (atau crawler, klien HTTP lainnya) setiap kali mengirim permintaan, untuk memberitahu server「siapa saya」— berisi informasi seperti nama dan versi browser, sistem operasi dan versi, mesin rendering, jenis perangkat, arsitektur CPU, dll. Server dapat mengembalikan konten yang disesuaikan untuk perangkat berbeda berdasarkan UA, developer juga sering menggunakan UA untuk penanganan kompatibilitas, statistik lalu lintas, dan identifikasi crawler.
String UA terlihat panjang dan berantakan ada alasan historisnya: sejak masa perang browser, browser baru agar situs yang mengandalkan sniffing browser lama dapat berfungsi normal akan mengklaim dirinya sebagai browser lama di UA (misalnya Chrome akan membawa penanda Safari, Safari akan membawa penanda Gecko), penumpukan berlapis-lapis menyebabkan string UA modern mengandung banyak penanda warisan historis, membuat orang sulit membaca secara langsung. Peran parser UA adalah mengurai string kompleks ini dan mengekstrak informasi yang benar-benar berguna.
Browser populer memiliki format dan kata kunci pengenal yang tetap: Chrome berisi Chrome/versi, Firefox berisi Firefox/versi, Safari berisi Version/versi dan penanda Safari/, Edge versi baru menggunakan penanda Edg/, browser bawaan WeChat menggunakan penanda MicroMessenger/. Sistem operasi juga memiliki penanda yang sesuai: Windows menggunakan Windows NT+versi, macOS menggunakan Mac OS X+versi, iOS menggunakan CPU iPhone OS+versi, Android langsung menggunakan Android+versi. Melalui pencocokan regex kata kunci ini dapat diidentifikasi secara akurat.
Mesin rendering adalah inti dari browser yang digunakan untuk mengurai HTML/CSS/merender halaman web: browser berbasis Chromium (Chrome, Edge, Opera, dll.) menggunakan mesin Blink, Safari menggunakan WebKit, Firefox menggunakan Gecko, IE lama menggunakan Trident. Mengetahui mesin rendering dapat membantu menentukan masalah kompatibilitas CSS/JS — di bawah mesin Blink yang sama, performa rendering Chrome dan Edge sangat konsisten.
Deteksi crawler adalah salah satu tujuan penting parsing UA. Crawler mesin pencari (Googlebot, Bingbot, Baiduspider), crawler alat SEO, program pengambilan data berbahaya, alat baris perintah (curl, wget), pustaka skrip (Python requests) akan membawa pengenal sendiri di UA, atau bahkan menggunakan string UA yang sangat sederhana. Melalui pencocokan kata kunci seperti bot, crawler, spider, curl dapat dengan cepat mengidentifikasi lalu lintas non-manusia.
Identifikasi jenis perangkat terutama bergantung pada penanda mobile: yang mengandung kata kunci seperti Mobile, iPhone, Android adalah ponsel; yang mengandung iPad, Tablet, Kindle adalah tablet; sisanya adalah komputer desktop. Namun perlu diperhatikan UA dapat dipalsukan (User-Agent Spoofing), crawler berbahaya dapat menyamar sebagai browser normal, sehingga anti-crawler yang ketat perlu menggabungkan fitur lain, parsing UA hanya dapat digunakan sebagai penentuan awal.
Informasi arsitektur CPU menjadi semakin penting saat ini: Mac seri M Apple menggunakan arsitektur ARM64, Mac Intel tradisional menggunakan x64; PC Windows memiliki x64 dan ARM64 (seperti laptop Snapdragon); ponsel semuanya ARM64. Saat menyediakan unduhan perangkat lunak, jika dapat menentukan arsitektur pengguna dari UA, langsung memberikan paket instalasi yang sesuai (misalnya .dmg membedakan versi Intel/Mac, .exe membedakan versi x64/ARM64) dapat meningkatkan pengalaman pengguna secara signifikan.
Perlu diperhatikan parsing UA memiliki keterbatasan: UA dapat dimodifikasi dan dipalsukan oleh pengguna atau plugin, browser versi baru dapat mengubah format UA menyebabkan regex tidak berfungsi, Windows 11 karena masih menggunakan nomor versi NT 10.0 tidak dapat membedakan Win10/Win11 dari UA, semua browser pihak ketiga di iOS (Chrome, Firefox for iOS) dipaksa menggunakan mesin WebKit sehingga UA akan membawa penanda Safari. Parsing alat ini cocok untuk sebagian besar skenario seperti debugging pengembangan, analisis log, tetapi untuk skenario dengan kebutuhan keamanan sangat tinggi harap gabungkan IP, sidik jari TLS, dan penentuan multidimensi lainnya.