İçeriğe geç

Scrapy ve Selenium için Residential Proxy'ler: Veri Toplama Verimliliğini Artırma

Инструменты
Scrapy ve Selenium için Residential Proxy'ler: Veri Toplama Verimliliğini Artırma
Residential proxy'ler modern web scraping'in en büyük darboğazını çözer: IP itibarı ve hız limitleri. Scrapy ve Selenium isteklerini gerçek ev kullanıcılarının IP adresleri üzerinden yönlendiren geliştiriciler, veri merkezi aralıklarını işaretleyen gelişmiş antibot sistemlerini aşabilir ve büyük ölçekli veri toplama projelerinde yüksek başarı oranı elde eder.

Güven Altyapısı: Residential Proxy'ler Neden Şart?

Web scraping, basit HTML ayrıştırmadan yüksek riskli bir kedi-fare oyununa dönüştü. Modern siteler, gelen her isteğin itibarını analiz eden Advanced Bot Protection (ABP) sistemleri kullanıyor. Veri merkezi proxy'leri hızlı ve ucuz olsa da bilinen sunucu aralıklarından gelir (AWS, DigitalOcean veya Google Cloud'a ait ASN'ler). Hedef sunucu tek bir veri merkezi aralığından dakikada 5.000 istek gördüğünde anında engelleme uygular veya CAPTCHA gösterir. GProxy gibi sağlayıcıların sunduğu residential proxy'ler, internet servis sağlayıcılarının (ISP) gerçek hanelere atadığı IP adreslerini kullanır. Bu IP'ler organik trafikten ayırt edilemediği için yüksek bir "trust score" taşır. Hedef site açısından residential proxy'den gelen bir istek, evinin salonundan gezinen bir kişi gibi görünür. Bu da daha yüksek eşzamanlılığa ve belirgin biçimde daha düşük hata oranlarına imkân verir. Asıl avantaj IP havuzunun çeşitliliğinde. Residential bir ağda yalnızca IP değiştirmezsiniz; coğrafi konum, ISP ve cihaz imzası da değişir. Bu, özellikle binlerce sayfaya yayılan dağıtık taramalarda antibot algoritmalarının scraping etkinliğinizi ilişkilendirmesini matematiksel olarak zorlaştırır.
Scrapy ve Selenium için residential proxy'ler: veri toplama verimliliğini artırma

Residential Proxy'leri Scrapy ile Entegre Etmek

Scrapy, asenkron mimarisi sayesinde yüksek performanslı tarama için sektör standardıdır. Residential proxy'lerle verimi en üst düzeye çıkarmak için Scrapy'yi, twisted reactor'ü tıkamadan proxy rotasyonunu ve kimlik doğrulamayı yönetecek şekilde yapılandırmalısınız.

Proxy Rotasyonu için Middleware Yapılandırması

GProxy'yi Scrapy ile kullanmanın en verimli yolu, özel bir downloader middleware yazmak veya yerleşik HttpProxyMiddleware'i kullanmaktır. Residential proxy'ler genellikle backconnect gateway (çıkış IP'sini döndüren tek bir giriş noktası) kullandığından uygulama oldukça basittir. settings.py dosyanızda proxy kimlik bilgilerinizi tanımlayın ve middleware'i etkinleştirin:

# settings.py

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
    'myproject.middlewares.GProxyMiddleware': 410,
}

GPROXY_USER = 'your_username'
GPROXY_PASS = 'your_password'
GPROXY_ENDPOINT = 'http://proxy.gproxy.com:8000'
Ardından, proxy'yi her isteğe enjekte edecek bir middleware oluşturun:

# middlewares.py

import base64

class GProxyMiddleware:
    def process_request(self, request, spider):
        user_pass = f"{spider.settings.get('GPROXY_USER')}:{spider.settings.get('GPROXY_PASS')}"
        creds = base64.b64encode(user_pass.encode()).decode()
        
        request.meta['proxy'] = spider.settings.get('GPROXY_ENDPOINT')
        request.headers['Proxy-Authorization'] = f'Basic {creds}'

