User-Agent Nedir, Nasıl Öğrenilir ve Değiştirilir?

Yayın tarihi:

15 dk okuma

Acar Diveroli
Yazar: Acar Diveroli
Tel kafes kürede platform ve tarayıcı eksenlerinin kesiştiği yere uzanan mavi çizgi, sağda User-Agent künye sütunu

Bir programın indirme sayfasını açtığınızda site, işletim sisteminize uygun dosyayı kendiliğinden önerir. Bazı siteler telefondan gelen ziyaretçiye ayrı bir mobil sayfa gönderir. Site bunu size sormadan yapar, çünkü tarayıcınız her istekle birlikte kendini tanıtan tek satırlık bir metin gönderir. Bu satırın adı User-Agent'tır (Türkçe arayüzlerde "kullanıcı aracısı").

Bu yazının ilk yarısı herkes içindir: User-Agent dizgisinin parça parça nasıl okunduğunu, kendi User-Agent'ınızı nasıl göreceğinizi, Chrome'da, Windows 11'de ve Android'de nasıl değiştireceğinizi anlatıyoruz. İkinci yarı daha tekniktir: Chrome'un User-Agent azaltması, onun yerine gelen Client Hints başlıkları, User-Agent'ı değiştirmenin neyi değiştirmediği ve kendi yazdığınız bir betiğin kendini nasıl tanıtması gerektiği.

User-Agent nedir?

Tarayıcınız bir sayfa istediğinde sunucuya yalnızca adresi göndermez. İsteğin üstünde, "başlık" (header) denen kısa bilgi satırları da gider: hangi dilleri tercih ettiğiniz, hangi dosya türlerini kabul ettiğiniz ve isteği hangi yazılımın gönderdiği. Sonuncusu User-Agent başlığıdır.

HTTP standardı RFC 9110, bu başlığı isteği başlatan yazılım hakkında bilgi taşıyan alan diye tanımlar. Sunucular bu bilgiyi üç iş için kullanır: uyumluluk sorunlarının hangi tarayıcıda çıktığını anlamak, yanıtı istemcinin kısıtlarına göre uyarlamak ve tarayıcı, işletim sistemi istatistiği tutmak. Standart, istemcinin bu başlığı her istekte göndermesini önerir.

"User agent" sözü aslında başlığın değil, yazılımın adıdır: sizin adınıza istek gönderen her program bir kullanıcı aracısıdır. Tarayıcı, arama motoru botu, telefon uygulaması, curl komutu ve bir Python betiği bu tanıma girer ve hepsinin bir User-Agent değeri vardır.

İki yanlış bilgiyi baştan düzeltelim. User-Agent IP adresinizi ve konumunuzu içermez. IP adresi bağlantının kendisinden okunur; nasıl değiştiğini IP Adresi Nasıl Değiştirilir? yazımızda anlattık. User-Agent bir kimlik doğrulama da değildir: istemcinin kendi beyanıdır, sunucu bu beyanın doğruluğunu başlığa bakarak sınayamaz.

User-Agent dizgisi nasıl okunur?

Windows'ta çalışan güncel bir Chrome şu değeri gönderir (örnek MDN'in User-Agent sayfasından):

text
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36

Satırda Chrome'un yanında Mozilla, AppleWebKit, Gecko ve Safari adları da geçiyor. Nedeni tarihseldir. Siteler yıllarca "User-Agent'ta şu ad varsa gelişmiş sayfayı gönder" diye kural yazdı. Yeni çıkan her tarayıcı o sayfadan mahrum kalmamak için eskilerin adını kendi satırına ekledi. MDN'in ifadesiyle Mozilla/5.0, tarayıcının Mozilla uyumlu olduğunu söyleyen genel bir belirteçtir ve tarihsel nedenlerle bugün neredeyse her tarayıcı onu gönderir.

