Glossary
User-Agent
Kendisi hakkında yalan söyleyen HTTP başlığı
By Buğra SözeriPublished Updated
User-Agent başlığının bir HTTP isteği yapan istemciyi — tarayıcı adı, sürüm, işletim sistemi vb. — tanımlaması gerekir. Aynı zamanda HTTP tarihinin en büyümüş başlığıdır; yıldan yıla birikmekte olan geriye dönük uyumluluk nedenleriyle kendi içeriği hakkında yalan söyler.
Tipik modern bir Chrome User-Agent dizesi:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Chrome, aynı anda Mozilla, Apple WebKit ve Safari olduğunu iddia eder. Bu belirteçlerin hiçbiri doğru değildir — bunlar, modern HTML sunmadan önce “Mozilla”’yı kontrol eden 1998 tarihli bir sunucu tarafı kodu olduğu için var; dolayısıyla sonraki her tarayıcı, indirilmemek için “Mozilla/5.0” ekledi. Dize o tarihten bu yana uyumluluk kesmelerinin bir müzesi olmuştur.
Modern alternatifler:
- User-Agent İstemci İpuçları (Sec-CH-UA başlıkları ailesi) — Chrome 2020’de yapılandırılmış istemci ipuçları göndermeye başladı. Sunucular Accept-CH aracılığıyla katılabilir. Daha temiz veri, daha küçük varsayılan ayak izi.
- UA koklama yerine özellik algılama — tarayıcı sürümünden tahmin etmek yerine ihtiyacınız olan API’nin var olup olmadığını kontrol edin.
User-Agent dizeleri önemsiz şekilde taklit edilebilir; onları güvenlik sınırı değil ipucu olarak değerlendirin. Analitik için UA, istemci payının kabaca dağılımını verir; gerçek kararlar için özellik algılayın.
Chrome User-Agent azaltma projesi: Google 2022’de UA dizesi entropisi azaltmaya başladı; küçük sürümü dondurdu, hassas işletim sistemi sürümünü kaldırdı ve mobil/masaüstü dizelerini birleştirdi. Amaç pasif parmak izi almayı azaltmaktı — bir UA dizesi, yalnızca derleme sürümü belirteçlerinden yüzlerce binlerce tarayıcı arasında benzersiz bir tarayıcıyı tanımlayabilir. 2025’e gelindiğinde Chrome UA dizesi anlamlı ölçüde daha kısa ve daha az tanımlayıcıdır. Firefox ve Safari daha yavaş hızda takip etti. Hâlâ tarayıcı algılama için UA’yı ayrıştırmaya bağımlı siteler yavaş yavaş bozuluyor — modern İstemci İpuçları API’si (Sec-CH-UA, Sec-CH-UA-Platform vb.) desteklenen ikamedir.
Bot kullanıcı ajanları — kural değil uygulama: Googlebot, Bingbot, GPTBot, ClaudeBot ve çoğu ticari tarayıcı, robots.txt’nin geçmesine izin verilmesi ve hız sınırlama için UA dizesinde kendilerini dürüstçe tanımlar. Kendilerini tanımlamayan scraper’lar genellikle bir tarayıcı UA’sı taklit eder — bu da hız sınırlama ve bot algılamanın yalnızca UA dizelerine güvenemeyeceği nedenidir. Modern bot yönetimi, UA’yı TLS parmak izi (JA3/JA4), HTTP/2 ayarları, fare/klavye sinyalleri ve headless tarayıcı işaretleyicileriyle birleştirir. Yalnızca listelenen botlara izin vermeyi seçen bir site, yalnızca UA değil birden fazla sinyali eşleştirmelidir. Referans: RFC 9110 §10.1.5 — User-Agent.
Çalışılmış örnek
Web Push uyumluluk kontrolü için “kullanıcı iOS Safari’de” tespiti yapmak istiyorsunuz. Saf UA koklama: /iPhone|iPad|iPod/.test(ua) && /Safari/.test(ua) && !/CriOS|FxiOS/.test(ua). Ancak: iPadOS 13+ varsayılan olarak “masaüstü” UA’sını gönderir; dolayısıyla iPad dizide yer almaz. Ancak: iOS’taki Chrome “CriOS” içerir; ancak aslında WebKit kullanır (Apple platform politikası); dolayısıyla olumsuzlama yanlıştır. Ancak: bir gizlilik uzantısı kullanıcısı UA’sını Firefox-on-Linux olarak taklit edebilir. Bunun yerine özellik algılayın: 'serviceWorker' in navigator && 'PushManager' in window && Notification.permission !== 'denied' — üç satır kontrol, her tarayıcıda çalışır, Apple iOS 18’i gönderdiğinde bozulmaz. UA koklama sürümü, gönderme anına kadar kullanıcıların ~%6’sı için zaten bozulmuştu.
Ne zaman ve neden önem taşır
UA tabanlı mantık, gerçek tarayıcı motoru hataları olmayan “Chrome’da çalışıyor, Safari’de bozuk” hatalarının tek en büyük kaynağıdır. Sunucu tarafında UA’ya yalnızca kaba bir analitik sinyali olarak davranın — asla özelliklere, içeriğe veya güvenlik kontrollerine UA üzerinden geçit vermeyin. İstemci tarafında özellik algılamayı tercih edin (Modernizr veya ihtiyaç duyduğunuz belirli API için elle yazılmış kontroller). Bot azaltma için UA’yı TLS parmak izi (akamai-bot-manager, Cloudflare bot fight mode), davranışsal sinyaller (fare hareketi entropisi) ve iş kanıtı zorluklarıyla (hCaptcha, Turnstile) birleştirin. İstemci İpuçları hikayesi gelişiyor — Sec-CH-UA-Platform güvenilirdir, Sec-CH-UA-Mobile mobil/masaüstü ayrımı için güvenilirdir; ancak daha spesifik her şey hâlâ Accept-CH aracılığıyla kullanıcı katılımı gerektirir. Referans: W3C WICG — User-Agent İstemci İpuçları.
Frequently asked questions
- User-Agent HTTP başlığı nedir?
- User-Agent başlığı, tarayıcılar ve HTTP istemcileri tarafından her istekle birlikte gönderilir ve isteği yapan yazılımı tanımlar — genellikle tarayıcı adı, sürüm, motor ve işletim sistemi dahil. Sunucular bunu yanıtları veya analitiği özelleştirmek için kullanır.
- User-Agent dizesi neden güvenilmez olarak bilinir?
- Geriye dönük uyumluluk için tarayıcılar tarihsel olarak başka tarayıcılar olduklarını iddia ettiler (Chrome, Mozilla/5.0 olduğunu söyler; Safari; Chrome). Bu, siteler içeriği yalnızca tanınan dizelere sunduğunda onlarca yıl boyunca birikti. Modern User-Agent dizeleri, olmadıkları birden fazla tarayıcıya ait belirteçler içerir; bu da özellik algılama için ayrıştırmayı güvenilmez kılar.
- User-Agent ile İstemci İpuçları arasındaki fark nedir?
- User-Agent, her istekle birlikte otomatik olarak gönderilen tek bir başlık dizisidir ve her şeyi bir arada içerir. İstemci İpuçları (Sec-CH-UA-*), sunucuların yalnızca ihtiyaç duydukları belirli cihaz özelliklerini talep etmesine olanak tanıyan daha yeni bir API’dir; bu, parmak izi yüzeyini azaltır ve tarayıcılara daha fazla gizlilik kontrolü sağlar.
Related
Published May 15, 2026 · Last reviewed May 31, 2026