İçeriğe geç

Hangi proxy seçilmeli: Python, Scrapy ve curl için SOCKS5 mi HTTP mi

Гайды
Hangi proxy seçilmeli: Python, Scrapy ve curl için SOCKS5 mi HTTP mi

SOCKS5 ile HTTP proxy arasındaki seçim, uygulamanızın hangi ağ katmanında çalıştığına ve ne kadar protokol yüküne katlanabileceğinize bağlıdır. Python veya Scrapy ile yapılan standart web kazımada, üst seviye başlıkları işleyebildikleri için genelde HTTP(S) proxy'ler daha verimlidir; SOCKS5 ise düşük seviyeli paket iletimi sayesinde web dışı protokoller ve kısıtlayıcı güvenlik duvarlarını aşma konusunda daha yüksek esneklik sunar.

Protokol temelleri: katman 7 ile katman 5

HTTP ve SOCKS5 proxy'ler arasındaki temel fark, OSI (Open Systems Interconnection) modelindeki konumlarıdır. Veri çekme hatlarını optimize etmek için bu teknik farkı anlamak kritiktir.

HTTP proxy'ler (uygulama katmanı)

HTTP proxy'ler 7. katmanda çalışır. Özellikle HTTP/HTTPS trafiğini yorumlamak ve işlemek için tasarlanmışlardır. Bir Python betiği HTTP proxy üzerinden istek gönderdiğinde, proxy HTTP başlıklarını okuyabilen, değiştirebilen ve yönetebilen bir aracı görevi görür. Bu sayede proxy, web sayfalarını önbelleğe alma veya URL kalıplarına göre içerik filtreleme gibi görevleri yerine getirebilir. GProxy'nin HTTP uç noktaları bu üst seviye etkileşimler için optimize edilmiştir; User-Agent veya Accept-Language gibi başlıklar, gerçek kullanıcı davranışını taklit edecek şekilde doğru biçimde işlenir.

SOCKS5 proxy'ler (oturum katmanı)

SOCKS5 (Socket Secure), taşıma katmanı (TCP/UDP) ile uygulama katmanı arasında yer alan 5. katmanda çalışır. HTTP proxy'lerin aksine SOCKS5, üzerinden geçen trafiği yorumlamaz. Yalnızca istemci adına hedef sunucuya bağlantı kurar ve ham veri paketlerini iki yönde iletir. Kullanılan protokolle ilgilenmediği için SOCKS5, SMTP, FTP ve VoIP dahil her tür trafiği taşıyabilir. Python kazıma bağlamında SOCKS5 genellikle hedef sitenin özel protokoller kullandığı ya da HTTP proxy'lerin engelleyebileceği belirli bir port üzerinden tünel açılması gerektiği durumlarda tercih edilir.

Hangi proxy seçilmeli: Python, Scrapy ve curl için SOCKS5 mi HTTP mi

Teknik karşılaştırma: SOCKS5 ile HTTP

Aşağıdaki tablo, her iki proxy türünün GProxy altyapısıyla kullanıldığındaki teknik özelliklerini ve performans niteliklerini özetliyor.

Özellik HTTP/HTTPS proxy SOCKS5 proxy
OSI katmanı Katman 7 (Uygulama) Katman 5 (Oturum)
Protokol desteği Yalnızca HTTP, HTTPS TCP, UDP, HTTP, FTP vb.
Hız/ek yük Daha yüksek ek yük (başlıkları ayrıştırır) Daha düşük ek yük (paket iletimi)
Anonimlik Başlıklar üzerinden tespit edilebilir Yüksek (veriyi değiştirmez)
Kimlik doğrulama Basic, Digest Kullanıcı adı/parola, GSS-API
DNS çözümleme Proxy sunucusu tarafından yapılır İstemci tarafında veya proxy tarafında

Python'da requests ve httpx ile proxy kullanımı

Python geliştiricileri basit kazıma için sıklıkla requests, asenkron işler için httpx kütüphanesini kullanır. Her ikisi de HTTP ve SOCKS5'i destekler, ancak uygulama ayrıntıları farklıdır.

Requests içinde HTTP proxy kullanımı

HTTP proxy'ler requests tarafından yerleşik olarak desteklenir. proxies parametresine bir sözlük vermeniz yeterlidir. Bu, standart e-ticaret veya sosyal medya platformlarını hedefleyen GProxy kullanıcıları için en yaygın kurulumdur.

import requests

proxy_url = "http://username:[email protected]:8000"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

response = requests.get("https://api.ipify.org?format=json", proxies=proxies)
print(response.json())

Requests içinde SOCKS5 proxy kullanımı