ParçaNe söyler?
Mozilla/5.0Uyumluluk kalıntısı; tarayıcıyı ayırt etmez
(Windows NT 10.0; Win64; x64)İşletim sistemi ve işlemci mimarisi
AppleWebKit/537.36 (KHTML, like Gecko)Yine uyumluluk için eklenen motor adları
Chrome/143.0.0.0Asıl tarayıcı ve ana sürümü
Safari/537.36Safari'ye göre yazılmış siteler için eklenen ad

Pratik okuma kuralı şudur: işletim sistemi ilk parantezin içindedir, tarayıcının gerçek adı çoğunlukla satırın sonuna yakındır. Edge satırın sonuna Edg/ ekler, Firefox Firefox/ ile biter. Telefonlarda satıra Mobile sözcüğü girer; User-Agent'a göre mobil sayfa seçen siteler bu sözcüğe bakar.

Bir ayrıntı daha: Windows 11 kullanıyor olsanız da parantezin içinde Windows NT 10.0 yazar. Microsoft, User-Agent dizgisinin Windows 10 ile 11'i ayıracak şekilde güncellenmeyeceğini kendi belgesinde açıkça söyler. Nedenini aşağıda, User-Agent azaltması bölümünde göreceksiniz.

User-Agent'ınızı nasıl öğrenirsiniz?

Program kurmanıza gerek yok. Tarayıcının kendi araçları yeterlidir:

  1. Chrome ya da Edge'de herhangi bir sayfadayken F12 tuşuna basın (ya da sağ üstteki üç nokta > Diğer araçlar > Geliştirici araçları).
  2. Açılan panelde Konsol (Console) sekmesine geçin.
  3. navigator.userAgent yazıp Enter'a basın. Tırnak içinde dönen satır, tarayıcınızın JavaScript'e bildirdiği User-Agent'tır.
  4. Sunucuya gerçekten ne gittiğini görmek için (Network) sekmesine geçin, sayfayı yenileyin, listedeki ilk isteğe tıklayın ve "İstek üst bilgileri" (Request Headers) bölümünde User-Agent satırını bulun.

Üçüncü ve dördüncü adımın aynı değeri göstermesi beklenir. Farklıysa bir eklenti ya da ayar ikisinden yalnızca birini değiştiriyordur.

Konsol kullanmak istemiyorsanız, gelen istek başlıklarını olduğu gibi geri yazan bir sayfa da iş görür. https://httpbin.org/headers adresini tarayıcıda açtığınızda sunucunun sizden aldığı başlıkların tamamını görürsünüz; yazının kod bölümünde aynı adresi kullanacağız.

User-Agent nasıl değiştirilir?

Önce neyi değiştirdiğinizi bilin: User-Agent işletim sisteminin değil, her tarayıcının kendi ayarıdır. Windows 11'de ya da Android'de bütün programlar için geçerli tek bir User-Agent ayarı yoktur.

Chrome ve Edge (Windows 11, Windows 10, macOS)

Chrome'un resmî yolu Geliştirici Araçları'ndaki Ağ koşulları sekmesidir. Edge de Chromium tabanlı olduğu için aynı araçları taşır.

  1. F12 ile Geliştirici Araçları'nı açın.
  2. Panelin sağ üstündeki üç nokta > Diğer araçlar (More tools) > Ağ koşulları (Network conditions) yolunu izleyin. Menüde bulamazsanız Ctrl+Shift+P ile komut menüsünü açıp "Network conditions" yazın.
  3. Kullanıcı aracısı (User agent) başlığının altındaki "Tarayıcı varsayılanını kullan" (Use browser default) kutusunun işaretini kaldırın.
  4. Listeden hazır bir tarayıcı ve cihaz seçin ya da "Özel…" seçeneğiyle kendi dizginizi yazın.
  5. Sayfayı yenileyin.

