User agent dizesi nasıl oluşturulur?
Her tarayıcı, yaptığı her istekle birlikte bir User-Agent başlığı gönderir. Windows üzerindeki güncel bir Chrome örneğine göz atalım:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
Mozilla/5.0— geriye dönük uyumluluk adına her tarayıcının gönderdiği geçmişten kalan bir belirteçtir.(Windows NT 10.0; Win64; x64)— platform bilgisidir. Windows 11 de kendisini NT 10.0 olarak bildirir.AppleWebKit/537.36 (KHTML, like Gecko)— motor soy ağacıdır; Chrome’un Blink motoru hâlâ WebKit 537.36 olarak rapor verir.Chrome/157.0.0.0— tarayıcı ve ana sürüm numarasıdır; alt sürüm kısımları artık daima sıfır olarak iletilir.Safari/537.36— bir diğer uyumluluk belirtecidir.
Edge aynı Chromium dizesine Edg/ (Android üzerinde EdgA/), Opera OPR/ ve Samsung Internet SamsungBrowser/ ekler. iPhone üzerinde ise Chrome, Firefox ve Edge bir Safari dizesinin üzerine sırasıyla CriOS, FxiOS ve EdgiOS olarak kendini tanımlar. Bu nedenle bir ayrıştırıcının Chrome veya Safari’den önce bunları kontrol etmesi gerekir; masaüstü modundaki bir iPad’in tam olarak Mac gibi görünmesinin sebebi de budur.
Dondurulmuş ve sadeleştirilmiş user agent dizeleri
Tarayıcılar, parmak izi takibini (fingerprinting) kısıtlamak amacıyla ayrıntılar konusunda dürüst olmayı bıraktı. Chrome’un sadeleştirilmiş user agent yapısı daima Windows NT 10.0, Mac OS X 10_15_7 ya da Android 10; K olarak rapor verir ve alt sürümleri sıfırlar. Safari yıllardır macOS 10.15.7 bildirmektedir; iPhone ve iPad’de ise gerçek sürüm yerine artık dondurulmuş bir iOS 18 sürümü iletilir (buradaki dizeler OS 18_7 kullanır). Firefox ise Mac OS X 10.15 olarak görünür. Bu araçla üretilen dizeler bu kurallara uyar; örneğin Chrome/157.0.7012.88 belirten veya Chrome Android dizesinde spesifik cihaz modeli içeren bir user agent artık hiçbir güncel Chrome tarafından gönderilmez ve kolayca sahte olarak tespit edilir.
Tam işletim sistemi sürümü, cihaz modeli ve ayrıntılı tarayıcı sürümü Chromium tabanlı tarayıcılarda User-Agent Client Hints üzerinden edinilebilir. HTTPS üzerinden Chromium tarayıcıları her istekle birlikte düşük entropili Sec-CH-UA, Sec-CH-UA-Mobile ve Sec-CH-UA-Platform ipuçlarını gönderir; bunları her user agent ile tutarlı biçimde ve seçtiğiniz dildeki Accept-Language başlığıyla birlikte almak için HTTP başlıkları + Client Hints seçeneğini belirleyin. Sec-CH-UA-Platform-Version gibi ayrıntılı değerler yüksek entropili ipuçlarıdır: Bir sunucu bunları Accept-CH başlığıyla talep etmeli veya bir komut dosyası navigator.userAgentData.getHighEntropyValues() ile istemelidir.
Üretilen user agent dizelerini kod içinde kullanma
Çıktı olarak cURL, Python (requests) veya Playwright (Node.js) seçeneklerinden birini belirlediğinizde, araç user agent verilerinizle çalışmaya hazır kodlar üretir. Testlerin gerçekçi kalması için birkaç kurala dikkat edilmelidir:
- Başlıkları tutarlı tutun.
Sec-CH-UAbaşlıkları içermeyen ya da Firefox tarzı başlık sıralamasına sahip bir Chrome user agent hemen dikkat çeker. Bot tespit sistemleri TLS ve HTTP/2 parmak izlerini de iddia edilen tarayıcıyla karşılaştırır; bu nedenle Chrome user agent kullanan standart bir Python istemcisi yine de kolayca fark edilir. - Oturum içinde sürekli değiştirmeyin. Gerçek kullanıcılar tüm ziyaret boyunca aynı tarayıcıyı kullanır; her istekte user agent değiştirmek klasik bir bot belirtisidir.
- Gerçek trafik gibi ağırlıklandırın. Oluşturucu, tıpkı gerçek internet trafiğinde olduğu gibi Android ve Windows üzerinde Chrome’a, iPhone üzerinde ise Safari’ye öncelik verir.
Bir user agent dizesini taklit etmek, başka bir siteye otomatik erişim sağlamayı meşru kılmaz: Her zaman sitelerin kullanım koşullarına ve robots.txt kurallarına uyun, istek sıklığını makul seviyede tutun.
Tarayıcınızın user agent dizesini değiştirme
- Chrome ve Edge: Geliştirici Araçları’nı (DevTools) açın, ardından Diğer araçlar → Network conditions yolunu izleyin, Use browser default seçeneğinin işaretini kaldırıp istediğiniz dizeyi yapıştırın. Bu ayar DevTools açık olduğu sürece geçerlidir.
- Firefox:
about:configsayfasına gidin,general.useragent.overrideadında bir dize (string) tercihi oluşturup user agent değerini girin; varsayılana dönmek için bu tercihi silin. - Safari: Ayarlar → İleri Düzey bölümünden Geliştirme menüsünü etkinleştirin, ardından Geliştirme → User Agent menüsünü kullanın.
Gerçek arama motoru botlarını doğrulama
Herkes isteğinde Googlebot user agent dizesi gönderebilir. Bir isteğin gerçekten Google veya Bing’den gelip gelmediğini doğrulamak için IP adresine ters DNS (reverse DNS) sorgusu yapın. Alan adının googlebot.com, google.com (veya kullanıcı tetiklemeli bazı Google servisleri için googleusercontent.com), Bingbot içinse search.msn.com ile bitmesi gerekir; ardından bu alan adına yapılan normal DNS sorgusu aynı IP adresini döndürmelidir. Ayrıca Google ve Microsoft, bot IP aralıklarını JSON dosyası olarak da yayımlar. Asla yalnızca user agent dizesine güvenerek izin listesi (allow-list) oluşturmayın.
Sıkça sorulan sorular
Mevcut user agent bilgim nedir?
Yukarıdaki kutuda; tarayıcınız, sürümünüz, işletim sisteminiz ve cihaz türünüzle birlikte gösterilmektedir. Bu bilgi tarayıcınızda doğrudan navigator.userAgent ile okunur; sunucularımıza hiçbir veri gönderilmez.
Bu user agent dizeleri gerçek ve güncel mi?
Güncel tarayıcıların gönderdiği birebir şablonlardan üretilir. Sürümler Google, Microsoft ve Mozilla’nın resmî yayın akışlarından (Chrome 157, Edge 156, Firefox 159) ve Safari 27.0 kaynaklarından alınır. Gerçek trafikteki dağılımı simüle etmek üzere eski sürümleri dahil etmek için Son 3 veya 6 ana sürüm seçeneğini kullanabilirsiniz.
Neden tüm Windows user agent dizelerinde Windows NT 10.0 yazıyor?
Çünkü tarayıcılar platform belirtecini dondurdu: Windows 11, eski tarayıcı algılama kodlarını bozmamak ve parmak izi takibini zorlaştırmak için kendini NT 10.0 olarak bildirir. Windows 10 ile 11’i ayırt etmek için yüksek entropili Sec-CH-UA-Platform-Version Client Hint başlığını talep etmeniz gerekir; 13 veya üzeri bir sürüm Windows 11 anlamına gelir.
Bu user agent dizelerini web scraping için kullanabilir miyim?
Kendi testlerinizde ve sitelerin kullanım şartları ile robots.txt kurallarına saygı duyan betiklerinizde kullanabilirsiniz. Gerçekçi bir user agent tek başına bir komut dosyasını tam anlamıyla gerçek bir tarayıcı gibi göstermez ve hiçbir zaman erişim kısıtlamalarını aşmanın bahanesi olamaz.
User agent dizesini değiştirmek yasalara aykırı mı?
Genel olarak hayır: Tarayıcınızın veya betiğinizin gönderdiği user agent dizesini değiştirmek yazılım geliştirme ve test süreçlerinde son derece yaygın bir uygulamadır. Ancak bulunulan ülkeye ve ilgili sitenin kullanım şartlarına bağlı olarak; erişim engellerini aşmak ya da kimliğinizi yanıltıcı biçimde tanıtarak haksız işlem yapmak amacıyla kullanıldığında yasal sorun teşkil edebilir.