requests ile SOCKS5 kullanmak için PySocks kütüphanesini kurmanız gerekir (pip install requests[socks]). SOCKS5, DNS sorgularının yerel makineniz yerine proxy sunucusunda yapılmasını sağlamak istediğinizde özellikle işe yarar; böylece gerçek konumunuzu açığa çıkarabilecek DNS sızıntıları önlenir.

import requests

# socks5h:// kullanmak DNS çözümlemesinin proxy tarafında yapılmasını sağlar
proxies = {
    "http": "socks5h://username:[email protected]:9000",
    "https": "socks5h://username:[email protected]:9000"
}

response = requests.get("https://api.ipify.org", proxies=proxies)
print(response.text)

Scrapy ile ileri düzey kazıma

Scrapy, proxy yönetimi için farklı bir yaklaşım gerektiren asenkron bir framework'tür. İstekleri proxy'ler üzerinden yönlendirmek için Downloader Middleware yapısını kullanır.

Scrapy'de HTTP proxy yapılandırma

Scrapy'de settings.py dosyasını düzenleyerek ya da özel bir middleware kullanarak her istek için proxy tanımlayabilirsiniz. GProxy ile yüksek hacimli kazımada, dönen proxy middleware'i kullanmak standart uygulamadır.

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

# Bir spider içinde proxy tanımlama örneği
def start_requests(self):
    yield scrapy.Request(
        url='https://example.com',
        callback=self.parse,
        meta={'proxy': "http://username:[email protected]:8000"}
    )

Scrapy'de SOCKS5 kullanımı

Scrapy, HTTP'yi desteklediği biçimde SOCKS5'i kutudan çıktığı gibi desteklemeyen Twisted motorunu kullanır. SOCKS5 kullanmak için genellikle txsocksx entegre etmeniz ya da bağlantıyı Scrapy'ye devretmeden önce SOCKS5 el sıkışmasını yapan bir proxy rotatörü kullanmanız gerekir. Ancak daha modern bir yaklaşım, protokol katmanını soyutlayan scrapy-zyte-smartproxy veya benzeri eklentileri kullanmaktır.

Proxy hata ayıklaması için curl kullanımı

Karmaşık Python kodu yazmadan önce GProxy kimlik bilgilerinizin ve uç noktalarınızın doğru çalıştığını doğrulamak için en iyi araç curl'dür. El sıkışma sürecini şeffaf biçimde gösterir.

HTTP proxy'leri test etme

-x veya --proxy bayrağını kullanın. Bu komut, HTTPS trafiği için tünel açmak üzere proxy sunucusuna bir HTTP CONNECT isteği gönderir.

curl -x http://username:[email protected]:8000 -v https://api.ipify.org

SOCKS5 proxy'leri test etme

SOCKS5 için protokolü URL içinde belirtin. --socks5-hostname kullanmak kritiktir, çünkü DNS çözümlemesinin GProxy sunucusunda yapılmasını zorunlu kılarak azami anonimlik sağlar.

curl --socks5-hostname username:[email protected]:9000 -v https://api.ipify.org
Hangi proxy seçilmeli: Python, Scrapy ve curl için SOCKS5 mi HTTP mi

Performans analizi: hangisi ne zaman seçilmeli

Yüksek performanslı veri çekmede milisaniyeler önemlidir. GProxy'deki dahili karşılaştırma testlerimiz her protokol için belirgin performans profilleri gösteriyor.

Gecikme ve verim

HTTP proxy'ler genellikle biraz daha fazla gecikme ekler (yaklaşık 5-10ms), çünkü proxy sunucusunun isteği nasıl yönlendireceğine ve önbellekten bir sürüm sunup sunmayacağına karar vermek için HTTP başlıklarını ayrıştırması gerekir. Yine de web kazıma görevlerinin %95'inde bu ek yük, hedef sunucuya ulaşmanın ağ gecikmesi yanında ihmal edilebilir düzeydedir.

Ham veri aktarımında SOCKS5 daha hızlıdır. Daha alt seviyede çalıştığı için başlık ayrıştırmayı tamamen atlar. Büyük ikili dosyalar, video akışları kazıyorsanız ya da WebSocket kullanıyorsanız SOCKS5 daha kararlı ve hızlı bir bağlantı sunar. GProxy'nin SOCKS5 residential proxy'leri özellikle bu yüksek verimli senaryolar için tasarlanmıştır.

Hız limitleri ve engellerle başa çıkma