Aynı bölümdeki "Kullanıcı aracısı istemci ipuçları" alanı, aşağıda anlatacağımız Client Hints değerlerini de düzenlemenizi sağlar. Bu değişiklik kalıcı bir tarayıcı ayarı değildir; Geliştirici Araçları'nın açık olduğu sekmede, test süresince geçerlidir. Geliştirici Araçları İngilizce açılıyorsa parantez içindeki adları izleyin.

Android telefon

Android'de User-Agent'ı elle yazmanın yerleşik bir yolu yoktur, ama en sık istenen değişiklik tek dokunuştur. Chrome'da sağ üstteki üç noktaya dokunup Masaüstü sitesi kutusunu işaretlediğinizde Chrome o siteye masaüstü kimliğiyle gider ve geniş tasarım gelir. Bunu her site için varsayılan yapmak isterseniz Chrome Yardım'daki yol şudur: Ayarlar > Site ayarları > Masaüstü sitesi.

User-Agent switcher nedir?

Tarayıcı mağazalarında "User-Agent switcher" adıyla bulunan eklentiler aynı işi Geliştirici Araçları'nı açmadan ve kalıcı olarak yapar: listeden bir kimlik seçersiniz, eklenti giden isteklerdeki User-Agent başlığını onunla değiştirir. Kurmadan önce istediği izne bakın. Başlıkları değiştirebilmek için eklentinin ziyaret ettiğiniz bütün sitelerdeki trafiğe erişmesi gerekir; bu izni yalnızca kaynağına güvendiğiniz bir eklentiye verin ve işiniz bitince kapatın.

User-Agent neden değiştirilir?

Meşru nedenlerin hepsi bir çeşit testtir:

  • Mobil görünümü bilgisayardan denemek. Kendi sitenizin telefona hangi sayfayı gönderdiğini görmek.
  • Uyumluluk sorunu ayıklamak. "Tarayıcınız desteklenmiyor" diyen eski bir kurumsal sayfanın gerçekten çalışıp çalışmadığını anlamak.
  • Kendi sitenizin botlara ne gösterdiğini görmek. Arama motoru botlarına farklı içerik dönen bir yapılandırma hatasını yakalamak.
  • Bir hatayı yeniden üretmek. Yalnızca belirli bir tarayıcıda çıkan sorunu, o tarayıcı elinizde yokken incelemek.

RFC 9110 bu durumu da öngörür: bir istemci kendini başka bir istemci gibi tanıtırsa, sunucu kullanıcının o istemciye göre hazırlanmış yanıtı görmek istediğini varsayabilir; yanıt gerçek tarayıcınızda iyi çalışmasa bile. Sorumluluk değiştirendedir.

User-Agent azaltması (UA reduction) nedir?

Eski User-Agent dizgileri bugünkünden çok daha konuşkandı: tarayıcının dört haneli tam sürümü, işletim sisteminin yama düzeyi, Android'de telefonun modeli. Bu ayrıntılar bir araya geldiğinde kullanıcıyı çerez olmadan tanımaya yarayan tarayıcı parmak izinin hazır bir parçası oluyordu. RFC 9110 da aynı uyarıyı yapar: gereğinden ayrıntılı User-Agent değerleri, kullanıcının isteği dışında tanınma riskini artırır.

Chrome bu yüzden dizgiyi aşamalı olarak sadeleştirdi. Chromium projesinin zaman çizelgesine göre alt sürüm numaraları Chrome 101'de, masaüstü işletim sistemi bilgisi Chrome 107'de, Android sürümü ve cihaz modeli Chrome 110'da sabitlendi. Bugün Chrome'un gönderdiği dizgide şu parçalar gerçek değil, sabittir:

ParçaAzaltma olmasaydı (örnek)Bugün
Tarayıcı sürümüChrome/143.0.12.45Chrome/143.0.0.0 (yalnız ana sürüm gerçek)
WindowsGerçek sürümHer zaman Windows NT 10.0; Win64; x64
macOSGerçek sürümHer zaman Intel Mac OS X 10_15_7
AndroidAndroid 16; Pixel 9Her zaman Android 10; K

