Stealth Tarayıcı Benchmark'ı: Patchright, nodriver, Camoufox (2026)

54 çalıştırma, beş otomasyon aracı, iki IP türü. Bot kararlarının tamamını tarayıcı düzeyindeki gizlilik belirledi; residential IP yalnızca ağ tarafındaki kontrolleri etkiledi, o da her zaman olumlu yönde değil.

Stealth Browser Benchmark: Patchright, nodriver, Camoufox (2026)
Bu makalede

3 Ekim 2026'da küçük bir stealth tarayıcı benchmark'ı yaptık: kontrol grubu olarak düz Playwright, ardından Patchright, nodriver, Camoufox ve Zendriver. Hepsini herkese açık bot tespit test sayfalarına karşı, bir kez Hetzner veri merkezi IP'sinden, bir kez de ABD residential proxy'si üzerinden çalıştırdık. Otomasyon kararlarının tamamını tarayıcı belirledi. Düz Playwright, iki IP'den de her çalıştırmada deviceandbrowserinfo, BrowserScan, Fingerprint playground'u ve Pixelscan tarafından işaretlendi. Headful çalıştırıldığında dört stealth araç, karar üretilen her çalıştırmada ilk üç sayfayı geçti; Pixelscan ise 39 headful çalıştırmanın 2'sini işaretledi (2'si daha n/a). Residential IP yalnızca ağa bakan kontrolleri etkiledi, o da her zaman doğru yönde değil.

Söz konusu olan, tek bir sunucudan ve tek bir proxy ülkesinden, test amaçlı hazırlanmış sayfalarda kaydedilmiş 54 çalıştırma; kimsenin üretimdeki anti-bot sistemine dair bir sıralama değil. Aşağıda yöntemi, ham kararları, verinin neyi desteklemediğini ve testi yeniden çalıştırmak için kodu bulacaksınız.

Stealth tarayıcı benchmark'ı: kısa cevap

Tarayıcı otomasyonu sızdırıyorsa residential IP onu kurtarmaz. Tarayıcı temizse IP çoğunlukla ağ tarafındaki kontrolleri etkiler: proxy tespiti, saat dilimi tutarlılığı ve WebRTC. Bu sayfalarda bunun iki yönlü etkisi oldu:

  • Otomasyon kararları IP ile değişmedi. Playwright, 10 headful çalıştırmasının hepsinde, iki ağdan da deviceandbrowserinfo'da isBot: true, BrowserScan'de "WebDriver: Robot" ve Fingerprint playground'unda "bad bot (type: webdriver)" sonucunu aldı. Patchright, nodriver, Zendriver ve Camoufox hiçbir headful çalıştırmada bu işaretlerden hiçbirini almadı.
  • Pixelscan veri merkezi IP'sini önemsedi. Hetzner IP'sinden yapılan 20 çalıştırmanın 20'sinde, hiç proxy kullanılmamasına rağmen "Proxy detected" yazdı. Residential proxy üzerinden 34 çalıştırmanın 3'ünde yazdı.
  • Fingerprint playground'u residential IP'yi önemsedi. Proxy sinyali 34 residential çalıştırmanın 33'ünü işaretledi ve çoğu zaman bir proxy ağının adını verdi ("residential proxy from SOAX", "from INFATICA" gibi). Chrome tabanlı araçlar için Hetzner IP'sini işaretlemedi. Chrome tabanlı üç stealth araçta şüphe puanları veri merkezinden 0–6, sabit residential proxy üzerinden 8–24 oldu.
  • Beş aracın üçü, proxy üzerinden çalışırken sunucunun gerçek IP'sini WebRTC ile açığa çıkardı. Playwright, Patchright ve nodriver bunu proxy'li her çalıştırmada yaptı. Zendriver WebRTC'yi varsayılan olarak engelliyor, Camoufox ise sahteliyor.
  • Headless mod IP'den daha belirleyiciydi. Headless modda Patchright ve nodriver, headful modda geçtikleri sayfalarda işaretlendi.

