User-Agent (kısaca UA), HTTP istek başlığındaki bir alandır. Bir tarayıcı (veya örümcek, veya başka bir HTTP istemcisi) her istek gönderdiğinde, sunucuya ben kimim diye söylemek için tarayıcı adı ve sürümü, işletim sistemi ve sürümü, render motoru, cihaz türü, CPU mimarisi ve daha fazlasını içeren bu dizeyi ekler. Sunucular UA'yı farklı cihazlar için uyarlanmış içerik döndürmek için kullanabilir ve geliştiriciler UA'yı uyumluluk işleme, trafik analitiği ve bot/örümcek tespiti için sıklıkla kullanır.
UA dizeleri tarihsel nedenlerle ayrıntılı ve kaotik görünür: tarayıcı savaşları döneminde, yeni tarayıcılar eski tarayıcı algılaması için oluşturulmuş web sitelerinin düzgün çalışması için UA'larında eski tarayıcılar gibi davranırlardı (örneğin Chrome, Safari tanımlayıcılarını içerir ve Safari, Gecko tanımlayıcılarını içerir). Katman katman eski token'lar birikti ve modern UA dizelerinin doğrudan okunmasını zorlaştırdı. Bir UA ayrıştırıcının amacı, bu karmaşık dizeleri parçalamak ve gerçekten yararlı bilgileri çıkarmaktır.
Başlıca tarayıcıların hepsi sabit formatlara ve tanımlayıcı token'lara sahiptir: Chrome Chrome/sürüm içerir, Firefox Firefox/sürüm içerir, Safari Version/sürüm ve Safari/ işaretleri içerir, yeni Edge Edg/ kullanır ve WeChat uygulama içi tarayıcısı MicroMessenger/ kullanır. İşletim sistemlerinin de karşılık gelen işaretleri vardır: Windows Windows NT + sürüm kullanır, macOS Mac OS X + sürüm kullanır, iOS CPU iPhone OS + sürüm kullanır ve Android doğrudan Android + sürüm kullanır. Doğru tanımlama, bu anahtar kelimelere karşı regex desen eşleştirme yoluyla elde edilir.
Render motoru, bir tarayıcının HTML/CSS'yi ayrıştırmak ve sayfaları render etmek için kullandığı çekirdek bileşendir: Chromium tabanlı tarayıcılar (Chrome, Edge, Opera vb.) Blink motorunu kullanır, Safari WebKit kullanır, Firefox Gecko kullanır ve eski IE Trident kullanır. Render motorunu bilmek, CSS/JS uyumluluk sorunlarını teşhis etmeye yardımcı olur, çünkü Chrome ve Edge Blink motorunu paylaştığında yüksek düzeyde tutarlı render davranışı sergiler.
Bot/örümcek tespiti, UA ayrıştırmanın temel uygulamalarından biridir. Arama motoru örümcekleri (Googlebot, Bingbot, Baiduspider), SEO aracı örümcekleri, kötü niyetli kazıyıcılar, komut satırı araçları (curl, wget) ve betik kitaplıkları (Python requests) — hepsi UA'larında kendi tanımlayıcılarını içerir veya çok basit UA dizeleri kullanır. İnsan dışı trafik, bot, crawler, spider ve curl gibi anahtar kelimeler eşleştirilerek hızla tanımlanabilir.
Cihaz türü tanımlama öncelikle mobil göstergelere dayanır: Mobile, iPhone veya Android içeren UA'lar cep telefonlarıdır; iPad, Tablet veya Kindle içerenler tabletlerdir; geri kalan her şey masaüstüdür. Ancak UA'ların sahte olabileceğini (User-Agent Sahteciliği) belirtmek önemlidir. Kötü niyetli örümcekler normal tarayıcılar gibi davranabilir, bu nedenle sıkı örümcek önleme, diğer sinyallerin birleştirilmesini gerektirir, çünkü UA ayrıştırma yalnızca bir başlangıç göstergesi olarak hizmet eder.
CPU mimarisi bilgisi bugün giderek daha önemli hale geliyor: Apple M serisi Mac'ler ARM64 mimarisini kullanır, geleneksel Intel Mac'ler x64 kullanır; Windows bilgisayarlar hem x64 hem de ARM64 olarak gelir (örn. Snapdragon bilgi işlem platformları); mobil cihazlar tek tip ARM64'tür. Yazılım indirmeleri sağlarken, kullanıcının mimarisini UA'dan belirleyebilir ve doğrudan karşılık gelen yükleyiciyi sunabilirsiniz (örn. Intel/Apple Silicon .dmg veya x64/ARM64 .exe'yi ayırt ederek), kullanıcı deneyimini önemli ölçüde iyileştirirsiniz.
UA ayrıştırmanın sınırlamalarını belirtmek önemlidir: UA'lar kullanıcılar veya uzantılar tarafından değiştirilebilir veya sahte olabilir; yeni tarayıcı sürümleri UA formatlarını değiştirerek regex desenlerinin başarısız olmasına neden olabilir; Windows 11, NT 10.0 sürüm numarasını koruduğu için UA üzerinden Windows 10'dan ayırt edilemez; iOS'ta tüm üçüncü taraf tarayıcıların (Chrome, iOS için Firefox) WebKit motorunu kullanması gerekir, bu nedenle UA'ları Safari tanımlayıcılarını taşır. Bu aracın ayrıştırması, geliştirme hata ayıklama ve log analizi dahil çoğu senaryo için uygundur, ancak yüksek güvenlikli bağlamlarda IP, TLS parmak izleri ve diğer sinyalleri birleştirerek çok faktörlü yargı kullanın.