Windows 11'de NT 10.0 görmenizin, yepyeni bir telefonda "Android 10" ve "K" adlı bir model görmenizin nedeni budur. Çıkarım da açık: güncel bir Chrome'un User-Agent'ından işletim sistemi sürümünü ya da telefon modelini okumaya çalışan bir istatistik aracı yanlış sonuç üretir.

Client Hints nedir?

Sadeleştirmeyle kaybolan bilgiye gerçekten ihtiyacı olan siteler var: doğru kurulum dosyasını önermek ya da bir hatanın hangi sürümde çıktığını bilmek isteyenler. Chrome bu bilgiyi silmedi, isteğe bağlı hâle getirdi. Mekanizmanın adı User-Agent Client Hints'tir (istemci ipuçları) ve MDN'in Client Hints rehberinde anlatıldığı gibi şöyle çalışır:

  1. Tarayıcı ilk istekte, sadeleşmiş User-Agent ile birlikte üç kısa başlık gönderir: Sec-CH-UA (tarayıcı markası ve ana sürümü), Sec-CH-UA-Mobile (mobil mi) ve Sec-CH-UA-Platform (işletim sistemi adı).
  2. Daha fazlasını isteyen sunucu, yanıtında Accept-CH başlığıyla hangi ipuçlarını istediğini yazar.
  3. Tarayıcı, izin verdiği ipuçlarını o siteye giden sonraki isteklere ekler.
  4. İlk istekte mutlaka gereken bir ipucu varsa sunucu Critical-CH başlığını kullanır; tarayıcı isteği o ipucuyla birlikte yeniden gönderir.

Varsayılan üç başlık bir Chrome isteğinde şöyle görünür:

text
Sec-CH-UA: "Google Chrome";v="143", "Chromium";v="143", "Not A(Brand";v="24"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"

Listedeki "Not A(Brand" bir hata değildir. MDN'e göre tarayıcılar listeye bilerek sahte bir marka ekler; amaç, sunucuların tanımadıkları bir adı görünce isteği reddetme alışkanlığı edinmesini önlemektir. Mozilla/5.0 hikâyesinin tekrarlanmaması için alınmış bir önlemdir.

İpucu türüBaşlıklarNe zaman gider?
Düşük ayrıntılıSec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-PlatformHer istekte, kendiliğinden (yalnız HTTPS)
Yüksek ayrıntılıSec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-ArchYalnızca sunucu Accept-CH ile isterse

Aynı bilgiye JavaScript'ten navigator.userAgentData ile ulaşılır. Aşağıdaki satırları Chrome konsoluna yapıştırarak kendi değerlerinizi görebilirsiniz:

js
console.log(navigator.userAgent);

if (navigator.userAgentData) {
  const ayrinti = await navigator.userAgentData.getHighEntropyValues([
    "platformVersion",
    "model",
    "fullVersionList",
  ]);
  console.log(ayrinti);
}

Windows 11'de bu kod platformVersion için 13 ve üzeri bir ana sürüm döndürür; Microsoft'un belgesinde Windows 10 ile 11'i ayırmak için gösterilen yöntem budur. Denediğimiz Windows 11 makinede User-Agent hâlâ Windows NT 10.0 derken platformVersion değeri 19.0.0 geldi.

Sınırını da bilin. Client Hints bugün yalnızca Chromium tabanlı tarayıcılarda (Chrome, Edge, Opera) vardır. MDN'in uyumluluk verisinde Firefox ve Safari bu başlıkları göndermez, navigator.userAgentData nesnesi de onlarda tanımsızdır. Yukarıdaki koddaki if denetimi bu yüzden gereklidir.

User-Agent'ı değiştirmek neyi değiştirmez?

