Browser Proxy'ler (headless tarayıcı proxy'si)
Browser proxy nedir
Browser proxy'ler (headless tarayıcı proxy'si), HTTP isteklerini basitçe iletmek yerine sayfayı yüklemek için headless modda tam donanımlı bir tarayıcı (Chrome, Firefox) başlatan bir proxy hizmetidir. Tarayıcı JavaScript'i çalıştırır, yönlendirmeleri işler, çerezleri kabul eder ve sayfayı tam olarak gerçek bir kullanıcının göreceği gibi render eder.
Bu, sıradan HTTP proxy'lerinin temel bir sorununu çözer: JavaScript ile yüklenen sayfalardan içerik alamazlar.
Sıradan proxy'lerin sorunu
Statik içerik (HTML)
Sıradan bir proxy HTTP GET isteği gönderir ve HTML alır. Bu, klasik web siteleri için çalışır.
Dinamik içerik (SPA)
Modern web siteleri (React, Vue, Angular) JavaScript içeren boş bir HTML döndürür. Asıl içerik istemci tarafında yüklenir ve render edilir. Sıradan bir proxy boş bir sayfa alır.
JavaScript koruması
Cloudflare, DataDome, PerimeterX JavaScript challenge'larının çalıştırılmasını doğrular. Sıradan bir proxy bunları geçemez.
Browser proxy'ler nasıl çalışır
İstek işleme akışı
- İstemci browser proxy API'sine bir URL gönderir
- Proxy headless bir tarayıcı (Chrome/Chromium) başlatır
- Tarayıcı sayfayı seçilen proxy IP'si üzerinden yükler
- Sayfadaki tüm JavaScript çalıştırılır
- JavaScript challenge'ları ve korumaları aşılır
- Sayfa tamamen render edilir
- Proxy HTML/veri/ekran görüntüsünü çıkarır
- Sonuç istemciye döndürülür
Altyapı bileşenleri
Browser Pool — Kullanıma hazır headless Chrome/Firefox örneklerinden oluşan bir küme. Her istek izole bir örnek alır.
Stealth değişiklikleri — Headless mod tespitini gizleyen yamalar (puppeteer-extra-plugin-stealth, undetected-chromedriver).
Proxy entegrasyonu — Her tarayıcı örneği gerçekçi bir IP için residential/mobil proxy üzerinden bağlanır.
Kaynak yönetimi — Bellek ve CPU yönetimi, takılan örneklerin sonlandırılması, istek kuyruğu.
Avantajlar
1. Tam JavaScript render'ı
SPA'lardan, lazy-load edilen öğelerden ve sonsuz kaydırmadan içeriğe erişim. Sayfayı tam olarak gerçek bir kullanıcının gördüğü gibi alırsınız.
2. JavaScript korumalarını aşma
Cloudflare JS Challenge, PerimeterX, DataDome ve JavaScript çalıştırmasını doğrulayan diğer korumaların aşılması.
3. Gerçekçi fingerprint
Gerçek bir tarayıcı, hakiki bir tarayıcının tüm özelliklerine sahiptir: Canvas, WebGL, Audio fingerprint, navigator özellikleri.
4. Çerez yönetimi
JavaScript ile ayarlanan HttpOnly ve Secure çerezler dahil, çerezlerin otomatik işlenmesi.
5. Sayfa etkileşimi
Tıklama, kaydırma, form doldurma ve öğelerin görünmesini bekleme imkânı.
Dezavantajlar
1. Yüksek kaynak tüketimi
Her Chrome örneği 50-300 MB RAM tüketir. Binlerce eşzamanlı isteğe ölçeklemek güçlü bir altyapı gerektirir.
2. Düşük hız
İstek başına 3-30 saniye (sayfa yükleme, JS çalıştırma, render). Bu, sıradan bir HTTP isteğinden 10-100 kat daha yavaştır.
3. Yüksek maliyet
Kaynaklar pahalıdır — sunucuda headless Chrome, basit bir HTTP proxy'den belirgin şekilde daha pahalıya mal olur.
4. Ölçekleme karmaşıklığı
Orkestrasyon sistemleri (Kubernetes), kaynak yönetimi ve istek kuyrukları gerektirir.
Browser proxy ile sıradan HTTP proxy karşılaştırması
| Parametre | HTTP Proxy | Browser Proxy |
|---|---|---|
| JavaScript | Yok | Tam destek |
| SPA siteleri | Çalışmaz | Çalışır |
| JS koruması | Başarısız | Geçer |
| Hız | Milisaniye | Saniye |
| RAM | Minimum | İstek başına 50-300 MB |
| Maliyet | Düşük | Yüksek |
| Eşzamanlılık | Binlerce | Onlarca-Yüzlerce |
Browser proxy araçları
Puppeteer (Node.js)
Google'ın Chrome'u kontrol etmeye yarayan kütüphanesi. Headless tarayıcı otomasyonunda sektör standardı.
Playwright (Node.js/Python/Java/C#)
Microsoft'un Puppeteer alternatifi; Chrome, Firefox ve Safari destekler. Çapraz tarayıcı otomasyonu.
Selenium
Tarayıcı otomasyonu için klasik araç. Tüm büyük tarayıcıları destekler.
Browserless
Bulutta headless Chrome çalıştırmak için barındırılan bir hizmet. Entegrasyon için API.
Splash (Scrapinghub)
Scrapy ile entegre, hafif bir JavaScript render hizmeti.
Optimizasyon
Kaynak tüketimini azaltma
- Görsel, font ve video yüklemesini engelleme
- Gereksiz Chrome özelliklerini kapatma
- Hafif tarayıcılar kullanma (tam Chrome yerine Chromium)
Browser pool
- Yeni örnek oluşturmak yerine örnekleri yeniden kullanma
- Ön ısıtma (warm pool)
- İstekler arasında durumu temizleme
Akıllı render
- Yalnızca gerekli öğeleri bekleme (tam sayfa yüklemesini değil)
- Gerekli veri alındıktan sonra erken durdurma
- Tek örnekte birden fazla sayfayı paralel işleme
Sonuç
Browser proxy'ler, JavaScript ağırlıklı modern web siteleriyle çalışmak için vazgeçilmez bir araçtır. Sıradan proxy'lerden daha pahalı ve daha yavaştırlar, ancak HTTP proxy'lerin erişemediği sorunları çözerler: SPA render'ı, JS korumalarını aşma ve gerçek bir tarayıcıyı tam olarak taklit etme. En uygun strateji, statik sayfalar için sıradan proxy'leri, dinamik sayfalar için browser proxy'leri kullanmaktır.
