Çözüm
Büyük Ölçekli Veri Toplama İçin Proxy: Kuyruk, Hız ve Kapasite
Büyük ölçekli veri akışında asıl iş, istekleri kuyruğa alıp hedef başına hızı sınırlayan, hataları ayıklayan ve kapasiteyi önceden hesaplayan bir düzen kurmaktır. Proxy bu düzenin çıkış katmanıdır; IP sayısı ve trafik modeli yanlış seçilirse en iyi kuyruk bile verimsiz çalışır.
On sayfayı çeken bir betik yüz bin sayfaya ölçeklendiğinde sorunları da ölçekler: yarım kalan işler, tekrar tekrar indirilen aynı sayfalar, hedefte hız sınırına takılan işçiler ve hangi isteğin hangi IP'den çıktığını göstermeyen kayıtlar. Veri toplamanın asıl zorluğu çekmek değil, düzenli, tekrarlanabilir ve izlenebilir biçimde çekmektir.
İkinci zorluk kapasitedir. Çok sayıda IP almak her zaman daha fazla veri anlamına gelmez; darboğaz çoğu zaman hedef başına uygun gördüğünüz hız, ağ bant genişliği ya da trafik kotanızdır. Doğru soru “kaç IP?” değil, “hangi hızla, hangi hedefe, ne kadar veriyle?” sorusudur.
Kuyruk, eşzamanlılık ve hedef başına hız
İstekleri bir döngüde art arda göndermek yerine URL'leri kuyruğa koyun ve işçilerin (worker) kuyruktan almasını sağlayın. Eşzamanlılığı iki düzeyde sınırlayın: toplam işçi sayısı ve alan adı başına aynı anda açık istek sayısı. İkinci sınır hedef sitenin kaldırabileceği yükten türetilmelidir; IP eklemek bu yükü değiştirmez.
- 01Kuyruğa alınHer URL'ye bir kimlik, öncelik ve deneme sayacı verin. Aynı URL'nin kuyruğa iki kez girmesini kimlik üzerinden engelleyin.
- 02Alan adı başına sınırlayınHer alan adı için eşzamanlı istek üst sınırı ve istekler arası en kısa bekleme belirleyin. Düşük bir değerle başlayın, hata oranına bakarak artırın.
- 03Proxy üzerinden gönderinBağlanma ve okuma zaman aşımlarını ayrı ayrı tanımlayın. Hangi IP'nin hangi isteği taşıdığını kaydedin.
- 04Sonucu sınıflandırınSonucu başarı, geçici hata (yeniden denenir) ve kalıcı hata (denenmez) olarak ayırın: 404 ve 410 kalıcıdır, zaman aşımı ve 5xx geçicidir.
- 05Yazın ve onaylayınYanıtı saklayın, sonra kuyruktan silin. İşi yeniden çalıştırdığınızda çift kayıt oluşmaması için yazma adımı aynı girdiyle tekrarlanabilir (idempotent) olmalıdır.
Bir proxy üzerinden ilk isteği kurmak için Python ile proxy kullanımı yazısı yeterlidir; ölçekte asıl farkı kuyruk, sınır ve kayıt katmanları yaratır. Sayfa ayrıştırma ve otomasyon tarafı için web scraping çözüm sayfasına bakın.
Hata yönetimi: 429, 403, 407 ve zaman aşımları
Her hata aynı yanıtı hak etmez. Hatayı doğru sınıflandırmak yeniden deneme bütçenizi doğru yere harcamanızı sağlar; yanlış sınıflandırma ise kuyruğu gereksiz tekrarlarla doldurur. Durum kodlarının tanımı için RFC 9110 ve 429 için RFC 6585 başvurulabilir.
| Durum | Genellikle anlamı | İş akışındaki karşılığı |
|---|---|---|
| 407 | Proxy kimlik doğrulaması eksik ya da hatalı (Proxy Authentication Required) | Yeniden denemeyin; kullanıcı adı ve parolayı düzeltin, işi duraklatın |
| 403 | Sunucu isteği anladı ama yetki vermedi; hedeften de proxy'den de gelebilir | Hemen tekrarlamayın; URL, başlıklar ve erişim kuralları gözden geçirilir, hız düşürülür |
| 429 | Çok fazla istek gönderildi; yanıtta Retry-After başlığı bulunabilir | Başlıktaki süre kadar bekleyin, alan adı hızını düşürün, üstel bekleme uygulayın |
| 5xx, zaman aşımı, bağlantı sıfırlanması | Geçici sunucu ya da ağ sorunu | Sınırlı sayıda yeniden deneyin; hata oranı yükselirse alan adını kısa süre durdurun |
| 404, 410 | Kaynak bulunamıyor ya da kaldırılmış | Yeniden denemeyin; kalıcı hata olarak işaretleyin |
import random
import time
import requests
PROXY = "http://KULLANICI:[email protected]:PORT"
PROXIES = {"http": PROXY, "https": PROXY}
TRANSIENT = {429, 500, 502, 503, 504}
def fetch(url, max_attempts=4):
for attempt in range(1, max_attempts + 1):
try:
resp = requests.get(url, proxies=PROXIES, timeout=(5, 20))
except requests.exceptions.ProxyError:
raise # HTTPS'te 407 burada görünür: yeniden denemeyin, kimlik bilgisini düzeltin
except (requests.ConnectionError, requests.Timeout):
resp = None # ağ hatası geçici sayılır
if resp is not None and resp.status_code not in TRANSIENT:
return resp # 200, 404, 403 gibi kesin yanıtlar yeniden denenmez
if attempt == max_attempts:
return resp # hak bitti; None dönerse çağıran bunu hata olarak işlemeli
wait = 2 ** attempt + random.uniform(0, 1) # üstel bekleme + rastgele sapma
retry_after = resp.headers.get("Retry-After", "") if resp is not None else ""
if retry_after.isdigit():
wait = max(wait, int(retry_after))
time.sleep(wait)HTTPS hedeflerde proxy'nin 407 yanıtı tünel kurulurken döner; Python requests bunu yanıt olarak değil ProxyError olarak yükselttiği için örnekte ayrıca yakalanır. SOCKS5'te kimlik reddi, el sıkışma sırasında bağlantı hatası olarak görünür. Hata oranını IP ve alan adı bazında ölçün: tek IP'de yoğunlaşan hata o çıkışa özgü bir sorunu, tüm IP'lerde birlikte artan hata hedefin davranışını gösterir. Ayrıntı için 407, 403 ve 429 rehberine bakın; proxy'nin çalışıp çalışmadığını Proxy Kontrol ile ayırt edebilirsiniz.
Kapasite planlama: kaç IP, hangi trafik modeli?
Kapasiteyi iki eksende hesaplayın: istek hızı (kaç IP gerekir) ve veri hacmi (GB mı, limitsiz mi). İkisini de varsayımla değil, küçük bir denemenin ölçümleriyle besleyin.
- Günlük istek = URL sayısı × günlük okuma sayısı.
- Saniyedeki istek = günlük istek ÷ 86.400 (işi gün boyu yayıyorsanız).
- Gereken IP sayısı = saniyedeki istek ÷ bir IP'den göndermeyi uygun gördüğünüz saniyedeki istek. Alan adı başına eşzamanlılık sınırını ayrıca uygulayın.
- Aylık veri = günlük istek × ortalama yanıt boyutu × 30; hesabın üzerine pay bırakın.
| Ürün | Trafik ve süre modeli | IP modeli | Veri akışında anlamı |
|---|---|---|---|
| IPv4 Datacenter | 30 günlük paket; trafik sağlayıcı beyanına göre sınırsız | Statik IPv4: 30, 100, 250 ve 1.000 IP | Çok sayıda hafif ve düzenli istek; kapasiteyi IP sayısı ve istek hızı belirler |
| Residential | GB bazlı, 30 günlük paketler (1 ile 500 GB) | Dönen havuz | Hacmi önceden kestirebildiğiniz işler; tüketim GB ile ölçülür |
| Limitsiz Residential | GB sınırı yok; günlük, haftalık ve 30 günlük paketler; 20 ile 1.000 Mbps kademeleri | Dönen havuz | Hacmi öngörülemeyen akışlar; kademe plan adının parçasıdır, kullanım koşulları sözleşmededir |
| Rotating Mobil | Türkiye'de tek seferlik GB paketleri; ayrıca limitsiz günlük, haftalık ve aylık paketler | Dönen mobil IP | Mobil çıkış gereken işler; GB paketinde tüketim sayılır, limitsiz pakette süre belirler |
| ISP | IP adedi ve süreyle paketlenir (Türkiye'de 1, 3, 6 ve 12 ay) | Statik IPv4 | Uzun süreli ve tutarlı çıkış gereken akışlar; trafik koşulunu sipariş sayfasından doğrulayın |
| IPv6 | Aylık paket | /64 alt ağlardan 100, 500, 2.500 ve 15.000 adres | Yalnızca IPv6 destekleyen hedeflerde ve yalnızca HTTP(S) ile işe yarar |
Kontrol listesi
- URL'leri kuyruğa alın; her kayda kimlik, öncelik ve deneme sayacı verin.
- Eşzamanlılığı hem toplamda hem alan adı başına sınırlayın; alan adı sınırını IP sayınızdan değil, hedefin kaldırabileceği yükten türetin.
- Bağlanma ve okuma zaman aşımlarını ayrı ayrı belirleyin; yeniden denemede üstel bekleme ve rastgele sapma kullanın.
- 407'yi kimlik hatası, 403'ü erişim sorunu, 429'u hız sınırı olarak ayrı kollarda işleyin ve hiçbirini sınırsız yeniden denemeyin.
- Yazma adımını tekrarlanabilir tasarlayın; iş yeniden çalıştığında çift kayıt oluşmasın.
- Her istek için çıkış IP'sini, alan adını, durum kodunu, süreyi ve bayt miktarını kaydedin; hata ve trafik tüketimini bu kayıttan izleyin.
- Paketi seçmeden önce birkaç yüz URL'lik bir deneme çalıştırıp gerçek yanıt boyutunu ve hata oranını ölçün.
Sık sorulan sorular
İlgili rehberler
- Proxy Hataları: 407, 403 ve 429 Ne Anlama Gelir, Nasıl Çözülür?407, 403 ve 429 hata kodlarının proxy kullanırken ne anlama geldiğini, hatanın kaynağını nasıl ayırt edeceğinizi ve çözüm adımlarını bu yazıda bulabilirsiniz.
- Rotating Proxy Nedir? Dönen, Sticky ve Statik IP FarkıRotating, sticky ve statik IP modellerinin farkını, iş yüküne göre seçimi ve istemci tarafında oturum yönetimini anlatıyoruz; dönen mobil ve residential havuzları da karşılaştırıyoruz.
- Python ile Proxy Kullanımı: requests, httpx ve aiohttp Örneklerirequests, httpx ve aiohttp ile HTTP ve SOCKS5 proxy kullanmanın çalışır örnekleri, zaman aşımı ve yeniden deneme ayarları ve çıkış IP'sini doğrulama adımları.
ipv4proxy.tr
Doğru adresi bulun.
Sekiz ürün, doğrulanmış fiyatlar, gerçek araçlar. Sipariş saglamproxy.com üzerinde tamamlanır.