Klasik Selenium ve Puppeteer bağlamaları, giderek Cloudflare, DataDome ve PerimeterX seviyesindeki anti-bot sistemleriyle karşılaşmaktadır. Onların yerini, başlangıçta tespit aşma odaklı olarak tasarlanmış yeni çerçeveler olan Scrapling, Botasaurus ve nodriver alıyor. Ancak, en gelişmiş çerçeve bile doğru ayarlanmış proxy olmadan işe yaramaz. Bu yazıda, her üç araçta proxy nasıl bağlanır, hangi hataların etkinliği öldürdüğünü ve belirli bir veri çıkarma görevi için IP türünü nasıl seçeceğimizi inceleyeceğiz.
Scrapling, Botasaurus ve nodriver, Selenium'dan neyle farklıdır?
Üç çerçeve de, Selenium ve klasik Puppeteer'in çok kolay tespit edilebilir hale gelmesine bir yanıt olarak ortaya çıktı. Anti-bot sistemleri, CDP protokolü, navigator.webdriver, canvas renderleme, olay zamanlamaları gibi onlarca parametreyi kontrol ediyor — ve klasik sürücüler, bunların neredeyse her birinde belirgin izler bırakıyor.
Scrapling — HTML'yi uyumlu bir şekilde ayrıştıran ve Camoufox tabanlı StealthyFetcher aracılığıyla tarayıcı taklidi yapma imkanı sunan bir Python kütüphanesidir. Hızlı ayrıştırma gerektiren ve aynı zamanda sitenin TLS parmak izini aktif olarak kontrol ettiği durumlar için idealdir.
Botasaurus — modifiye edilmiş Chromium tabanlı bir çerçeve (undetected-chromedriver altında) olup, tarayıcı profilleri üzerinde otomatik yönetim ve üçüncü parti hizmetler aracılığıyla captcha çözme desteği ile kitlesel paralel ayrıştırma için optimize edilmiştir.
nodriver — aynı yazar tarafından geliştirilen undetected-chromedriver'ın halefidir, Selenium WebDriver'dan tamamen vazgeçmiş ve doğrudan CDP (Chrome DevTools Protocol) üzerinden çalışmaktadır, bu da otomasyonun tespit edilebilir kalıntılarının önemli bir kısmını ortadan kaldırır.
Üç çerçevenin ortak özelliği, tarayıcı parmak izi seviyesinde tespiti azaltmalarıdır, ancak IP itibar sorununu çözmezler. Eğer istekler, DataDome veya Cloudflare kara listelerinde zaten yer alan bir veri merkezi IP'sinden geliyorsa, hiçbir tarayıcı yamanması captcha veya 403 hatasından kurtaramaz.
Scrapling'de proxy ayarı
Scrapling, hem hızlı HTTP modunda (Fetcher) hem de tarayıcı modunda (StealthyFetcher) proxy desteği sunar. JS renderleme olmadan statik ayrıştırma için proxy, istek parametrelerinde doğrudan iletilir:
from scrapling.fetchers import Fetcher
response = Fetcher.get(
"https://example.com",
proxy="http://user:[email protected]:9000"
)
print(response.status)
Tam özellikli bir tarayıcı modu (Camoufox'ta StealthyFetcher) için proxy, sunucu, kullanıcı adı ve şifre gibi ayrı alanlarla bir sözlük aracılığıyla iletilir — bu önemlidir çünkü Camoufox, proxy kimlik doğrulamasını normal Chromium'dan farklı bir şekilde işler:
from scrapling.fetchers import StealthyFetcher
response = StealthyFetcher.fetch(
"https://example.com",
proxy={
"server": "gate.proxycove.com:9000",
"username": "user",
"password": "pass"
},
headless=True
)
print(response.status)
Yaygın bir hata, proxy'yi tarayıcı moduna, HTTP isteklerinde olduğu gibi tam bir dize olarak iletmektir. Bu durumda Camoufox ya kimlik doğrulamayı göz ardı eder ya da proxy sunucusuna bağlanma aşamasında zaman aşımına uğrar. ERR_NO_SUPPORTED_PROXIES hatasını görüyorsanız — lütfen özellikle ayrı alanlarla bir sözlük formatını kontrol edin.
Botasaurus'ta proxy ayarı
Botasaurus, sürücüyü yapılandırmak için @browser dekoratörünü kullanır
ve proxy, bu dekoratörün parametresi olarak veya doğrudan başlatma fonksiyonuna iletilir:
from botasaurus.browser import browser, Driver
@browser(
proxy="http://user:[email protected]:9000"
)
def scrape_data(driver: Driver, data):
driver.get("https://example.com")
return driver.page_html
scrape_data()
Her paralel görev için farklı proxy'ler bağlamak gerekiyorsa (bu, Botasaurus ile kitlesel ayrıştırma için kritik öneme sahiptir), proxy'yi sabit kodlamak yerine dinamik olarak veri listesi aracılığıyla iletmek daha iyidir:
from botasaurus.browser import browser, Driver
@browser
def scrape_with_proxy(driver: Driver, data):
driver.config.proxy = data["proxy"]
driver.get(data["url"])
return driver.page_html
tasks = [
{"url": "https://example.com/page1", "proxy": "http://user:pass@ip1:port"},
{"url": "https://example.com/page2", "proxy": "http://user:pass@ip2:port"},
]
scrape_with_proxy(tasks)
Botasaurus, görevleri multiprocessing ile mükemmel bir şekilde paralelleştirir, bu nedenle kitlesel ayrıştırmada yeterli IP havuzuna sahip proxy kullanmak önemlidir — aksi takdirde birkaç iş parçacığı aynı adrese çarpışır, bu da otomasyonu anında anti-bota ifşa eder.
nodriver'da proxy ayarı
nodriver, Selenium katmanına ihtiyaç duymadan doğrudan CDP'ye bağlanarak çalışır, bu nedenle proxy burada tarayıcı başlatma argümanları aracılığıyla ayarlanır, ayrı bir API üzerinden değil. Kimlik doğrulaması olmayan proxy için her şey basittir:
import nodriver as uc
import asyncio
async def main():
browser = await uc.start(
browser_args=["--proxy-server=http://gate.proxycove.com:9000"]
)
page = await browser.get("https://example.com")
await asyncio.sleep(3)
browser.stop()
asyncio.run(main())
Sorun, Chromium'un doğrudan --proxy-server ile kimlik doğrulama bilgilerini desteklememesidir.
nodriver'da kimlik doğrulamalı proxy'ler için ya kimlik doğrulaması gerektirmeyen yerel bir proxy tüneli kurmak (örneğin, px veya 3proxy aracılığıyla) ya da CDP olayı Fetch.authRequired'ı işlemek gerekir:
import nodriver as uc
import asyncio
async def main():
browser = await uc.start(
browser_args=["--proxy-server=http://gate.proxycove.com:9000"]
)
page = await browser.get("https://example.com")
async def auth_handler(event):
await page.send(uc.cdp.fetch.continue_with_auth(
request_id=event.request_id,
auth_challenge_response=uc.cdp.fetch.AuthChallengeResponse(
response="ProvideCredentials",
username="user",
password="pass"
)
))
page.add_handler(uc.cdp.fetch.AuthRequired, auth_handler)
await asyncio.sleep(5)
browser.stop()
asyncio.run(main())
Bu, üç çerçeve arasında en az belirgin olan noktadır — birçok geliştirici, neden kimlik doğrulamanın çalışmadığını anlamak için saatler harcar, CDP'deki Fetch domainini bilmeden.
Proxy döngüsü ve anti-botlarla mücadele
Mükemmel ayarlanmış bir tarayıcı parmak izi bile, bir IP'ye dakikada 50-100'den fazla istek gittiğinde kurtaramaz. DataDome ve Cloudflare, belirli bir adresten gelen isteklerin sıklığını ve eylemler arasındaki zaman kalıplarını analiz eder — çok düzenli aralıklar da şüpheli görünür.
Üç çerçeve için çalışan bir döngü şeması aynıdır:
- IP'nin otomatik döngüsünü sağlayan bir gateway kullanın — her istekte adres değiştirme mantığı yazmanıza gerek yoktur.
- Oturumlu görevler (giriş, çok sayfalı gezinme) için oturum başına IP'yi sabit bir parametre ile kaydedin.
- Statik sayfaların basit ayrıştırması için her istekte veya her 5-10 istekte bir IP döndürün.
- İstekler arasında rastgele gecikmeler ekleyin (1-4 saniye) — bu, zaman kalıplarına göre tespiti azaltır.
Bağlantı dizesinde, oturum kimliğinin 10 dakika boyunca aynı çıkış IP'sini koruduğu bir sticky oturum örneği:
proxy = "http://user-session-abc123:[email protected]:9000"
Botasaurus için bu tür bir şema özellikle faydalıdır, çünkü paralel ayrıştırmada her işlem kendi benzersiz oturum kimliğini alabilir ve adres listesini manuel olarak yönetmeden farklı IP'lerin kararlı bir havuzunu elde edersiniz.
Her çerçeve için hangi proxy türünü seçmelisiniz?
Proxy türü, ayrıştırma başarısını çerçeve seçimi kadar etkiler. Aşağıda görevlere göre bir karşılaştırma:
| Görev | Tavsiye edilen proxy türü | Neden |
|---|---|---|
| Cloudflare/DataDome ile korunan sitelerin ayrıştırılması | Konut proxy'leri | Gerçek ev kullanıcılarının IP'leri nadiren anti-bot kara listelerine girer |
| Sıkı koruma olmadan kitlesel ayrıştırma | Veri merkezi proxy'leri | Daha yüksek hız, büyük hacimlerde daha düşük maliyet |
| Mobil sitelerde gerçek kullanıcı taklidi | Mobil proxy'ler | İletişim operatörlerinin CGNAT adresleri, anti-botlar tarafından en yüksek güven seviyesine sahiptir |
Scrapling'in StealthyFetcher modunda konut proxy'leri en büyük etkiyi sağlar, çünkü Camoufox zaten tarayıcı parmak izi sorununu çözer — geriye sadece IP ile ifşa olmamak kalır. Botasaurus için kitlesel paralel ayrıştırmada veri merkezi proxy'leri genellikle hız/fiyat oranı açısından en iyisidir, hedef site DataDome seviyesinde gelişmiş bir koruma kullanmıyorsa.
Proxy ve tarayıcı otomasyonu bağlamasında yaygın hatalar
Pratikte, çoğu ayrıştırma başarısızlığı, çerçeve ile değil, proxy'nin yanlış yapılandırılmasıyla ilgilidir. İşte en sık karşılaşılan hataların listesi:
- Botasaurus için tüm paralel akışlar için aynı IP. Anti-bot, bir adresten 20 eşzamanlı oturum gördüğünde, onu dakikalar içinde engeller.
- Scrapling'in tarayıcı moduna proxy'yi dize olarak iletmek. Camoufox, ayrı alanlarla bir sözlük gerektirir — aksi takdirde kimlik doğrulama geçmez.
- nodriver'da CDP Fetch domainini göz ardı etmek. authRequired işleyicisi olmadan, kimlik doğrulamalı proxy bağlanamaz, tarayıcı yüklemede takılır.
- Oturumlu işlemlerde döngü eksikliği. Kimlik doğrulamalı bir oturum ortasında IP değiştirmek, otomasyonu anında ifşa eder — sticky oturumlar kullanın.
- Proxy'nin coğrafi konumu ile tarayıcının yerel ayarları arasında uyumsuzluk. Almanya'dan gelen bir IP'nin Accept-Language: ru başlıkları ile — dolandırıcılık puanlama sistemleri için klasik bir bot işareti.
- Döngü ile bile çok agresif istek sıklığı. IP döngüsü, istekler arasında duraklama gerekliliğini ortadan kaldırmaz — davranış kalıbı da analiz edilir.
Tarayıcı modunda proxy ile çalışırken DNS sızıntılarını ayrıca kontrol etmek önemlidir — bazen tarayıcı, alan adlarını sistem DNS'i aracılığıyla çözer, proxy tüneli aracılığıyla değil, bu da istek IP'si ile çözüm IP'si arasında senkronizasyon bozukluğu yaratır, bu da koruma sistemleri tarafından kolayca tespit edilir.
Sonuç
Scrapling, Botasaurus ve nodriver, tarayıcı parmak izi seviyesinde tespiti klasik Selenium'dan çok daha iyi çözer, ancak hiçbiri kaliteli proxy'nin önemini ortadan kaldırmaz. Doğru kimlik doğrulama ayarı (özellikle nodriver'da CDP aracılığıyla), IP döngüsü ve belirli bir anti-bot sistemi için uygun proxy türünün seçimi — uzun vadede ayrıştırma kararlılığını belirleyen üç faktördür.
Eğer Cloudflare veya DataDome gibi gelişmiş korumaya sahip siteleri ayrıştırıyorsanız, konut proxy'leri ile başlayın — bunlar IP itibarları sayesinde en yüksek başarılı istek oranını sağlar. Sıkı koruma olmayan kitlesel görevler için veri merkezi proxy'leri, büyük hacimlerde hız ve maliyet açısından en iyi seçim olmaya devam etmektedir.