Neyi çalıştırdık: sürümler, ağ koşulları, hedefler

Her şey Xvfb içeren tek bir Debian 12 container'ında, aynı anda tek tarayıcıyla, 4 çekirdekli bir Linux sunucuda çalıştı. Her araç kendi belgelerinin önerdiği başlatma yapılandırmasını kullandı, fazlasını değil: özel user agent yok, parmak izi enjeksiyonu yok, fare hareketi yok, kaynak engelleme yok. Patchright için bu, README'deki "Best Practice" yapılandırması: kalıcı context, gerçek Chrome, headful, no_viewport=True.

AraçPaketTarayıcıBaşlatma
Playwright (kontrol)playwright 1.62.0Playwright Chromium 151.0.7922.34chromium.launch(headless=False), varsayılanlar
Patchrightpatchright 1.63.0Google Chrome 154.0.8037.97launch_persistent_context(channel="chrome", headless=False, no_viewport=True)
nodrivernodriver 0.50.3Google Chrome 154.0.8037.97start(headless=False, sandbox=False)
Zendriverzendriver 0.17.1Google Chrome 154.0.8037.97start(headless=False, sandbox=False)
Camoufoxcamoufox 0.5.6Camoufox 152.0.4-beta.31AsyncCamoufox(headless=False, os="linux", geoip=True)

Baştan belirtelim, iki ödün verdik. Kontrol grubu güncel 1.63.0 değil, Playwright 1.62.0; çünkü camoufox 0.5.6 playwright<1.63 gerektiriyor ve bütün araçlar aynı ortamı paylaştı. Ayrıca Camoufox os="linux" ile ve yalnızca Linux fontlarıyla çalıştı, çünkü sunucunun diski neredeyse doluydu ve macOS ile Windows font paketlerini açmadık. Camoufox varsayılan olarak rastgele bir işletim sistemi seçerdi.

Ağ koşulları:

  • Veri merkezi: sunucunun kendi IP'si, AS24940 Hetzner Online GmbH, Helsinki (ipinfo.io'ya göre).
  • Residential, sabit: her çalıştırmada yeni bir sabit oturumla ABD residential çıkışı. Proxy'li her çalıştırmada tüm araçlar aynı küçük yerel relay üzerinden bağlandı. Relay proxy kimlik doğrulamasını ekliyor ve baytları sayıyor, çünkü nodriver ve Zendriver proxy kimlik bilgilerini bir Chrome flag'i içinde iletemiyor.
  • Üç yan koşul: her bağlantıda yeni çıkış IP'si veren dönen bir residential geçiş, bir ısınma geçişi (aşağıda açıklanıyor) ve veri merkezi IP'sinden araç başına bir headless çalıştırma.

Hedefler, her çalıştırmada yeni bir tarayıcıda bu sırayla, her biri yeni sekmede ziyaret edildi: bot.sannysoft.com, BrowserScan bot tespiti, deviceandbrowserinfo "Are you a bot?", CreepJS, Fingerprint playground'u, nowsecure.nl (Cloudflare arkasında; düz curl cf-mitigated: challenge ile 403 alıyor) ve Pixelscan'in bot kontrolü ile parmak izi kontrolü. Fingerprint'in bot tespiti ürün sayfasını listeden çıkardık, çünkü canlı bir karar değil, yalnızca statik bir JSON örneği gösteriyor.

Ölçümler: sayfanın yüklenip yüklenmediği, sayfanın yazdığı haliyle karar ve bu kararın görünmesine kadar geçen süre (0,5 saniyede bir yoklama, 45 saniye zaman aşımı). Her ziyaret için sayfa metnini ve tam sayfa ekran görüntüsünü kaydettik. Ayrıştırılamayan bir karar "unparsed" olarak kaydedildi ve asla tahmin edilmedi. Dört headful ziyaret bu şekilde sonuçlandı: üç sayfa zaman aşımı ve güncelleme ortasında yakalanmış bir kayıt. Tablolarda bunlar n/a olarak sayılıyor.