Residential IP'ler için Scrapy Ayarlarını Optimize Etmek

Residential proxy'lerde trafik gerçek bir ev ağından geçtiği için gecikme, veri merkezi proxy'lerine göre daha yüksektir. Scrapy spider'ınızın timeout almasını veya proxy gateway'ini zorlamasını engellemek için şu ayarları düzenleyin:
  • DOWNLOAD_TIMEOUT: Residential ağ sıçramalarını hesaba katmak için 30-60 saniyeye çıkarın.
  • CONCURRENT_REQUESTS: Scrapy yüzlerce isteği kaldırabilse de 16-32 ile başlayın ve proxy havuzunun performansına göre artırın.
  • RETRY_TIMES: 5 veya daha yükseğe ayarlayın. Residential IP'ler zaman zaman kararsız olabilir; hızlı bir yeniden deneme genelde yeni bir IP ile sorunu çözer.

Selenium ve Residential Proxy'ler: Dinamik İçerikle Başa Çıkmak

Selenium, Single Page Application (SPA) yapılarıyla veya veriyi göstermek için yoğun JavaScript çalıştıran sitelerle uğraşırken çoğu zaman gereklidir. Ancak Selenium kaynak tüketimi yüksek ve Scrapy'den yavaştır. Residential proxy'leri Selenium ile kullanmak farklı bir yaklaşım gerektirir; çünkü standart WebDriver uygulamaları proxy kimlik doğrulamasını popup olmadan doğal biçimde desteklemez.

Sorunsuz Entegrasyon için Selenium-Wire Kullanımı

Proxy kimlik doğrulama popup'ını atlamak ve GProxy kimlik bilgilerini programatik olarak yönetmek için tercih edilen araç selenium-wire'dır. Selenium'un yeteneklerini genişleterek başlık düzenlemeye ve proxy enjeksiyonuna imkân verir.

from seleniumwire import webdriver

options = {
    'proxy': {
        'http': 'http://user:[email protected]:8000',
        'https': 'https://user:[email protected]:8000',
        'no_proxy': 'localhost,127.0.0.1'
    }
}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get('https://browserleaks.com/ip')

# Veriyi çıkarın veya işlemleri gerçekleştirin
print(driver.page_source)
driver.quit()

Selenium'da Bant Genişliği Tüketimini Azaltmak

Residential proxy'ler genellikle bant genişliği (GB) üzerinden faturalandırılır. Selenium varsayılan olarak sayfadaki her görseli, CSS dosyasını ve yazı tipini yükler; bu da veri bakiyenizi hızla tüketebilir. Verimi artırmak için gereksiz varlıkları devre dışı bırakın:

chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
chrome_options.add_argument("--headless") # Performans için şart

driver = webdriver.Chrome(options=chrome_options, seleniumwire_options=options)

Proxy Yoğun Görevlerde Scrapy ile Selenium Karşılaştırması

Scrapy ile Selenium arasındaki seçim, hedef sitenin karmaşıklığına ve residential bant genişliği bütçenize bağlıdır.
Özellik Scrapy Selenium
Çalışma Hızı Yüksek (asenkron) Düşük (tarayıcı yükü)
Bant Genişliği Verimliliği Yüksek (yalnızca gereken veriyi ister) Düşük (tüm tarayıcı varlıklarını yükler)
Proxy Uyumluluğu Middleware ile yerleşik Kimlik doğrulama için 3. parti araç gerekir
JavaScript Desteği Scrapy-Playwright/Splash gerekir Yerleşik destek
Tespit Riski Orta (başlık ayarı gerekir) Yüksek (stealth eklentileri gerekir)
Scrapy ve Selenium için residential proxy'ler: veri toplama verimliliğini artırma

İleri Düzey Stratejiler: Rotasyon, Sticky Session ve Coğrafi Hedefleme