User-Agent bir etikettir; etiketi değiştirmek kutunun içindekini değiştirmez. Satırı "iPhone'daki Safari" yaptığınızda şunlar yerinde kalır:

  • Client Hints başlıkları. Yalnızca User-Agent başlığını değiştiren bir araç kullandıysanız Chrome Sec-CH-UA-Platform: "Windows" göndermeye devam eder. Safari ise bu başlıkları hiç göndermez; yani isteğiniz hem Safari olduğunu söyler hem de yalnızca Chromium'un gönderdiği başlıkları taşır.
  • JavaScript'in gördükleri. Ekran boyutu, yüklü yazı tipleri, grafik kartı, dokunmatik ekran desteği. Bunların hangi sinyaller olduğunu Tarayıcı Parmak İzi yazımızda sıraladık.
  • Bağlantının kendisi. Şifreli bağlantı kurulurken tarayıcının gönderdiği ilk paket, her tarayıcı ailesinde farklı bir düzene sahiptir ve başlıklardan önce gider. Ayrıntısı TLS Parmak İzi ve JA3 Nedir? yazımızda.
  • IP adresi. İstek yine sizin bağlantınızdan, sizin IP adresinizle çıkar.

Bu yüzden User-Agent değiştirmek bir test aracıdır, görünmezlik aracı değildir. Bot koruma sistemleri tek bir başlığa değil, sinyallerin birbiriyle tutarlı olup olmadığına bakar; resmin tamamını Bot Tespiti Nasıl Yapılır? yazımızda site sahibinin gözünden anlattık. Profil başına tutarlı bir kimlik seti kurma işini üstlenen yazılımlar ayrı bir kategoridir: Antidetect Tarayıcı Nedir?.

Kod tarafında User-Agent: varsayılanlar ve dürüst bot kimliği

Tarayıcı dışındaki her istemcinin de bir User-Agent'ı vardır ve siz ayarlamadıysanız kütüphanenin kendi adıdır. Aşağıdaki değerleri yazı için kendi makinemizde ölçtük; sürüm numarası sizde farklı çıkar:

İstemciVarsayılan User-Agent
curlcurl/8.21.0
Python Requestspython-requests/2.34.2
Node.js (yerleşik fetch)node

Bu değerler yanlış değildir, dürüsttür. Eksikleri şudur: site yöneticisine kim olduğunuzu ve size nasıl ulaşacağını söylemezler. Günlüklerinde binlerce python-requests satırı gören bir yöneticinin elindeki tek seçenek engellemektir.

Düzenli çalışan bir veri toplama betiği için yerleşik iyi uygulama, RFC 9110'un "ürün/sürüm (yorum)" biçimine uyan, botun adını ve bir iletişim yolunu taşıyan bir kimlik yazmaktır. Arama motoru botları da böyle yapar; Googlebot'un değeri Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) biçimindedir. curl ile tek satır:

bash
# Varsayılan kimliği görün
curl -s https://httpbin.org/headers

# -A ile kendi kimliğinizi yazın
curl -s -A "OrnekFiyatBotu/1.0 (+https://example.com/bot-hakkinda)" https://httpbin.org/headers

Python'da kimliği tek tek isteklere değil, oturuma yazın. Böylece bütün istekler aynı kimlikle gider ve proxy ayarı da tek yerde durur:

python
import requests

URL = "https://httpbin.org/headers"
BOT_UA = "OrnekFiyatBotu/1.0 (+https://example.com/bot-hakkinda; bot@example.com)"

# 1) Hiçbir şey ayarlamadan: kütüphanenin kendi kimliği
print(requests.get(URL, timeout=20).json()["headers"]["User-Agent"])

# 2) Oturum boyunca sabit, kendini tanıtan kimlik ve proxy
session = requests.Session()
session.headers["User-Agent"] = BOT_UA
proxy = "http://user:pass@pr.proxynet.io:8000"
session.proxies = {"http": proxy, "https": proxy}

for _ in range(3):
    print(session.get(URL, timeout=20).json()["headers"]["User-Agent"])