Çalıştırmalar: veri merkezi, dönen ve sabit residential için araç ve koşul başına 3, headless ve ısınma için araç başına 1. Toplam 54 çalıştırma, 06:50 ile 08:02 UTC arasında.

Sonuçlar: tarayıcı düzeyindeki otomasyon kontrolleri

Tablo çalıştırmaları sayıyor: "3/3", sayfanın tarayıcıyı üç çalıştırmanın üçünde de işaretlediği anlamına geliyor. Her hücre ayrıştırılmış sonuç dosyasından geliyor.

AraçAğsannysoft başarısız satırlarBrowserScan işaretledideviceandbrowserinfo isBotCreepJS headlessFingerprint "Bot"Pixelscan bot uyarısı
Playwright (kontrol)Veri merkezi (Hetzner)WebDriver3/33/3%333/3: You are a bad bot (type: webdriver)3/3
Playwright (kontrol)Residential ABD, sabitWebDriver3/33/3%333/3: You are a bad bot (type: webdriver)3/3
PatchrightVeri merkezi (Hetzner)yok0/30/3%0Not detected (3/3)0/3
PatchrightResidential ABD, sabityok0/30/3%0Not detected (3/3)0/3
nodriverVeri merkezi (Hetzner)yok0/30/3%0Not detected (3/3)0/3
nodriverResidential ABD, sabityok0/30/3%0Not detected (3/3)0/2 (+1 n/a)
ZendriverVeri merkezi (Hetzner)yok0/30/3%0Not detected (3/3)0/3
ZendriverResidential ABD, sabityok0/30/3%0Not detected (3/3)0/3
CamoufoxVeri merkezi (Hetzner)Chrome0/30/3%0Not detected (3/3)0/3
CamoufoxResidential ABD, sabitChrome0/30/3%0Not detected (3/3)0/3

Tablonun göstermediği birkaç ayrıntı:

  • sannysoft'ta Camoufox'un tek başarısız satırı "Chrome (New): missing". Firefox tabanlı bir tarayıcı için bu beklenen bir sonuç, otomasyon sızıntısı değil.
  • CreepJS ayrıca "% like headless" puanı da veriyor. Bu puan her headful çalıştırmada Playwright için %50, Chrome tabanlı üç stealth araç için %44, Camoufox için %6 oldu. "% stealth" puanı her araçta %0'dı. CreepJS bu sayıların hiçbirini geçti/kaldı diye etiketlemiyor.
  • Pixelscan'in bot kontrolü iki kez farklı sonuç verdi. Patchright tek ısınma çalıştırmasında "Bot Behavior Detected" (CDP kutucuğu) aldı, Zendriver de dönen geçişte bir kez. İkisi de ekran görüntülerinde görülüyor. İki Pixelscan ziyareti daha n/a. Biri zaman aşımına uğradı. Diğerinde metin kaydımız sayfayı güncelleme ortasında yakaladı; bir an sonra alınan ekran görüntüsünde "You're Definitely a Human" yazıyor.
  • nowsecure.nl, veri merkezi IP'sinden çalışan düz Playwright dahil, her headful çalıştırmada sayfa içeriğini gösterdi ve ekranda bekleyen bir doğrulama kalmadı. Headful modda araçlar arasında hiçbir ayrım yapmadı.

Bu kontrollerin standart Playwright'ı neden yakaladığını (navigator.webdriver bayrağı, CDP Runtime.enable yan etkileri, başlatma flag'leri) Patchright incelememizde ve tarayıcı parmak izi rehberimizde anlatıyoruz.

Sonuçlar: IP'ye duyarlı sinyaller, veri merkezi ve residential

