User agent (UA), bir tarayıcının veya başka herhangi bir programın her isteğin başlığında sunucuya kendini tanıttığı dizedir: tarayıcının adı ve sürümü, motor, işletim sistemi, bazen cihaz modeli. User agent filtreleme, sunucunun bu dizeyi okuyup ona göre kimi içeri alacağına, kime başka bir sayfa göstereceğine ve kimi bot olarak keseceğine karar vermesi demektir.
Yöntem basit ve ucuzdur, bu yüzden kendi yazılmış script'lerde ve "anti-bot" eklentilerinde hâlâ görülür. Ama dizeyi istemcinin kendisi yazar ve onu taklit etmek ziyaretin diğer tüm işaretlerinden daha kolaydır. Aşağıda UA'da tam olarak ne olduğunu, bu dizeye nerede güvenilebileceğini, nerede güvenilemeyeceğini ve diğer sinyallerle birlikte nasıl kullanılacağını anlatıyoruz.
User agent nedir ve içinde ne yazar
Android'deki mobil Chrome'un tipik dizesi şöyle görünür:
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36
Onu parça parça okumak daha kolaydır:
| Parça | Anlamı |
|---|---|
Mozilla/5.0 |
Tarihsel uyumluluk öneki, neredeyse tüm tarayıcılarda vardır ve hiçbir şey söylemez |
(Linux; Android 10; K) |
Platform ve işletim sistemi; cihaz modeli modern tarayıcılarda çoğu zaman bir yer tutucuyla değiştirilir |
AppleWebKit/537.36 (KHTML, like Gecko) |
Oluşturma motoru ve uyumluluğa bir başka selam |
Chrome/130.0.0.0 |
Tarayıcı ve ana sürüm; alt rakamlar uzun zamandır sıfırlanıyor |
Mobile Safari/537.36 |
Mobil düzen işareti |
Sunucu bu dizeden genellikle dört şey çıkarır: cihaz türü (akıllı telefon, tablet, bilgisayar, televizyon), işletim sistemi, tarayıcı ve karşısındakinin hiç tarayıcı olmayıp bir program veya robot olduğu işareti.
Dikkat edin: dizede neredeyse hiç benzersiz bilgi yoktur. Milyonlarca telefon aynı UA'yı gönderir; tarayıcıların onu "dondurmasının" nedeni de tam olarak budur, insanları onunla izlemek zorlaşsın diye.
Client Hints: ayrıntılar nereye taşınıyor
Chromium motorlu tarayıcılar klasik dizeyi adım adım kısaltıyor, ayrıntıları ise Client Hints üzerinden veriyor: Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform ve diğer başlıklar. Bir kısmı her istekle gelir, bir kısmı ise yalnızca sunucu açıkça istediğinde. Filtreleme için bu iki açıdan faydalıdır: ipuçlarını sıfırdan inandırıcı şekilde uydurmak daha zordur ve ana dizeyle karşılaştırılabilirler. UA'da kendini Windows'ta Chrome olarak tanıtan, ipuçlarında ise başka bir platform bildiren tarayıcı garip davranıyordur.
Bir sınırlama da var: Safari ve Firefox ipuçlarını farklı destekler veya hiç desteklemez, bu yüzden Client Hints'in olmaması tek başına hiçbir şey söylemez.
User agent filtreleme nasıl çalışır
En basit haliyle bu bir alt dize listesidir: UA'da yasaklı kelimelerden biri varsa ziyaretçi yer tutucu sayfaya gider. Biraz daha karmaşığı, dizeyi tarayıcı, işletim sistemi ve cihaza ayıran bir ayrıştırıcı ve sonucun üzerine kurallardır: "yalnızca akıllı telefonları al", "Smart TV'leri alma", "yalnızca Android".
Burada iki farklı görevi ayırmak önemlidir:
- Hedefleme: hedef kitlenin seçilmesi: bu offer'a masaüstü gerekli mi, iOS uygun mu. UA dizesi burada iyi çalışır, çünkü sıradan insanlar onu taklit etmez ve hatanın maliyeti düşüktür.
- Bot koruması: otomasyonun ayıklanması. Burada UA bağımsız bir işaret olarak neredeyse işe yaramaz: bot yazan kişi ilk iş olarak gerçek bir tarayıcının dizesini koyar.
Cihaza, işletim sistemine ve tarayıcıya göre kitle filtreleri hakkında daha fazlası ülke ve cihaza göre trafik filtreleme yazısında. Bundan sonra ikinci görevden bahsedeceğiz.
Bot user agent: kim kendini dürüstçe tanıtır
Otomatik trafiğin bir kısmı gerçekten olduğu gibi tanıtır kendini. Bunlar iki farklı sınıftır.
Kaba script'ler ve araçlar. HTTP istek kütüphaneleri, komut satırı indiricileri, kazıyıcılar varsayılan olarak kendi UA'larını (kütüphane adı ve sürümüyle) gönderir veya hiç göndermez. Boş UA dizesi veya tarayıcı yerine kütüphane adı güvenilir bir işarettir: reklamdan gelen gerçek bir insan böyle gelmez. Bu ziyaretler hemen ve neredeyse risksiz kesilir.
Arama crawler'ları ve "kibar" robotlar. Arama motorları, link önizleme servisleri, erişilebilirlik izleyicileri genellikle adlarını ve bir açıklama bağlantısını dürüstçe belirtir. Sıradan bir site için bunlar faydalı misafirlerdir ve engellenmezler. Ama burada da bir çekince var: bilinen bir arama robotunun dizesi, arama motorunun alındığı yerlere alınmak için kazıyıcılar tarafından sık sık kopyalanır. Bu yüzden arama motorlarının kendileri robotu UA'ya göre değil, IP adresine ters DNS sorgusuyla kontrol etmeyi önerir: gerçek crawler kendi şirketinin ağından gelir.
Sonuç: UA filtresi saklanmaya çalışmayanları iyi yakalar. Bu, çöp isteklerin belirgin bir payıdır ve onu kesmek ucuzdur. Ama reklam bütçesini yiyen bot trafiği bu kısım değildir.
User agent taklidi: yalnızca UA'ya dayalı filtre neden zayıftır
Az da olsa kendini gizleyen her program güncel bir Chrome veya Safari dizesi gönderir. Bu tek satır kodla, tarayıcıda ise geliştirici araçlarındaki bir anahtarla yapılır. Sonra üç sorun ortaya çıkar.
Taklit dizenin kendisinden görülmez. Gerçek bir tarayıcının doğru UA'sı ile bir script isteğindeki aynı UA bayt bayt aynı görünür. Dizeyi kendisiyle kontrol etmek imkânsızdır; yalnızca diğer işaretlerle karşılaştırılabilir.
Listeler eskir. Alt dizelerden oluşan kara liste sürekli güncelleme gerektirir: yeni araçlar çıkar, eskileri ad değiştirir, gerçek tarayıcılar ise dize biçimini değiştirir. Altı aydır güncellenmeyen bir liste, çoğunlukla zaten çoktandır gelmeyen şeyleri yakalar.
Gerçek insanlarda yanlış pozitifler. Uygulama içi tarayıcılar, WebView, eski telefonlar, kurumsal tarayıcı sürümleri alışılmadık dizeler gönderir. "Standart Chrome'a benzemeyen her şey şüphelidir" kuralı, tam da sosyal medyadan gelen mobil trafiği, yani parasını ödediğiniz trafiği keser. Uygulama içi tarayıcıların özellikleri uygulama içi trafik dolandırıcılığı yazısında ayrıntılı anlatılıyor.
İpucu. UA kuralı ücretli trafiğin belirgin bir kısmında tetikleniyorsa, büyük olasılıkla botları değil gerçek insanları kesiyordur. Uğruna koruma kurmaya değer botlar kusursuz bir dizeyle gelir.
User agent filtreleme yine de nerede faydalıdır
Söylenenlere rağmen UA, yerini bilirseniz normal ve gerekli bir işarettir.
- Kaba otomasyonun ayıklanması. Boş UA, kütüphane, komut satırı aracı veya kazıma çerçevesi adı hemen "hayır" demektir. Diğer kontrollerden yükü alan ucuz bir katman.
- Hedefleme ve yönlendirme için cihaz türünün tespiti. Akıllı telefon mu bilgisayar mı, Android mi iOS mu: trafiği offer'lara dağıtmak için UA dizesi genellikle yeterlidir.
- Uygulama içi tarayıcıların tanınması. UA'dan ziyaretin bir uygulama içindeki tarayıcıdan geldiği görülür. Bu engellemek için değil, tam tersine, böyle bir ziyareti WebView'da yanlış çıkabilen işaretler yüzünden cezalandırmamak için önemlidir.
- Diğer işaretlerle karşılaştırma. UA "iPhone" diyor, ama ekran, yazı tipi seti ve script davranışı hayır diyor. Uyumsuzluğun kendisi sinyaldir.
- Analitik. Raporlardaki tarayıcı ve işletim sistemi kırılımları, dönüşümün nerede düştüğünü ve şüpheli sıçramanın nereden geldiğini gösterir.
Diğer işaretlerle birlikte: UA birçok sesten biri
İyi bir koruma "ziyaretin UA'sı ne" diye sormaz, "UA diğer her şeyle uyuşuyor mu" diye sorar. Genellikle karşılaştırıldığı işaretler:
| İşaret | UA neyle karşılaştırılır |
|---|---|
| IP adresi ve ağ | Hosting ağından gelen mobil tarayıcı dikkatle bakmak için nedendir; ayrıntılar VPN, proxy ve veri merkezi IP tespiti yazısında |
| İstek başlıkları | Gerçek bir tarayıcının başlık seti ve sırası, UA dizesi aynı olsa bile bir kütüphanenin setinden farklıdır |
| Client Hints | İpuçlarındaki platform ve tarayıcı markası dizeyle örtüşmelidir |
| JavaScript çalıştırma | Kendini modern Chrome olarak tanıtan ama script'i çalıştırmayan tarayıcı, tarayıcı gibi davranmıyordur |
| Script'teki tarayıcı özellikleri | Platform, ekran, otomasyon işaretleri; ayrıntılar headless tarayıcı ve fingerprint tespiti yazısında |
| Davranış | Sayfada geçen süre, fare hareketi ve dokunmalar |
Her işaret ayrı ayrı yanılır. Birlikte çok daha seyrek yanılan bir değerlendirme verirler. Her modern akıllı trafik filtresi böyle çalışır: tek bir işaret biraz şüphe ekler, kesin sonuç ise birkaç işaretin örtüşmesinden çıkar. Koruma katmanlarının genel düzenini bot trafiği nasıl filtrelenir yazısında inceledik.
ArtisanClo'da nasıl çalışır
ArtisanClo'da user agent dizesi ayrı bir "listeye göre" kural değil, sinyallerden biridir. Ziyaret hakkındaki karar birkaç adımdan oluşur ve UA her birine kendi biçimiyle katılır.
Ağ ve istek. İlk adım, tarayıcı kontrolünden önce adrese, ağa, sağlayıcıya, başlıklara, tıklama etiketine ve akış kurallarına bakar. Burada tarayıcı yerine programlar ve link önizlemesi yapan platform robotları kesilir: bu ziyaretler her ayarda her zaman White Page alır, günlükte ise "Tarayıcı değil, bir program" veya "Arama veya platform crawler'ı" nedeni görülür. Bu adım gerçek insanlara en az dokunanıdır.
Kitle. Akışın filtreleme ayarlarında izin verme ve engelleme düğmeleriyle "Cihazlar", "İşletim sistemleri" ve "Tarayıcılar" listeleri vardır. Cihazlar arasında "Bot / crawler" ve "Bilinmiyor" ayrıca belirtilmiştir. Bu hedeflemedir: listeyi geçemeyen ziyaretçi anlaşılır bir nedenle White Page görür.
Tarayıcı kontrolü. Gerçek bir tarayıcının dizesini gönderen ziyaretçi script kontrolünden geçer ve ziyaretin otomasyona benzeyip benzemediğini artık onun cevabı gösterir. Açık otomasyon izlerinde headless tarayıcı engeli hemen keser, daha az açık işaretler ise ağ, VPN, sağlayıcı ve kaynak sitenin varlığıyla birlikte güven puanına gider.
Uygulama içi tarayıcılar. Facebook, Instagram, TikTok'un uygulama içi tarayıcıları ve uygulamalardaki WebView ayrıca tanınır. Onlarda otomasyon işareti ziyareti hemen kesmez; ağ, zaman ve referrer ile birlikte güven puanında dikkate alınır, çünkü bu tarayıcılarda çoğu zaman yanlıştır.
Şeffaflık. Günlükteki her tıklamanın onlarca olası nedenden biri olan bir karar nedeni vardır, "Ziyaret raporu" bağlantısı ise tek bir ziyaretin tüm sinyallerini ve sonuçlarını gösterir. Filtrenin yanıldığından şüpheleniyorsanız tıklama neden White Page'e gitti yazısıyla başlayın. Tüm filtreleme olanakları özellikler sayfasında toplanmıştır.
User agent filtrelemede tipik hatalar
- Korumayı alt dize kara listesine kurmak. Yalnızca saklanmayanları yakalar ve sonsuz güncelleme gerektirir.
- "Standart dışı" her şeyi engellemek. Sosyal medyanın uygulama içi tarayıcıları ve eski cihazlar, yani gerçek ücretli trafik darbe alır.
- Doğru görünen dizeye güvenmek. Modern bir tarayıcının kusursuz UA'sı, iyi yapılmış bir botun gönderdiği şeyin ta kendisidir.
- Hedeflemeyi korumayla karıştırmak. "Yalnızca Android" seçimi offer kitlesiyle ilgili bir karardır, botlardan kurtulmanın bir yolu değil.
- Ayıklama nedenlerine bakmamak. Hangi kuralın tetiklendiği görünmüyorsa, filtrenin botları mı insanları mı kestiğini anlamak mümkün değildir. Bot trafiğinin raporlarda görüldüğü işaretler bot trafiği nasıl anlaşılır yazısında toplanmıştır.
Sonuç
User agent dizesi, istemcinin kendisi hakkında söylediğidir. Riskler düşük olduğunda ona güvenilebilir: cihaz tespiti, trafik dağıtımı, analitik için. Karşınızdakinin insan olduğunun kanıtı olarak ona güvenilemez. User agent filtreleme kaba script'leri ve boş istekleri iyi temizler, ama gerçek koruma UA'nın ağ, başlıklar, Client Hints, script çalıştırma ve davranışla karşılaştırıldığı yerde başlar. O zaman taklit dize bota yardım etmez, alışılmadık dize de gerçek ziyaretçiye zarar vermez.