İlk satır python-requests/2.x basar, sonraki üçü yazdığınız kimliği. Node.js'te aynı iş fetch çağrısının headers alanıyla yapılır:

js
const url = "https://httpbin.org/headers";

// 1) Varsayılan kimlik
let res = await fetch(url);
console.log((await res.json()).headers["User-Agent"]);

// 2) Kendi yazdığınız kimlik
res = await fetch(url, {
  headers: { "User-Agent": "OrnekFiyatBotu/1.0 (+https://example.com/bot-hakkinda; bot@example.com)" },
});
console.log((await res.json()).headers["User-Agent"]);

Dosyayı .mjs uzantısıyla kaydedin; çıktının ilk satırı node olur. Node.js'te proxy tanımlamak ayrı bir konudur, Node.js'te Proxy Kullanımı yazımızda denenmiş örnekleri var. curl tarafının bütün proxy bayrakları da cURL ile Proxy Nasıl Kullanılır? yazımızda.

Her istekte rastgele User-Agent neden işe yaramaz?

İnternetteki scraping rehberlerinin çoğu bir "güncel User-Agent listesi" indirip her istekte içinden rastgele birini seçmeyi önerir. Mekanizmayı bir önceki bölümde gördünüz: değişen yalnızca etikettir. Aynı IP adresi, aynı çerez ve aynı bağlantı izi bir istekte Windows'taki Chrome, sonrakinde iPhone'daki Safari olduğunu söylediğinde ortaya gerçek hiçbir kullanıcıya benzemeyen bir trafik çıkar. Tek, sabit ve kendini tanıtan bir kimlik hem tutarlıdır hem de site yöneticisine bir muhatap bırakır. Tutarlılık örneklerini Web Scraping'de Engellenmeden Veri Toplama Yöntemleri yazımızın "Header'lar ve tutarlı istemci kimliği" bölümünde anlattık.

Googlebot gibi görünmek neden önerilmez?

Bazı rehberler User-Agent'a Googlebot'un değerini yazmayı önerir. İki nedenle yapmayın. Birincisi işe yaramaz: Google, sitelere botunu ters DNS sorgusuyla ya da yayımladığı IP aralıklarıyla doğrulamalarını önerir. Googlebot olduğunu söyleyen ama ters DNS sorgusunda googlebot.com, google.com ya da googleusercontent.com altında çözülmeyen bir IP adresi, sıradan bir bottan daha hızlı engellenir. İkincisi, başka bir kuruluşun kimliğini kullanmak sitenin size verdiği izin çerçevesinin dışına çıkmaktır. Tek meşru kullanım yukarıda saydığımız testtir: kendi sitenizin bu kimliğe ne döndüğünü görmek.

Dürüst bir bot adının bir yararı daha vardır. robots.txt dosyasındaki User-agent: satırı aynı sözcüğü kullanır ama ayrı bir şeydir: site sahibinin, kuralı hangi bota yazdığını belirttiği satırdır. Botunuzun adı belli olursa site sahibi size özel kural yazabilir; siz de o kurala uyarsınız. Dosyanın nasıl okunduğu robots.txt Dosyası Nedir, Nasıl Okunur? yazımızda.

Proxy ve User-Agent: IP'yi proxy değiştirir, kimliği siz

Proxy ile User-Agent sık karıştırılır, çünkü ikisi de "site beni nasıl görüyor" sorusunun parçasıdır. Görev paylaşımı nettir: proxy, isteğin hangi IP adresinden ve hangi ülkeden çıktığını değiştirir. User-Agent'a dokunmaz. HTTPS bağlantısında dokunamaz da: proxy yalnızca şifreli tüneli kurar, tünelin içindeki başlıkları göremez. Yukarıdaki Python örneğinde proxy varken ve yokken sitenin gördüğü User-Agent aynıdır.