Sayfalardan yalnızca ikisi ağı puanlıyor. Fingerprint playground'u VPN, proxy, IP kara listesi ve bir şüphe puanı gösteriyor. Pixelscan'in parmak izi kontrolü proxy ve konum tutarlılığını gösteriyor. deviceandbrowserinfo ise testinin "IP itibarı veya kullanıcı davranışı kullanmadığını" açıkça söylüyor; kararlarının IP ile değişmemesi de bununla tutarlı.

AraçAğFingerprint proxy işaretiFingerprint VPN işaretiFingerprint şüphe puanıPixelscan "Proxy detected"Pixelscan konum kontrolüWebRTC proxy arkasındaki sunucu IP'sini sızdırıyor
Playwright (kontrol)Veri merkezi (Hetzner)0/30/3193/3Timezone spoofedn/a (proxy yok; gerçek IP beklenen sonuç)
Playwright (kontrol)Residential ABD, sabit2/30/325–270/3Timezone spoofed3/3
PatchrightVeri merkezi (Hetzner)0/30/30–63/3Timezone spoofedn/a (proxy yok; gerçek IP beklenen sonuç)
PatchrightResidential ABD, sabit3/30/38–200/3Timezone spoofed3/3
nodriverVeri merkezi (Hetzner)0/30/30–63/3Timezone spoofedn/a (proxy yok; gerçek IP beklenen sonuç)
nodriverResidential ABD, sabit3/32/310–230/3Timezone spoofed3/3
ZendriverVeri merkezi (Hetzner)0/30/30–63/3Timezone spoofedengellendi (3/3)
ZendriverResidential ABD, sabit3/30/38–240/3Timezone spoofedengellendi (3/3)
CamoufoxVeri merkezi (Hetzner)3/33/3173/3Timezone spoofedn/a (proxy yok; gerçek IP beklenen sonuç)
CamoufoxResidential ABD, sabit3/30/34–141/3eşleşti (ABD şehri gösterildi)0/3

Residential IP'nin işe yaradığı yerler

Pixelscan "Proxy detected" yazmayı bıraktı. Hiç proxy kullanılmamasına rağmen bunu her veri merkezi çalıştırmasında yazmıştı; bu da hosting ASN'sini proxy olarak okuduğunu düşündürüyor. Residential havuz üzerinden 15 sabit çalıştırmanın 1'inde yazdı. Camoufox ayrıca eşleşen bir konum aldı. geoip=True seçeneği saat dilimini, dil ayarını, konumu ve WebRTC IP'sini çıkış IP'sinden belirliyor, bu yüzden Pixelscan "Timezone spoofed" yerine bir ABD şehri gösterdi.

Zarar verdiği ya da hiçbir şey değiştirmediği yerler

Fingerprint'in proxy sinyali, üç proxy modunun hepsinde, proxy'li 34 çalıştırmanın 33'ünde residential çıkışları proxy IP'si olarak tanıdı ve birçoğuna sağlayıcı adı iliştirdi. Bunu, Fingerprint'in residential havuzlar hakkında istihbaratı olduğu şeklinde yorumluyoruz. Bu, her IP'nin bir şey sızdırdığı anlamına gelmiyor ve belirli bir sitenin bu sinyalle ne yapacağı hakkında hiçbir şey söylemiyor. Chrome tabanlı stealth araçlarda şüphe puanı proxy üzerinden düşmedi, yükseldi. Playwright'ınki 19'dan 25–27'ye çıktı, tek ısınma çalıştırması da 47 aldı.

Bunun bir kısmı büyük olasılıkla bizim kendi hatamız. Chrome tabanlı araçlar container'ın UTC saat dilimini korudu; bu yüzden UTC saatli bir ABD IP'si, proxy'li her çalıştırmada Pixelscan'de "Timezone spoofed" olarak okundu. Camoufox aynı mekanizmayı ters yönde gösteriyor. Helsinki veri merkezi IP'sinden yapılan GeoIP sorgusu çıkışı Europe/Berlin'e yerleştirirken ipinfo Helsinki dedi. Ardından Fingerprint, üç veri merkezi çalıştırmasının hepsinde bir VPN ("timezone mismatch") ve düşük güvenilirlikli bir veri merkezi proxy'si işaretledi; aynı IP'deki Chrome araçları ise bu işaretlerin hiçbirini almadı. Birbirini tutmayan bir IP ve saat dilimi, hangi yönde olursa olsun fark ediliyor.

