İçeriğe geç

Fiyat parsing için GProxy.net proxy'leri ile Scrapy ve Selenium kullanımı

Инструменты
Fiyat parsing için GProxy.net proxy'leri ile Scrapy ve Selenium kullanımı

Ölçekli fiyat parsing işlemi, ham hızı gelişmiş anti-bot mekanizmalarını aşma yeteneğiyle dengeleyen hibrit bir yaklaşım gerektirir. Scrapy'nin asenkron crawling framework'ünü, Selenium'un tarayıcı otomasyonuyla ve GProxy.net'in residential proxy ağıyla birleştirerek geliştiriciler, en korunaklı e-ticaret ortamlarından bile gerçek zamanlı fiyat verisini güvenilir biçimde çekebilir. Bu kombinasyon, rotasyonlu residential IP'ler sayesinde düşük bir tespit profili korurken JavaScript ağırlıklı render'ı da yönetmenizi sağlar.

Yüksek performanslı bir fiyat parser'ının mimarisi

Fiyat parser'ı kurmak artık basitçe bir GET isteği gönderip HTML'i ayrıştırmak değil. Amazon, Zalando ve Walmart gibi modern e-ticaret platformları dinamik fiyat render'ı kullanır: ürünün gerçek fiyatı, sayfa yüklendikten sonra JavaScript ile DOM'a enjekte edilir. Bu da iki katmanlı bir mimari yaklaşımı zorunlu kılar.

Scrapy operasyonun omurgasıdır. Asenkron yapısı sayesinde binlerce isteği aynı anda işleyebilir; bu da kategori sayfalarını taramak ve ürün URL'lerini keşfetmek için ideal olmasını sağlar. Ancak Scrapy, PerimeterX veya Akamai ile korunan bir sayfayla ya da "Buy Box" fiyatlarını göstermek için yoğun JS çalıştırılması gereken bir sayfayla karşılaştığında görevi Selenium'a devreder. Selenium gerçek bir tarayıcı örneği (Chrome veya Firefox) çalıştırır; script'leri yürütür ve cookie'leri tıpkı bir insan kullanıcı gibi yönetir.

Bu mimaride eksik halka ağ kimliğidir. E-ticaret siteleri IP itibarını ve istek desenlerini izler. Bir veri merkezi IP aralığından yüksek hacimde istek tespit ederlerse anında CAPTCHA veya yanlış fiyat verisi (ghosting) sunarlar. GProxy.net, bu otomatik istekleri maskelemek için gereken residential altyapıyı sağlar. GProxy'nin rotasyonlu residential proxy'leri kullanıldığında her istek benzersiz bir ev internet bağlantısından geliyormuş gibi görünür; böylece hedef sunucuların scraper'ı gerçek bir alışverişçiden ayırt etmesi neredeyse imkânsız hale gelir.

Fiyat parsing için GProxy.net proxy'leri ile Scrapy ve Selenium kullanımı

GProxy.net proxy'lerini Scrapy ile entegre etme

GProxy.net'i Scrapy ile kullanmak için özel bir middleware yazmanız ya da yerleşik HttpProxyMiddleware'i kullanmanız gerekir. Fiyat parsing yüksek frekanslı istekler içerdiğinden, en iyi uygulama rotasyonu sunucu tarafında otomatik yapan GProxy backconnect düğümlerini kullanmaktır.

Scrapy ayarlarını yapılandırma

settings.py dosyanızda proxy middleware'ini etkinleştirip GProxy kimlik bilgilerinizi vermelisiniz. Residential proxy kullanmak, isteklerinizin gerçek kullanıcı cihazları üzerinden yönlendirilmesini sağlar ve büyük ölçekli taramalarda engellenme ihtimalini belirgin şekilde azaltır.


# settings.py
DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400,
}

# GProxy residential proxy yapılandırması
# Biçim: http://username:[email protected]:port
PROXY_URL = "http://user-12345:[email protected]:8000"

Spider'larda proxy mantığını uygulama

Proxy meta etiketini doğrudan scrapy.Request içinde geçirebilirsiniz. Bu özellikle farklı GProxy bölgeleri arasında geçiş yapmak istediğinizde işe yarar (örneğin bölgesel fiyat karşılaştırması için ABD proxy'lerinden İngiltere proxy'lerine geçmek).