Bundan çıkan kural, ikisinin aynı hikâyeyi anlatması gerektiğidir. Kendi mobil sitenizi ya da uygulamanızın arka ucunu Türkiye'deki bir telefon kullanıcısının gözünden test ediyorsanız, mobil User-Agent'ın yanına mobil operatör ağından çıkan bir IP yakışır; bunun için Mobil Proxy kullanılır. Ev kullanıcısının gördüğü fiyatı ya da reklamı doğruluyorsanız masaüstü tarayıcı kimliğiyle Residential Proxy tutarlı bir çifttir. Veri merkezi IP'sinden gelen "telefon" ya da Almanya IP'sinden gelip Accept-Language: tr gönderen istek, User-Agent ne kadar özenli seçilirse seçilsin çelişkilidir.

Kullanım alanları

  • Mobil ve masaüstü sürümün karşılaştırmalı testi. Aynı sayfayı iki kimlikle ve hedef ülkenin IP'siyle açıp farkları görmek: uygulama testi çözümü.
  • Kendi adını taşıyan düzenli veri toplama. Sabit bot kimliği, robots.txt'ye uyum ve hız sınırı birlikte çalışır: veri kazıma çözümü.
  • Site tarama ve bağlantı denetimi. Kendi tarayıcınızı (crawler) yazıyorsanız kimlik satırı ilk yapılandırma kalemidir: web crawler çözümü.
  • Arama sonuçlarında mobil ve masaüstü farkını izlemek. Sıralama, cihaz türüne ve konuma göre değişir: SEO proxy çözümü.
  • Tarayıcı otomasyonu. Playwright'ta User-Agent, context oluşturulurken verilir ve o context'in bütün sayfalarına uygulanır: Playwright Nedir ve Proxy ile Nasıl Kullanılır?.

Sık yapılan hatalar

  • User-Agent'ı değiştirince IP'nin de gizlendiğini sanmak. İkisi ayrı katmandır; User-Agent'ta IP bilgisi yoktur.
  • Yalnızca başlığı değiştirip Client Hints'i unutmak. Chrome, Sec-CH-UA-Platform ile gerçek işletim sistemini söylemeye devam eder.
  • User-Agent'tan işletim sistemi sürümü okumak. Güncel Chrome'da bu alanlar sabittir; Windows 11 ve yeni Android sürümleri dizgide görünmez.
  • İnternetten bulunan eski bir "User-Agent listesi" kullanmak. Yıllar önceki bir Chrome sürümünü söyleyen istek gerçek tarayıcı trafiğine benzemez; bazı siteler eski sürüme eksik sayfa da gönderir.
  • Rastgele kimlik seçmek ya da Googlebot kimliğine bürünmek. İlki aynı IP ve çerezle birlikte tutarsızlık sinyalidir, ikincisi ters DNS doğrulamasından geçmez.
  • İzinlerine bakmadan switcher eklentisi kurmak. Başlık değiştiren eklenti bütün trafiğinizi görebilir.
  • Testten sonra değişikliği açık bırakmak. "Masaüstü sitesi" ya da eklenti açık kaldığında siteler bozuk görünmeye başlar ve neden hatırlanmaz.

Karar rehberi

İhtiyaçÖneri
Kendi User-Agent'ımı görmek istiyorumKonsolda navigator.userAgent ya da httpbin.org/headers
Bilgisayarda mobil görünümü deneyeceğimGeliştirici Araçları > Diğer araçlar > Ağ koşulları
Telefonda masaüstü sayfayı açacağımChrome menüsünde "Masaüstü sitesi"
Ziyaretçinin Windows 11 mi kullandığını bilmem gerekSec-CH-UA-Platform-Version ya da getHighEntropyValues
Düzenli çalışan bir scraper yazıyorumAdı ve iletişim adresi olan tek, sabit bot kimliği
Farklı ülke ve cihazdan nasıl göründüğümü test edeceğimCihaza uygun User-Agent ile aynı türden proxy IP'si birlikte
Sitem botlara ne gösteriyor, görmek istiyorumYalnızca kendi sitenizde bot kimliğiyle test
Bir sitenin bot korumasını User-Agent ile geçmek istiyorumBu yol çalışmaz; resmî API ya da site sahibinden izin