Modern bot önleme sistemlerinin çoğu (Cloudflare veya Akamai gibi) TCP/IP yığınındaki tutarsızlıkları arar. SOCKS5 proxy'ler uygulama seviyesindeki veriyi değiştirmedikleri için trafiği daha "doğal" gösterir ve bu sistemleri aşmada genellikle daha başarılıdır. HTTP proxy'ler ise doğru yapılandırılmazsa Via veya X-Forwarded-For gibi başlıklar ekleyebilir; bunlar hedef sunucular için anında alarm işaretidir.

Doğru GProxy çözümünü seçmek

GProxy hem residential hem veri merkezi proxy'lerini SOCKS5 ve HTTP formatlarında sunar. Seçiminizi hedef sitenin karmaşıklığı belirlemelidir.

  • Standart web kazıma (e-ticaret, haber): HTTP residential proxy'leri kullanın. Scrapy ve Requests ile kullanım kolaylığı ile güvenilirlik arasında en iyi dengeyi sağlarlar.
  • Sosyal medya ve hesap yönetimi: SOCKS5 residential proxy'leri kullanın. Bu platformlar sıklıkla standart dışı portlar kullanır ve derin paket incelemesi yapar. SOCKS5 en temiz tüneli sunar.
  • SEO izleme ve SERP kazıma: Burada genellikle HTTP proxy'ler yeterlidir; çoğunlukla basit GET istekleriyle çalışırsınız ve GProxy'nin HTTP arka uçlarının sağladığı yüksek eşzamanlılığa ihtiyacınız vardır.
  • Yayın hizmetlerinde coğrafi kısıtlamaları aşma: Yayın hizmeti veri iletimi için UDP kullanıyorsa SOCKS5 zorunludur, çünkü HTTP proxy'ler UDP paketlerini taşıyamaz.

Sık yapılan hatalar ve bunlardan kaçınma yolları

  1. DNS sızıntıları: SOCKS5 kullanırken istemcinizin DNS'i proxy üzerinden çözecek şekilde yapılandırıldığından her zaman emin olun. Python'da socks5h:// ön ekini, curl'de --socks5-hostname seçeneğini kullanın.
  2. Kimlik doğrulama hataları: Kimlik bilgileri yanlışsa HTTP proxy'ler 407 Proxy Authentication Required durum kodunu döndürür. SOCKS5 hataları genellikle daha kapalıdır; "Connection reset by peer" veya "General SOCKS server failure" şeklinde görünür. Hatanın tam noktasını görmek için her zaman curl -v ile test edin.
  3. Kütüphane uyumluluğu: Her Python kütüphanesi SOCKS5'i yerleşik olarak desteklemez. Eski bir kod tabanıyla çalışıyorsanız socks.set_default_proxy() kullanarak socket kütüphanesine monkey patch uygulamanız gerekebilir.
  4. SSL/TLS sonlandırma: HTTP proxy kullanırken, proxy'nin CA sertifikasına güvenirseniz proxy'nin HTTPS trafiğini teorik olarak *ele geçirebileceğini* unutmayın. SOCKS5'te ise proxy şifreli akışı olduğu gibi iletir; içeriği incelemesi imkânsızdır (uçtan uca şifreleme).

Öne çıkanlar

Doğru proxy protokolünü seçmek, dayanıklı bir kazıma altyapısı kurmanın temel adımıdır. HTTP standart web görevlerinde ilk tercih olsa da, daha karmaşık ağ gereksinimleri için gereken esnekliği SOCKS5 sunar.

  • HTTP/HTTPS proxy'leri kullanın: Standart siteleri hedefleyen Python ve Scrapy projelerinin %90'ında. Yapılandırmaları daha kolaydır ve neredeyse her kütüphanede yerleşik destek bulunur.
  • SOCKS5 proxy'leri kullanın: UDP trafiğini taşımanız, sızıntıları önlemek için uzaktan DNS çözümlemesi gerekmesi ya da protokol imzalarını analiz eden agresif bot önleme sistemleriyle uğraşmanız durumunda.
  • GProxy'nin esnekliğinden yararlanın: Başarı oranınıza göre protokoller arasında geçiş yapın. Bir HTTP proxy engelleniyorsa, aynı residential IP ile kurulan bir SOCKS5 tüneli filtreyi aşabilir.

Pratik ipucu 1: Python'da her zaman socks5h:// protokol şemasını kullanın; böylece DNS çözümlemesi GProxy sunucusunda yapılır ve yerel ISP'niz hangi alan adlarını kazıdığınızı göremez.

Pratik ipucu 2: Scrapy'de hata ayıklarken, tam bir tarama başlatmadan önce belirli bir GProxy uç noktasının hedefinize ulaşıp ulaşmadığını hızlıca test etmek için scrapy shell komutunu --meta='{"proxy": "..."}' bayrağıyla kullanın.

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