Headless Tarayıcıları Tespit Etmek: Playwright, Puppeteer ve Ötesi
Bot Detection motorumuz, sinyal tutarsızlıkları, eksik API'ler ve botların taklit edemeyeceği davranış örüntüleri aracılığıyla 15'ten fazla otomasyon çerçevesini tespit eder.
Headless tarayıcılar; sofistike web scraping, credential stuffing ve dolandırıcılık operasyonları için tercih edilen silahtır. Basit HTTP istemcilerinin aksine, headless tarayıcılar JavaScript çalıştırır, sayfaları render eder ve modern web API'lerini destekler — bu da onları çok daha zor tespit edilir kılar. Bot Detection motorumuz, 15'ten fazla otomasyon çerçevesini neredeyse sıfır yanlış pozitifle tespit etmek için birden fazla bağımsız tespit yöntemi kullanır.
Tarayıcı Otomasyonunun Evrimi
Tarayıcı otomasyonu, basit curl betiklerinden bu yana uzun bir yol kat etti. Playwright, Puppeteer ve Selenium WebDriver gibi modern araçlar, gerçek tarayıcı motorlarını — Chromium, Firefox veya WebKit — headless modda kontrol eder. Tıpkı headed tarayıcılar gibi JavaScript çalıştırır, CSS işler, canvas öğelerini render eder ve WebGL sorgularını yönetirler. Bu da onları, yalnızca JavaScript çalıştırma yeteneğini kontrol eden tespit yöntemlerine karşı görünmez kılar.
Araçların en son nesli daha da ileri gitti. Playwright'ın stealth modu, geleneksel bot tespitinin dayandığı sinyallerin çoğunu yamalar. Puppeteer-extra-plugin-stealth, navigator özelliklerini değiştirir, WebGL vendor dizelerini geçersiz kılar ve kullanıcı etkileşimi olaylarını sahteler. Bu tespit önleyici önlemler, bot operatörleri ile tespit sistemleri arasında bir silahlanma yarışı yarattı.
Tespit Yöntemi 1: WebDriver Bayrağı Analizi
navigator.webdriver özelliği, bir tarayıcı otomasyon tarafından kontrol edildiğinde true olarak ayarlanır. Erken dönem tespit, bu özelliği kontrol etmek kadar basitti. Ancak modern stealth araçları bunu siler veya geçersiz kılar. Bizim tespitimiz daha derine iner — yalnızca özellik değerini değil, aynı zamanda özellik tanımlayıcısını (property descriptor), prototip zincirindeki varlığını ve yeniden tanımlanma girişimlerinin yapılıp yapılmadığını da kontrol ederiz. Ayrıca WebDriver geçersiz kılmalarıyla birlikte görülen navigator.plugins uzunluğu anomalileri gibi ilgili özellikleri de kontrol ederiz.
Tespit Yöntemi 2: Chrome DevTools Protocol Artefaktları
Playwright ve Puppeteer, tarayıcıları Chrome DevTools Protocol (CDP) üzerinden kontrol eder. Stealth modu aktif olsa bile CDP, çalışma zamanında artefaktlar bırakır: belirli global değişkenler, değiştirilmiş getter fonksiyonları ve Window ile Navigator nesneleri üzerindeki değiştirilmiş özellik tanımlayıcıları. Bu artefaktları, basit üzerine yazma işlemlerine dayanıklı tekniklerle araştırırız.
Tespit Yöntemi 3: Headless Tarayıcı Fingerprinting
Headless Chrome, headed Chrome'dan farklı bir yetenek kümesine sahiptir. Belirli tarayıcı eklentilerinden yoksundur, bazı CSS özellikleri için farklı render özellikleri gösterir ve bazı MediaQuery sonuçları için farklı değerler bildirir. Bilinen headless tarayıcı özelliklerinden oluşan bir veritabanı tutar ve gelen fingerprint'leri buna karşı kontrol ederiz.
Temel headless göstergeleri şunları içerir: eksik chrome.runtime (headed Chrome'da bulunur ancak headless'ta yoktur), sıfır uzunluklu navigator.plugins dizisi, önceki sürümlerde headless modla ilişkilendirilmiş belirli user agent örüntüleri ve headless Chrome'un iframe güvenlik bağlamlarını nasıl işlediğindeki farklılıklar.
Tespit Yöntemi 4: Eval Uzunluğu Analizi
Farklı JavaScript motorları, yerleşik fonksiyonların farklı implementasyonlarına sahiptir ve bu implementasyonların farklı dize gösterimleri vardır. Function.prototype.toString.call(eval) uzunluğunu kontrol edip her tarayıcı motoru için bilinen değerlerle karşılaştırarak, ortam sahtekârlığını tespit edebiliriz — örneğin, Firefox gibi davranan bir headless Chrome örneğini.
Tespit Yöntemi 5: TLS Çapraz Doğrulama
TLS fingerprinting makalemizde tartışıldığı gibi, TLS Client Hello mesajı, bağlantıyı kuran gerçek tarayıcıyı veya HTTP kütüphanesini açığa çıkarır. Bir Playwright betiği Chrome'u kontrol ettiğinde, TLS fingerprint'i Chrome ile eşleşir — bu beklenen bir durumdur. Ancak özel bir bot, Python requests kütüphanesini veya Go'nun net/http'sini kullandığında, gönderilen user agent dizesi ne olursa olsun TLS fingerprint'i aldatmacayı açığa çıkarır.
Tespit Yöntemi 6: Zamanlama ve Davranış Analizi
Gerçek kullanıcılar, etkileşim zamanlamalarında doğal bir çeşitlilik sergiler. Fareyi düz çizgilerle değil, eğrilerle hareket ettirirler. Tıklamadan önce duraksarlar. Değişken hızlarda kaydırma yaparlar. Otomatik araçlar, insan davranışını simüle edenler bile, istatistiksel olarak ayırt edilebilir örüntüler üretir — fazla tutarlı zamanlama, kusursuz doğrusal fare yolları ve doğal olmayan kaydırma hızları.
Fingerprinting sürecinin kendisi sırasında minimum davranışsal sinyaller toplarız — API çağrılarının zamanlaması, sinyal toplamanın sırası ve belirli tarayıcı API'lerinin yanıt verme hızı. Bu mikro-davranışsal sinyaller, geçersiz kılınabilir özelliklere değil gerçek çalıştırma ortamına bağlı oldukları için otomasyon araçlarının sahtelemesi zordur.
Tespit Yöntemi 7: İzin ve API Tutarsızlığı
Gerçek tarayıcılar tutarlı izin durumlarına ve API kullanılabilirliğine sahiptir. Bildirimleri desteklediğini iddia eden ancak Notification kurucusuna sahip olmayan ya da belirli bir ekran çözünürlüğü bildiren ancak window.screen ile CSS media sorgularından farklı değerler döndüren bir tarayıcı, kurcalama veya emülasyona işaret eden tutarsızlıklar sergiliyordur.
Otomasyon araçları, tüm ilgili API'ler arasında tutarlılığı korumadan bazı sinyalleri seçici biçimde geçersiz kıldığında ortaya çıkan çelişkileri arayarak, bu çapraz doğrulama noktalarından onlarcasını kontrol ederiz.
Tespit Yöntemi 8: VM ve Emülasyon Tespiti
Birçok bot operasyonu sanal makineler veya bulut örnekleri içinde çalışır. Bu tek başına otomasyon kanıtı olmasa da, diğer göstergelerle birleştiğinde güçlü bir sinyaldir. VM'leri; VM ile ilişkili anahtar kelimeler içeren WebGL renderer dizeleri ("llvmpipe" veya "SwiftShader" gibi), tüketici cihazlarıyla tutarsız donanım özellikleri (tam olarak 2 CPU çekirdeği ve 2GB bellek — yaygın VM varsayılanları) ve bilinen bulut sağlayıcı IP aralıkları aracılığıyla tespit ederiz.
Çok Yöntemli Avantaj
Her tespit yöntemi tek başına sınırlamalara sahiptir — sofistike bir bot operatörü herhangi bir tek yöntemi atlatabilir. Ancak tüm yöntemleri aynı anda atlatmak, üstelik hepsinde çapraz doğrulama tutarlılığını korurken, aşırı derecede pahalıdır. Tüm kontrolleri geçen bir bot geliştirmenin ve sürdürmenin maliyeti, çoğu bot operasyonunun ekonomik değerini aşar.
Neredeyse Sıfır Yanlış Pozitif
Tespitimiz, reverse DNS aracılığıyla doğrulanan arama motoru botları (Googlebot, Bingbot vb.) için bir beyaz liste modeli ve diğer trafik için çok sinyalli bir model üzerinde çalışır. Trafiği otomatik olarak sınıflandırmadan önce birden fazla destekleyici sinyal ararız. Bu ihtiyatlı yaklaşım, %0,1'in altında bir yanlış pozitif oranı sağlar — milyarlarca üretim olayı genelinde doğrulanmıştır.