Sık sorulan sorular

User-Agent ne demek?

Sözcük anlamıyla "kullanıcı aracısı": sizin adınıza internete istek gönderen yazılım. Günlük kullanımda ise o yazılımın her istekte gönderdiği, adını, sürümünü ve işletim sistemini söyleyen User-Agent başlığındaki metin kastedilir.

User-Agent IP adresimi ya da konumumu gösterir mi?

Hayır. Dizgide yalnızca yazılım ve işletim sistemi bilgisi vardır. Site IP adresinizi bağlantının kendisinden, yaklaşık konumunuzu da o IP adresinden öğrenir. User-Agent'ı değiştirmek bunların hiçbirini etkilemez.

User-Agent değiştirmek yasal mı?

Kendi tarayıcınızın gönderdiği bir başlığı değiştirmek kendi başına yasak bir işlem değildir; tarayıcıların geliştirici araçlarında bu iş için hazır bir menü bulunur. Belirleyici olan, değiştirdikten sonra ne yaptığınızdır. Başka bir kuruluşun botu gibi davranmak ya da bir sitenin kullanım şartlarını dolanmak, başlığı nasıl ayarladığınızdan bağımsız olarak sorun yaratır. Veri toplamanın hukuki çerçevesini Web Scraping (Web Kazıma) Yasal mı? yazımızda ele aldık.

Windows 11'de User-Agent neden Windows 10 gösteriyor?

Chromium tabanlı tarayıcılar işletim sistemi alanını Windows NT 10.0 değerinde sabitlemiştir. Gerçek sürüm Sec-CH-UA-Platform-Version başlığından öğrenilir; 13 ve üzeri ana sürüm Windows 11 demektir.

Client Hints, User-Agent'ın yerini mi aldı?

Henüz değil. User-Agent başlığı bütün tarayıcılarda gönderilmeye devam ediyor; Chrome yalnızca içeriğini sadeleştirdi. Client Hints, ayrıntıyı isteyen sitelere onu izinli bir yolla veren ek bir mekanizmadır ve şimdilik yalnızca Chromium tabanlı tarayıcılarda vardır. Firefox ve Safari kullanıcıları için siteler hâlâ User-Agent dizgisine bakar.

Proxy kullanınca User-Agent değişir mi?

Değişmez. Proxy isteğin çıktığı IP adresini değiştirir, gönderdiğiniz başlıklar aynı kalır. İkisini birlikte planlayın: cihaz türünü User-Agent, konumu ve ağ türünü proxy anlatır.

Özetle

User-Agent, isteği gönderen yazılımın kendini tanıttığı tek satırlık beyandır. Mozilla/5.0 ile başlaması tarihsel bir uyumluluk kalıntısıdır, asıl bilgi parantezin içinde ve satırın sonundadır. Chrome bu satırı sadeleştirdi ve ayrıntıyı Client Hints başlıklarına taşıdı; Windows 11'in NT 10.0, yeni telefonların Android 10; K görünmesi bundandır. Değiştirmek kolaydır (Ağ koşulları sekmesi, "Masaüstü sitesi" kutusu, curl -A), ama değişen yalnızca etikettir: Client Hints, JavaScript sinyalleri, bağlantı izi ve IP adresi yerinde kalır. Kendi betiğinizde rastgele kimlikler yerine adınızı ve iletişim adresinizi taşıyan tek bir kimlik kullanın, başka bir botun kimliğine bürünmeyin. Test ettiğiniz cihaz ve konumla tutarlı IP adresleri için proxy hizmetlerimize göz atabilirsiniz.

ChatGPT'ye sorClaude'a sor