User Agent Ayrıştırıcı
- Tarayıcı
- —
- Motor
- —
- İşletim Sistemi
- —
- Cihaz tipi
- unknown
- Cihaz üreticisi
- —
- Cihaz modeli
- —
- Bot / gezgin
- Hayır
Ham JSON'u göster
{
"browser": {
"name": "",
"version": ""
},
"engine": {
"name": "",
"version": ""
},
"os": {
"name": "",
"version": ""
},
"device": {
"type": "unknown",
"vendor": "",
"model": ""
},
"bot": {
"isBot": false,
"name": ""
}
}User-Agent başlığı web'deki en eski meta veri parçalarından biridir ve bu durum görünür. Her HTTP istemcisi — tarayıcınız, Googlebot, CI işinde çalışan curl süreci, link unfurl önizlemesi oluşturan Slack sunucusu, cebinizdeki iPhone — isteği yapan yazılımı tanımlamak için bir dize gönderir. Format hiçbir zaman gerçek dünya kullanımına dayanan biçimde resmen standartlaştırılmadı, bu nedenle otuz yıl boyunca bir mitoloji katmanı biriktirdi: Netscape öyle yaptığı için her tarayıcı Mozilla taklidi yapar, uyumluluk nedeniyle her WebKit tabanlı tarayıcı Safari taklidi yapar, aynı nedenle her Edge kurulumu Chrome taklidi yapar ve her Chromium çatalı hiç ilgisi olmayan üç dört tarayıcıyla uyumluluk iddia eder. Bu dizelerden birini güvenilir şekilde ayrıştırmak göründüğünden daha zordur ve gerçek bir üretim sitesine ulaşan istemcilerin tüm kümesinde doğru ayrıştırmak daha da zordur.
Bu ayrıştırıcı, 2026'daki UA dizesi gerçeği için inşa edildi, bu da üç farklı popülasyonu işlemesi gerektiği anlamına geliyor: insan kontrollü tarayıcılar, arama ve AI gezginleri ve betikli istemciler. Tarayıcı tarafı teorik olarak en kolay ve pratik olarak en zorlu olanıdır. Chrome, Firefox, Safari, Edge, Opera, Brave, Vivaldi, Samsung Internet, UC Browser ve Yandex Browser, UA dizelerinin ince yollarla örtüşmesine yetecek kadar soy paylaşıyor ve desenleri kontrol etme sırası önemli: her Chromium tabanlı tarayıcı kendi marka token'ı ile uyumluluk için hem bir Chrome/ token'ı taşır, dolayısıyla marka token'ını önce kontrol etmelisiniz; aksi halde bir Edge UA Chrome olarak yanlış tanınır ve bir Brave UA genel bir şey olarak yanlış tanınır. Ayrıştırıcı marka token'larını (Edg, OPR, Vivaldi, Brave, SamsungBrowser) Chrome ve Safari'ye düşmeden önce kontrol eder, ki bu tüm popülasyonda doğru sonuçlar üreten tek sıralamadır.
Motor algılama, tarayıcı algılamadan ayrı bir ilgidir çünkü farklı sorulara yanıt verirler. Motor, ne tür render ve JavaScript davranışı bekleyeceğinizi söyler: Blink (Chrome, Edge, Opera, çoğu diğer), WebKit (Safari, tüm iOS tarayıcıları), Gecko (Firefox), Trident (eski IE). Özellik bayrak roll-out'ları, platform davranışlarını hedefleyen A/B testleri ve render hata araştırmaları için motor kimliği tarayıcı kimliğinden daha çok önemlidir. Ayrıştırıcı ikisini doğru şekilde ayırır: hem AppleWebKit/ hem de Chrome/ içeren bir UA Blink'tir (Chrome'un WebKit çatallaması), AppleWebKit/ ama Chrome/ içermeyen bir UA gerçek WebKit'tir. Bu ayrım en çok iOS'ta önemlidir; Apple'ın politikası nedeniyle Chrome ve Firefox dahil her tarayıcı WebKit kullanmaya zorlanır, dolayısıyla kullanıcı Chrome yükledi ama render davranışı Safari'ninkidir.
İşletim sistemi algılamasının kendi tuhaflıkları vardır. Windows UA'da NT sürüm numaraları kullanır — Windows 10 ve 11 ikisi de NT 10.0 raporlar; bu UA'nın ikisi arasında ayrım yapamayacağı ve ayrıştırıcının da yapamayacağı anlamına gelir; bunun için User-Agent Client Hints ile Sec-CH-UA-Platform-Version başlığına ihtiyaç duyarsınız ki çoğu tarayıcı bunu çoğu sunucuya henüz göndermiyor. macOS, geriye dönük uyumluluk için 10_15_7 (alt çizgilerle) gibi bir sürüm raporlar, hatta macOS 14 / 15'te bile — Apple Catalina'dan sonra ana sürümü artırmayı bıraktı çünkü eski kod 10.x'i tam olarak eşleştirir. Ayrıştırıcı sürümün doğal okunması için alt çizgileri noktalara dönüştürür. Android sürüm algılama basittir; iOS algılama, iPhone, iPad veya iPod ile UA içindeki OS sürümüne birlikte bakmayı gerektirir. Linux algılama bilinçli olarak hoşgörülüdür çünkü kanonik Linux UA yoktur — dağıtımlar ve tarayıcılar bunu tutarsız şekilde raporlar.
Cihaz algılaması, çoğu ayrıştırıcının aşırı basitleştirip yanlış cevaplar ürettiği yerdir. Mobil/masaüstü/tablet sorusu çoğu durumda yalnızca UA'dan güvenilir şekilde yanıtlanamaz. Android tabletler bazen Mobile/ token'ı olmadan, bazen onunla bir UA gönderir; bu üreticiye ve tarayıcının çalıştığı render moduna bağlıdır. iPadOS 13'ten beri iPad UA'ları macOS UA'larına benzer şekilde değişti, bu nedenle 2020 öncesi cihaz algılama kütüphaneleri iPad'leri masaüstü Mac'ler olarak raporladı — ayrıştırıcı bunu açık iPad işaretçilerini kontrol ederek ve belirsiz vakaları masaüstü olarak ele alarak yönetir, ki bu zaten çoğu düzen motorunun yaptığı şeydir. Android UA'sında mevcut olduğunda cihaz satıcısı ve modeli (Android sürümü ve Build işaretçisi arasında) çıkarılır, ki bu bilginin görüneceği tek güvenilir yerdir.
Bot ve gezgin algılaması, bu aracın SEO ve analitik kullanım durumları için kazandığı yerdir. Bot deseni kümesi açıkları kapsar — Googlebot, Bingbot, Yandex, Baidu, DuckDuckGo, Applebot — ve 2022'den beri ortaya çıkan ve hızla büyüyen AI gezgin popülasyonu: GPTBot (OpenAI), ChatGPT-User (canlı ChatGPT taraması), CCBot (Common Crawl, birçok LLM tarafından kullanılır), ClaudeBot/anthropic-ai (Anthropic), PerplexityBot, Bytespider (TikTok/ByteDance) ve Google-Extended (Google'ın ayrı AI eğitim gezgini). Özellikle AI eğitimi için robots.txt stratejisi düşünen siteler için bu botları temiz şekilde tanımlamak ön koşuldur. Ayrıştırıcı ayrıca SEO gezginlerini (AhrefsBot, SemrushBot, MJ12bot), sosyal link önizleyicileri (FacebookExternalHit, Twitterbot, LinkedInBot, Slackbot, Discordbot, TelegramBot, WhatsApp) ve başsız otomasyon çerçevelerini (HeadlessChrome, Puppeteer, Playwright, PhantomJS) kapsar.
Yaygın bir soru, curl, wget, python-requests, Go-http-client ve Java HttpClient gibi HTTP kütüphanelerinin neden bot olarak işaretlendiğidir. Sebep, neredeyse her sunucu tarafı kararı için — hız sınırlama, suistimal algılama, A/B test segmentlemesi, içerik müzakeresi — betikli istemcilere, gerçek anlamda gezgin olmasalar bile, botlara davrandığınız gibi davranmak istemenizdir. Bir python-requests UA'sı tanımı gereği gerçek bir kullanıcı değildir ve onu gerçek biri olarak ele almak (yanıtlarını gerçek bir kullanıcının oturumuna karşı önbelleğe almak, reklam gösterimleri için ona ücret yansıtmak, analitikte saymak) yanlış sayılara yol açar. Ayrıştırıcı bu istemcileri açıkça işaretler, böylece gezginlere uyguladığınız aynı izin/red listesi mantığını uygulayabilirsiniz.
User-Agent Client Hints (UA-CH), Google'ın 2020'den beri vaat ettiği gelecektir ve kısmi olarak konuşlandırılmaya devam etmektedir. Fikir, UA dizesini sunucunun Accept-CH ile açıkça talep edebileceği yapılandırılmış başlıklara — Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile, vb. — bölmektir. Pratikte Chrome, eski UA dizesini 2022'den beri (User-Agent Reduction projesi) aşamalı olarak donduruyor, dolayısıyla Chromium tabanlı tarayıcılar için eskiden olduğundan biraz daha az ayrıntı görebilirsiniz (donmuş minör sürüm, donmuş platform sürümü, tam OS sürümü yok). Ayrıştırıcı donmuş UA'ları doğru şekilde işler — muhafazakar sürüm numaraları olan normal Chrome UA'ları gibi görünürler — ama 2026'da gerçek platform ayrıntısına ihtiyacınız varsa UA dizelerini ayrıştırmak yerine sunucu tarafında UA-CH'yi kullanmalısınız. Bu araç, ad-hoc inceleme ve UA-CH'yi henüz benimsememiş istemcilerin uzun kuyruğu için doğru seçimdir.
UA dizelerini ölçekte günlüğe kaydettiğinizde gizlilik gerçek bir kaygıdır. UA dizesinin kendisi çoğu yargı bölgesinde kişisel veri değildir, ama bir IP adresi, istek zamanı ve referer ile birleştirildiğinde küçük sayıda kullanıcıyı yüksek güvenle tanımlayabilen bir parmak izi oluşturur. GDPR, KVKK ve benzeri düzenlemeler birleşik bu tanımlayıcıyı saklama sınırlarına ve silme taleplerine tabi kişisel veri olarak ele alır. İlgili en iyi uygulama, tam UA yerine yalnızca gerçekten ihtiyacınız olan ayrıştırılmış alanları (tarayıcı ailesi, OS ailesi, cihaz tipi) günlüğe kaydetmek ve IP adreslerini rotasyona almak veya hash'lemektir. Bu ayrıştırıcı tamamen tarayıcınızda çalışır, böylece buraya yapıştırdığınız dizeler hiçbir yerde günlüğe kaydedilmez, ama temel ders üretim kodunuz için geçerlidir.
Bu araç için en yaygın kullanım durumları dört kovaya ayrılır. İlk olarak, hata ayıklama: bir müşteri ekran görüntüsüyle bir hata bildirir ama hangi tarayıcıda olduğunu bilmez; about:version'ı açmasını veya bilinen bir UA-gösterim URL'sinden UA'sını yapıştırmasını istersiniz, sonra buraya bırakırsınız. İkinci olarak, günlük adli analizi: şüpheli UA'lı bir CDN günlük satırından bir uyarı tetiklenir; tanınmış bir gezgin mi yoksa araştırılacak bir şey mi olduğunu görmek için buraya yapıştırırsınız. Üçüncü olarak, A/B test kurulumu: bir tasarımcı yeni düzeni yalnızca mobil Safari ve mevcut Chrome'da ister; ayrıştırıcı size her kuralın hangi UA'larla eşleştiğini söyler. Dördüncü olarak, robots.txt stratejisi: tüm AI eğitim gezginlerini engellemek istersiniz; ayrıştırıcı size robots.txt'nize veya güvenlik duvarınıza eklemek için AI bot parmak izlerini gösterir.
Mühendisler için iki uygulama notu. İlk olarak, UA dizelerini bir istek işleyicinin sıcak yolunda ASLA ayrıştırmayın — ayrıştırıcılar regex-yoğundur ve yoğun bir sunucuda CPU'nun ölçülebilir bir yüzdesini kaplayabilir. Ayrıştırılan sonucu ham UA dizesi anahtarıyla önbelleğe alın; UA'lar aynı istemciden gelen istekler arasında son derece tekrarlı olduğu için uzun TTL ile. İkinci olarak, ayrıştırıcı çıktısını en iyi çaba olarak ele alın — buna dayalı bir güvenlik veya faturalandırma kararı verirseniz, bir saldırgan istediği herhangi bir UA'yı taklit edebilir. UA ayrıştırmayı analitik, içerik optimizasyonu ve hız sınırı segmentasyonu için kullanın; güvenlik primitifi olarak kullanmayın.
UA dizelerinin bir başka pratik faydası SEO denetiminde ortaya çıkar. Bir sayfanın Google taramasında neden indekslenmediğini araştırırken, sunucu günlüklerinden Googlebot UA'larını filtreleyip o oturumun davranışını izlemek standart bir adımdır. Googlebot, mobile-first indexing varsayılanı olan cep telefonu-benzeri UA ve eski masaüstü UA olarak iki farklı kimlikle gelir; aynı sayfa, hangi varyantın taradığına bağlı olarak farklı renderlama davranışı gösterebilir. Bu ayrıştırıcıya günlüklerinizden UA'yı yapıştırmak, mobile-first indexing için cep telefonu olarak mı yoksa eski masaüstü botu olarak mı geldiğini hızlıca söyler. Aynı yaklaşım Bingbot'un mobil ve masaüstü varyantları, AhrefsBot'un ücretli ile ücretsiz varyantları ve OpenAI'nın eğitim için tasarlanmış GPTBot'u ile gerçek zamanlı tarama için tasarlanmış ChatGPT-User'ı arasındaki ayrımı netleştirmek için işe yarar. Hangi botun ne için geldiğini bilmek, robots.txt politikası ve davranış-tabanlı bot azaltma için temel oluşturur; iki kimliği karıştırırsanız ya çok kısıtlayıcı (gerçek tarama trafiğini engelleyen) ya da çok gevşek (eğitim verilerini sızdıran) bir kuralla sonuçlanırsınız. Aynı kalıp, kimliği tanınmayan ama yine de davranışsal olarak suistimal eden taramaları yakalamak için de geçerlidir: bilinmeyen bir UA hız sınırınızı aşıyorsa, bu ayrıştırıcı kimliği belirleyemese bile hangi tarayıcı veya HTTP kütüphanesini taklit ettiğini söyleyerek gerçek istemcileri yanlışlıkla engellemeden hangi parmak izlerini engelleyeceğinize karar vermenize yardımcı olur.
Bu araç, diğer Omnvert geliştirici yardımcı programlarıyla iyi eşleşir. Hash Generator, günlük toplama için UA'ları sabit bir tanımlayıcıya parmak izi vermek istediğinizde kullanışlıdır. Regex Tester, doğrulama için buraya geri getirmeden önce özel UA desenlerini prototiplemek için doğru yerdir. JSON Viewer, ayrıştırılan-sonuç JSON'unu başka bir araca beslemek istediğinizde incelemek için doğru yerdir. Ve JWT Tool, backend'inizin oturum belirteçlerine UA türevi talepler eklediğinde ilgili bir kaygıdır — ama tekrar, güvenlik açısından kritik herhangi bir şey için UA türevi taleplere güvenmeyin. Bunların hepsi tarayıcıda aynı gizlilik garantileriyle çalışır, böylece bütün bir UA-yönetim akışı tek bir sekmede üçüncü taraf bir hizmete tek bir istek olmadan gerçekleşebilir.
- Bir isteğin Googlebot, GPTBot, Bingbot veya başka bir gezginden olup olmadığını tanımlayın.
- robots.txt stratejisi için AI eğitim botlarını (GPTBot, ClaudeBot, CCBot, PerplexityBot, Bytespider) algılayın.
- Müşterinin User-Agent dizesini yapıştırarak bir hata raporunu ayıklayın.
- Bir A/B testine hangi tarayıcı/OS/cihaz kombinasyonlarının dahil edileceğine karar verin.
- Şüpheli UA'lı bir CDN erişim günlüğü girdisini denetleyin.
- HeadlessChrome, Puppeteer, Playwright veya PhantomJS'i gerçek tarayıcılardan ayırt edin.
- Bir UA'nın arkasındaki çerçeveyi tanımlayın: curl, wget, python-requests, Go-http-client, Java HttpClient.
- Çapraz platform testi için kendi tarayıcınızın UA'sının nasıl göründüğünü inceleyin.
- iOS Safari ile iOS Chrome'u karşılaştırın (ikisi de WebKit ile render edilir).
- 1Bir User-Agent dizesi yapıştırın veya tarayıcınızın mevcut UA'sını yüklemek için UA'mı kullan'a tıklayın.
- 2Ayrıştırıcının yaygın şekilleri nasıl ele aldığını görmek için bir örnek UA seçin.
- 3Ayrıştırılmış tabloyu okuyun: tarayıcı, motor, OS, cihaz tipi, satıcı, model, bot kimliği.
- 4Tam yapılandırılmış sonucu incelemek için ham JSON disclosure'ını açın.
- 5UA'yı veya ayrıştırılmış JSON'u başka bir yerde kullanmak için kopyalayın.