GProxy residential IP'lerinden gerçek değeri almak için oturum yönetimini ve coğrafi hedeflemeyi kullanmalısınız.

Çok Adımlı Scraping için Sticky Session

Her istekte IP değiştirmek geniş taramalar için idealdir; ancak bazı görevler (örneğin sepete ürün ekleyip ödeme adımına geçmek) belirli bir süre aynı IP adresini gerektirir. Buna "sticky session" denir. GProxy'de sticky session'ı genellikle kullanıcı adı dizenize bir oturum kimliği ekleyerek başlatırsınız: user-country-us-session-77821:pass. Bu dizeyi kullandığınız sürece gateway sizi 30 dakikaya kadar aynı residential çıkış düğümünde tutmaya çalışır.

Yerelleştirilmiş Veri için Coğrafi Hedefleme

E-ticaret ve seyahat siteleri çoğu zaman kullanıcının konumuna göre farklı fiyatlar gösterir. Genel bir küresel proxy havuzu kullanmak tutarsız verilere yol açar. Residential proxy'ler belirli ülkeleri, eyaletleri, hatta şehirleri hedeflemenize imkân verir.
  • Fiyat Karşılaştırma: Amazon fiyatlarını Almanya ile ABD'de karşılaştırmalı olarak çekmek.
  • Reklam Doğrulama: Yerelleştirilmiş reklamların Londra'da doğru göründüğünü kontrol etmek.
  • SEO İzleme: Google arama sonuçlarını Tokyo'daki bir kullanıcıya göründüğü şekilde incelemek.

IP'nin Ötesinde Antibot Sinyallerini Aşmak

Residential IP sihirli bir çözüm değildir. Yüksek kaliteli bir GProxy residential IP kullansanız bile "Scrapy/2.11" User-Agent gönderiyorsanız veya TLS parmak iziniz tutarsızsa yine engellenirsiniz.

User-Agent ve Başlık Yönetimi

Her zaman simüle ettiğiniz tarayıcı profiline uyan bir User-Agent kullanın. Scrapy'de güncel Chrome, Firefox ve Safari dizeleri arasında rotasyon yapmak için scrapy-user-agents gibi bir kütüphane kullanın. Başlıklarınızın tarayıcıların kullandığı "standart" sırayı izlediğinden emin olun (örneğin Accept-Language, Referer, DNT).

CAPTCHA'larla Başa Çıkmak

Bir residential IP CAPTCHA tetiklediğinde bunun nedeni nadiren IP'nin "kötü" olmasıdır. Genelde istek sıklığı çok yüksektir veya tarayıcı parmak izi şüphelidir. CAPTCHA'yı çözmeye çalışmak yerine daha verimli strateji, yeni bir GProxy residential düğümüne geçmek ve DOWNLOAD_DELAY değerini biraz artırmaktır.

Önemli Çıkarımlar

Residential proxy'ler, düşük bir tespit profili korurken web scraping'i ölçeklendirmenin en etkili yoludur. GProxy'yi yüksek hacimli görevler için Scrapy ile, dinamik içerik için Selenium ile birleştirerek en agresif antibot önlemlerine dayanabilen sağlam bir veri toplama hattı kurabilirsiniz. Pratik İpuçları:
  1. Bant Genişliğini İzleyin: Selenium'da görselleri her zaman engelleyin ve headless mod kullanın; residential veri maliyetinizin %80'e kadarını tasarruf edersiniz.
  2. Backconnect Gateway Kullanın: Binlerce IP'lik listeleri elle yönetmekten kaçının. Tek bir GProxy endpoint'i kullanın ve rotasyon ile sağlık kontrollerini sağlayıcıya bırakın.
  3. Başlıkları IP'lerle Eşleştirin: ABD merkezli bir residential proxy kullanıyorsanız, proxy kullanıcısı gibi görünmemek için Accept-Language başlığınızın en-US içerdiğinden emin olun.
support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.