WebRTC proxy arkasındaki sunucuyu sızdırdı

CreepJS ve Pixelscan, proxy'li her Playwright, Patchright ve nodriver çalıştırmasında sunucunun Hetzner adresini WebRTC IP'si olarak gösterdi. HTTP trafiği residential çıkıştan geçti, ancak UDP üzerinden giden STUN isteği geçmedi. Zendriver varsayılan olarak --webrtc-ip-handling-policy=disable_non_proxied_udp ve --force-webrtc-ip-handling-policy parametrelerini veriyor; CreepJS de onun tüm çalıştırmalarında WebRTC'yi engellenmiş olarak raporladı. Camoufox adresi proxy çıkışıyla değiştirdi. Engellenmiş bir WebRTC de bazı sitelerin puanlayabileceği bir sinyaldir. Bu sayfalardan herhangi birinin bunu cezalandırıp cezalandırmadığını test etmedik; Pixelscan cezalandırmadı. Aradıkları diğer uyuşmazlıklar için anti-bot sistemleri proxy'leri nasıl tespit eder yazımıza bakın.

Headless mod, IP'den daha büyük bir ipucuydu

Veri merkezi IP'sinden araç başına bir headless çalıştırma yaptık. Örneklem diğerlerinden küçük, ama yön net:

Araç (headless, veri merkezi IP'si, 1 çalıştırma)sannysoft başarısız satırlardeviceandbrowserinfo isBotCreepJS headlessFingerprint "Bot"nowsecure.nl
Playwright (kontrol)CHR_MEMORY:FAIL, HEADCHR_UA:FAIL, WebDriver1/1%1001/1: You are a bad bot (type: headless_chrome)45 sn sonra "Just a moment..." ekranında takıldı
PatchrightCHR_MEMORY:FAIL, HEADCHR_UA:FAIL1/1%671/1: You are a bad bot (type: headless_chrome)45 sn sonra "Just a moment..." ekranında takıldı
nodriverCHR_MEMORY:FAIL, HEADCHR_UA:FAIL1/1%671/1: You are a bad bot (type: headless_chrome)45 sn sonra "Just a moment..." ekranında takıldı
Zendriveryok1/1%33Not detected (1/1)45 sn sonra "Just a moment..." ekranında takıldı
CamoufoxChrome0/1%0Not detected (1/1)sayfa yüklendi

Patchright ve nodriver, yalnızca headless moda geçerek deviceandbrowserinfo ve Fingerprint'te temiz durumdan işaretli duruma düştü ("bad bot, type: headless_chrome"). sannysoft'ta HEADCHR_UA ve CHR_MEMORY satırları başarısız oldu. Zendriver dahil Chrome tabanlı her araç, nowsecure.nl'de Cloudflare'in "Just a moment..." sayfasında takılı kaldı. Headful modda ise düz Playwright dahil aynı araçlar doğrudan geçti. Zendriver, Fingerprint'in bot işaretinden kurtuldu ama deviceandbrowserinfo tarafından yine işaretlendi. Camoufox bu sayfaların hepsinde headless modda da headful moddaki gibi göründü.

Operasyonel iki bulgu: sabit oturumlar ve arka plan trafiği

Paralel ilk bağlantılar sabit oturumları bozdu

Sabit oturum kimliğiyle yapılan Chrome tabanlı çalıştırmalar çoğu zaman ilk sayfada bir IP, birkaç sayfa sonra başka bir IP gösterdi. Bu, 12 sabit çalıştırmanın 11'inde oldu. Camoufox 3 çalıştırmanın 3'ünde tek IP'de kaldı; büyük olasılıkla GeoIP sorgusu tarayıcı başlamadan önce tek bir istek yaptığı için. Durumu curl ile yeniden ürettik: yepyeni bir oturum kimliğiyle gönderilen altı paralel istek, iki denemede 3 ve 5 farklı IP döndürdü. Sonrasında sıralı istekler tek IP'de kaldı. Tarayıcıyı açmadan önce sıralı tek bir ısınma isteği eklemek, sorunu 4 çalıştırmanın 4'ünde çözdü. İlk proxy geçişimiz de gateway'in tanımadığı bir oturum parametresi kullanmıştı, bu yüzden her bağlantı sessizce yeni bir IP aldı. O geçiş yukarıda dönen koşul olarak raporlandı. İkisinden çıkan ders: sabitliğe güvenmeden önce iki sıralı istekle kontrol edin.

Bazı gerçek Chrome kurulumları proxy'niz üzerinden arka planda indirme yapıyor

Ölçülen residential trafikte, bu 9 sayfalık çalıştırma başına Playwright yaklaşık 7 MB, Patchright yaklaşık 8 MB (bir çalıştırmada 12 MB), Camoufox 9–11 MB kullandı. nodriver ve Zendriver çalıştırmalarının çoğu 40–61 MB kullandı. Host başına bayt kaydettiğimiz çalıştırmalarda bunun büyük kısmı bir Chrome arka plan indirmesi olan optimizationguide-pa.googleapis.com adresinden geliyordu. İki çalıştırma yalnızca yaklaşık 9 ve 15 MB kullandı, yani bu her seferinde olmuyor. Patchright da yeni bir profilde gerçek Chrome çalıştırıyor ama bunu göstermedi; demek ki aracın Chrome'u nasıl başlattığına bağlı. GB başına ödeme yapıyorsanız ölçeklendirmeden önce host başına baytları sayın.

Bu benchmark'ın göstermedikleri

  • Bu bir üretim anti-bot testi değil. Bu sayfalar çoğunlukla tarayıcı tarafındaki izleri kontrol ediyor. Ticari sistemler buna TLS ve HTTP/2 parmak izlerini, davranışı, IP geçmişini ve siteye özel modelleri ekliyor. Buradaki temiz sonuç gerekli bir eşik, yeterli değil. TLS parmak izi rehberimiz, bu sayfaların neredeyse hiç dokunmadığı katmanlardan birini anlatıyor.
  • Örneklem küçük: hücre başına 3 çalıştırma, tek gün, Finlandiya'da tek bir veri merkezi sunucusu, tek bir proxy ülkesi. Pixelscan'deki gibi tekil değişimler gürültüden ayrılamaz.
  • Etkileşim yoktu. Tıklama, kaydırma, form ya da fare yolu olmadığı için davranışsal tespit sınanmadı.
  • Bazı kontroller geçmiş tutuyor. Fingerprint playground'u cihaz başına geçmiş gösteriyor ("1 IP, 2 Linked IDs in the past 24 hours"), dolayısıyla tekrarlanan ziyaretler sonraki puanları etkilemiş olabilir.
  • Varsayılanlar ayarlanmadı. Chrome tabanlı araçlar UTC ve en-US'i korudu, Camoufox Linux ile sınırlandı ve hiçbir şey README'lerin varsayılanlarının ötesinde sıkılaştırılmadı. İnce ayarlı bir kurulum farklı puan alabilir. Bir sonraki testimizin konusu bu olurdu; ölçtüğümüz bir şey değil.
  • Sizin hedefleriniz farklı olacak. Veri merkezi mi residential IP mi kullanacağınız, neyi ve nereden topladığınıza bağlı. Maliyet tarafını scraping için residential ve datacenter yazımızda ele alıyoruz. Buna benzer bir şeyi gerçek bir siteye karşı çalıştırmadan önce robots.txt'yi, sitenin kullanım koşullarını ve kişisel veri kurallarını kontrol edin.

Kendiniz tekrarlayın

Test düzeneği yaklaşık 260 satır Python, 80 satırlık bir relay ve yalnızca kaydedilmiş sayfa metnini okuyan bir ayrıştırıcıdan oluşuyor. Aşağıda, verilerimizde temiz sonuç veren Patchright kurulumu var; yukarıdaki iki düzeltme de içinde: Chrome paralel bağlantılar açmadan önce sabit oturumu sabitleyen bir ısınma isteği ve Zendriver'ın WebRTC flag'leri. Bunu deviceandbrowserinfo'ya karşı bir ABD residential çıkışı üzerinden bir kez çalıştırdık ("isBot": false); bu kontrol 54 çalıştırmaya dahil değil.

import asyncio, os, tempfile, urllib.parse, urllib.request, uuid
from patchright.async_api import async_playwright

USER = os.environ["PROXY_USER"]          # proxy kullanıcı adınız
PASS = os.environ["PROXY_PASS"]          # proxy parolanız; asla koda gömmeyin
GATE = "gate.proxyhat.com:8080"

def sticky_username() -> str:
    # her tarayıcı açılışında yeni bir oturum; -sid- çıkış IP'sini bağlantılar arasında korur
    return f"{USER}-country-US-sid-{uuid.uuid4().hex[:10]}-ttl-30m"

def warm_up(username: str) -> str:
    # Chrome paralel bağlantılar açmadan önce oturumu sabitleyen tek bir sıralı istek
    url = f"http://{urllib.parse.quote(username)}:{urllib.parse.quote(PASS)}@{GATE}"
    opener = urllib.request.build_opener(urllib.request.ProxyHandler({"http": url, "https": url}))
    return opener.open("https://api.ipify.org", timeout=30).read().decode()

async def main():
    username = sticky_username()
    print("session pinned to", warm_up(username))
    async with async_playwright() as p:
        ctx = await p.chromium.launch_persistent_context(
            user_data_dir=tempfile.mkdtemp(),
            channel="chrome",            # Patchright README'sinin önerdiği gibi gerçek Google Chrome
            headless=False,              # sunucuda Xvfb altında çalıştırın
            no_viewport=True,
            proxy={"server": f"http://{GATE}", "username": username, "password": PASS},
            args=["--webrtc-ip-handling-policy=disable_non_proxied_udp",
                  "--force-webrtc-ip-handling-policy"],
        )
        page = await ctx.new_page()
        await page.goto("https://deviceandbrowserinfo.com/are_you_a_bot")
        await page.wait_for_function("document.body.innerText.includes('\"isBot\"')", timeout=45000)
        print(await page.evaluate("document.body.innerText.match(/\"isBot\": (true|false)/)[0]"))
        await ctx.close()

asyncio.run(main())

Kullanıcı adı soneki ProxyHat söz dizimi (hedefleme için -country-US, sabit oturum için -sid-…-ttl-30m). Kendi sağlayıcınızın biçimini kullanın. Uzun bir çalıştırmadan önce bir çıkışı kontrol etmek için ücretsiz proxy denetleyicisi bir sitenin ne gördüğünü gösterir. Bir hücreyi bizim gibi puanlamak için:

  1. Her çalıştırmada yeni bir tarayıcı başlatın, her sayfayı yeni sekmede ziyaret edin ve sayfanın kendi karar metni ekranda görünene kadar bekleyin. Sabit bir bekleme süresi kullanmayın. CreepJS'e, hesaplamaya devam ettiği için puanları göründükten sonra 6 saniye ek süre verdik.
  2. Sekmeyi kapatmadan önce document.body.innerText içeriğini ve tam sayfa ekran görüntüsünü kaydedin.
  3. Yalnızca sayfanın yazdığını ayrıştırın; örneğin deviceandbrowserinfo'daki "isBot" JSON'unu, BrowserScan'deki Normal/Robot çiftlerini ve CreepJS'teki "N% headless" değerini. Geri kalan her şey "unparsed".
  4. Başta çıkış IP'sini kaydedin ve son sayfanın gösterdiği IP ile karşılaştırın. Farklıysa oturumunuz sabit değildi.
  5. Arka plan trafiği faturadan önce görünsün diye her çalıştırmada proxy baytlarını sayın.

Bu sonuçlarla ne yapmalı?

Önce tarayıcıyı düzeltin: standart Playwright iki IP'den de yakalandı, dört stealth araç headful modda ikisinden de yakalanmadı. Headless'ın hedeflerinizi geçtiğini ölçmediyseniz headful çalıştırın (sunucularda Xvfb ile). Ardından ağ tarafını tutarlı hale getirin: saat dilimini çıkış IP'siyle eşleştirin, WebRTC'yi engelleyin ya da proxy'den geçirin ve sabit oturumunuzun gerçekten sabit olduğunu doğrulayın. Residential proxy'yi ancak bundan sonra ekleyin ve proxy'ye duyarlı sağlayıcıların birçok residential IP'yi yine de tanıyacağını bekleyin. IP, işe veri merkezi trafiği etiketiyle başlayıp başlamayacağınızı belirler. Bot olarak işaretlenip işaretlenmeyeceğinizi ise tarayıcı belirler.

Sık sorulan sorular

Residential proxy, Playwright'ın bot olarak tespit edilmesini engeller mi?

Test ettiğimiz sayfalarda engellemedi. Standart Playwright, hem veri merkezi IP'sinden hem de ABD residential proxy'si üzerinden yapılan 10 headful çalıştırmasının hepsinde deviceandbrowserinfo, BrowserScan ve Fingerprint playground'u tarafından işaretlendi. İşaretler, IP'nin değiştirmediği navigator.webdriver gibi tarayıcı tarafındaki sinyallerden geldi.

Bot tespit testlerini geçmede Patchright, nodriver ve Camoufox'tan hangisi daha iyi?

Headful modda üçü de, Zendriver ile birlikte, neredeyse her çalıştırmada sannysoft, BrowserScan, deviceandbrowserinfo, Fingerprint playground'u ve Pixelscan'deki tüm otomasyon kontrollerini geçti. Pixelscan Patchright'ı bir kez, Zendriver'ı bir kez işaretledi. Birer headless çalıştırmada Patchright ve nodriver birkaç sayfa tarafından, Zendriver deviceandbrowserinfo tarafından işaretlendi, Camoufox ise hiçbiri tarafından işaretlenmedi. Ortaya çıkan farklar otomasyon kararlarında değil, WebRTC ve saat dilimi tarafındaydı.

Proxy kullanmama rağmen tarayıcım neden sunucumun IP'sini gösteriyor?

WebRTC, HTTP proxy'nin dışından UDP üzerinden bir STUN isteği gönderebilir ve bu da makinenin gerçek genel IP'sini açığa çıkarır. Testlerimizde Playwright, Patchright ve nodriver, proxy'li her çalıştırmada sunucu IP'sini bu yolla sızdırdı. Zendriver'ın varsayılan Chrome flag'leri proxy'den geçmeyen UDP'yi engelliyor, Camoufox ise adresi proxy çıkışıyla değiştirdi.

Tarayıcıyı açınca sabit proxy oturumum neden IP değiştiriyor?

Testlerimizde yepyeni bir oturum kimliğiyle yapılan birkaç paralel ilk bağlantı, oturum tek bir IP'ye oturmadan önce farklı çıkış IP'lerinden çıktı. Chrome başlarken çok sayıda bağlantı açtığı için 12 çalıştırmanın 11'inde ilk sayfa ile sonraki sayfalar farklı IP'ler gördü. Tarayıcıyı açmadan önce yeni oturumda sıralı tek bir istek göndermek, 4 çalıştırmanın 4'ünde tek IP'yi korudu.

Başlamaya hazır mısınız?

195'den fazla ülkede residential, ISP ve mobil proxy'ler. Ücretsiz hesap oluşturun.

Ücretsiz hesap oluştur
← Bloga Dön