import scrapy

class PriceSpider(scrapy.Spider):
    name = 'gproxy_spider'
    
    def start_requests(self):
        urls = ['https://example-ecommerce.com/product-1']
        for url in urls:
            yield scrapy.Request(
                url=url, 
                callback=self.parse,
                meta={'proxy': 'http://user-12345:[email protected]:8000'}
            )

    def parse(self, response):
        price = response.css('.price-tag::text').get()
        yield {'price': price, 'url': response.url}

Selenium ve GProxy ile dinamik içeriği yönetme

Bir site fiyatları göstermek için "Shadow DOM" ya da karmaşık React/Vue state yönetimi kullanıyorsa, Scrapy'nin Selector'ı boş sonuç döndürür. Selenium işte burada gerekli hale gelir. Anonimliği korumak için Selenium'un da GProxy.net düğümlerini kullanacak şekilde yapılandırılması gerekir.

Proxy entegrasyonu için önerilen yaklaşım selenium-wire kullanmaktır; çünkü header'ları kolayca değiştirmeye izin verir ve standart Selenium sürücülerinin manuel eklenti yüklemesi olmadan genelde zorlandığı kimlik doğrulamalı proxy'leri destekler.


from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options

def get_dynamic_price(url):
    proxy_options = {
        'proxy': {
            'http': 'http://user-12345:[email protected]:8000',
            'https': 'https://user-12345:[email protected]:8000',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }
    
    chrome_options = Options()
    chrome_options.add_argument('--headless') # Performans için arayüzsüz çalıştır
    
    driver = webdriver.Chrome(options=chrome_options, seleniumwire_options=proxy_options)
    
    try:
        driver.get(url)
        # Fiyat elemanının JS ile render edilmesini bekle
        price_element = driver.find_element_by_css_selector('.dynamic-price')
        return price_element.text
    finally:
        driver.quit()

Selenium kullanırken kaynak yönetimi kritiktir. Tek bir Chrome örneği 200MB ile 500MB arasında RAM tüketebilir. 10.000 fiyat parse ediyorsanız 10.000 örnek başlatmamalısınız. Bunun yerine bir worker havuzu kullanın veya sürücü örneklerini birden fazla istekte yeniden kullanmak için Selenium'u bir Scrapy middleware'ine (scrapy-selenium gibi) entegre edin.

Fiyat parsing için GProxy.net proxy'leri ile Scrapy ve Selenium kullanımı

Fiyat çıkarımı için Scrapy ile Selenium karşılaştırması

Doğru aracı seçmek hedef sitenin karmaşıklığına bağlıdır. Aşağıdaki tablo, GProxy.net residential proxy'leriyle birlikte kullanıldığında iki yöntemi karşılaştırıyor.

Özellik Scrapy + GProxy Selenium + GProxy
Hız Yüksek (asenkron) Düşük (tarayıcı yükü)
Kaynak kullanımı Düşük (bellek açısından verimli) Yüksek (CPU/RAM yoğun)
JS render Hayır (Splash/Playwright gerekir) Yerel destek
Anti-bot aşma Orta (header/IP'ye bağlı) Yüksek (gerçek kullanıcıyı taklit eder)
En iyi kullanım senaryosu Katalog/kategori scraping Checkout/dinamik fiyat mantığı

İleri düzey proxy stratejileri: coğrafi hedefleme ve sticky oturumlar

Fiyat parsing çoğu zaman belirli bir konumdaki kullanıcının ne gördüğünü görmeyi gerektirir. Örneğin Amazon, ziyaretçinin IP adresine göre farklı kargo ücretleri ve yerelleştirilmiş fiyatlar gösterir. GProxy.net ayrıntılı coğrafi hedeflemeye izin verir; bu da doğru rekabet istihbaratı için şarttır.

Sticky oturumları uygulama

Bazı senaryolarda birden fazla istek boyunca aynı IP adresini korumanız gerekir — örneğin vergiler dahil nihai fiyatı görmek için bir ürünü sepete eklerken. GProxy, kullanıcı adınıza bir oturum kimliği ekleyerek "sticky oturumları" destekler. Bu, o oturum süresince (örneğin 10–30 dakika) tüm isteklerinizin aynı residential çıkış düğümünden geçmesini sağlar.

Sticky oturum string'i örneği: user-12345-session-uniqueid789:[email protected]:8000. uniqueid789 kısmını değiştirerek mantığınız gerektirdiğinde yeni bir IP tetikleyebilirsiniz.

Bölgesel fiyat karşılaştırmaları

Küresel bir markanın fiyatlarını izliyorsanız, farklı pazarlardaki fiyatlandırmayı doğrulamanız gerekir. GProxy ile proxy kimlik bilgilerinde ülke kodunu belirtebilirsiniz. Bu, küresel bir açılış sayfasına yönlendirilmeden farklı yargı bölgelerinde Minimum İlan Edilen Fiyat (MAP) uyumunu doğrulamak için hayati önemdedir.

  • ABD fiyatlandırması: GProxy yapılandırmanızda country-us kullanın.
  • AB fiyatlandırması: Euro cinsinden fiyatları görmek için country-de veya country-fr kullanın.
  • Asya-Pasifik: Rakuten veya Shopee gibi bölgesel pazaryerleri için country-jp ya da country-sg hedefleyin.

Anti-bot sistemleri ve parmak iziyle başa çıkma

Proxy'ler ilk savunma hattıdır, ancak gelişmiş siteler tarayıcı parmak izlerine de bakar. Selenium kullanırken navigator.webdriver özelliğini undefined olarak değiştirmelisiniz. Siteler, tarayıcının otomasyon yazılımı tarafından kontrol edilip edilmediğini anlamak için bu bayrağı kontrol eder.

Ayrıca User-Agent'a dikkat edin. GProxy'nin residential IP'lerini kullanıp Scrapy'nin varsayılan User-Agent'ını (Scrapy/2.x (+https://scrapy.org)) gönderirseniz anında engellenirsiniz. Selenium'da simüle ettiğiniz tarayıcı sürümüyle eşleşen gerçekçi ve güncel string'ler üretmek için daima python-user-agents gibi bir kütüphane kullanın.

  1. User-Agent'ları rotasyona sokun: User-Agent'ın proxy'nin algılanan cihaz tipiyle (mobil veya masaüstü) eşleştiğinden emin olun.
  2. Cookie'leri yönetin: Çok adımlı bir akış için sticky oturum kullanmıyorsanız oturumlar arasında cookie'leri temizleyin.
  3. Gecikmeleri rastgeleleştirin: İnsan okuma desenlerini taklit etmek için Selenium'da time.sleep(random.uniform(1, 5)) kullanın.
  4. Yanıt kodlarını izleyin: 403 veya 427 görürseniz GProxy oturum kimliğinizi hemen değiştirin.

Önemli çıkarımlar

Ölçekli fiyat parsing'i başarmak, verimlilik ile gizlilik arasında bir denge kurma işidir. Scrapy, Selenium ve GProxy.net'i birleştirerek web scraping'in en yaygın engellerini aşabilen sağlam bir pipeline oluşturursunuz.

  • Hibrit yaklaşım: Yüksek hacimli URL keşfi için Scrapy'yi, yalnızca fiyatları göstermek için JavaScript çalıştırılması gereken sayfalarda ise Selenium'u kullanın.
  • Residential avantajı: Nihai veri çıkarımı aşamasında daima GProxy.net'in residential proxy'lerini kullanın; veri merkezi IP'leri e-ticaret CDN filtreleri tarafından fazla kolay işaretlenir.
  • Oturum yönetimi: Çok adımlı bir fiyat keşif sürecinde (örneğin sepete ekleme, posta kodu girme) tutarlı bir kimlik korumanız gerektiğinde sticky oturumlardan yararlanın.

Pratik ipucu 1: Proxy bölgesi başına "başarı oranınızı" daima izleyin. Belirli bir bölgede başarılı çıkarımlarda düşüş fark ederseniz, GProxy oturum kimliklerinizi değiştirin veya hemen veri merkezi düğümlerinden residential düğümlere geçin.

Pratik ipucu 2: Scrapy'de özellikle 429 (Too Many Requests) ve 403 (Forbidden) hatalarını arayan bir "Retry Middleware" uygulayın. İsteği otomatik olarak yeni bir GProxy residential IP ile tekrarlayacak şekilde yapılandırın; böylece taramanız geçici engeller yüzünden durmaz.

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.