Skip to content
OldProxy

Eğitimler 2 dk okuma

Python ile Rotating Proxy Kullanımı (requests Rehberi)

Adım adım: Python requests'i rotating proxy gateway'ine bağlayın; ülke hedefleme, sticky oturum, yeniden deneme ve eşzamanlılık ekleyin.

Python ile Rotating Proxy Kullanımı (requests Rehberi)

Bu rehber Python requests trafiğini bir rotating proxy gateway'i üzerinden nasıl göndereceğinizi gösterir; ardından üretimde gereken parçaları ekler: konum hedefleme, sticky oturum, yeniden deneme ve eşzamanlılık.

1. requests'i kurun

pip install requests

2. Proxy üzerinden ilk isteği gönderin

Endpoint'i panelinizden kopyalayın. İçinde kullanıcı adınız, şifreniz, gateway adresi ve istediğiniz havuzun portu bulunur.

import requests

PROXY = "http://USER-zone-premium:PASS@gate.example.com:8000"
proxies = {"http": PROXY, "https": PROXY}

r = requests.get("https://ipinfo.io/json", proxies=proxies, timeout=30)
print(r.json()["ip"], r.json()["country"])

İki kez çalıştırın. Gateway varsayılan olarak her istekte IP değiştirdiği için her seferinde farklı bir IP görmelisiniz.

3. Ülke hedefleyin

Ülke kodunu kullanıcı adına ekleyin:

PROXY = "http://USER-zone-premium-country-tr:PASS@gate.example.com:8000"

Artık her istek Türkiye'den çıkar. Residential havuzlarda şehir hedefleme de aynı şekilde çalışır, örneğin -country-tr-city-istanbul.

4. Sticky oturumla aynı IP'yi koruyun

Giriş yapmak gibi bazı akışlar bir süre aynı IP'ye ihtiyaç duyar. Bir oturum kimliği ve dakika cinsinden süre ekleyin:

import uuid

session_id = uuid.uuid4().hex[:8]
PROXY = f"http://USER-zone-premium-country-tr-session-{session_id}-ttl-10:PASS@gate.example.com:8000"

Bu kullanıcı adını kullanan tüm istekler 10 dakika boyunca aynı çıkış IP'sini korur. Yeni IP istediğinizde yeni bir session_id üretin.

5. Yeni IP ile yeniden deneyin

İyi IP'ler de bazen başarısız olur. Engellenen veya hata veren istekleri yeniden deneyin; rotasyon açıkken her deneme farklı bir adresten çıkar.

import time

def fetch(url, tries=3):
    for attempt in range(tries):
        try:
            r = requests.get(url, proxies=proxies, timeout=30)
            if r.status_code in (403, 429) or r.status_code >= 500:
                raise requests.HTTPError(r.status_code)
            return r
        except requests.RequestException:
            time.sleep(1.5 * (attempt + 1))
    return None

6. Eşzamanlılıkla ölçekleyin

Gateway aynı anda çok sayıda bağlantıyı kabul eder; thread havuzuyla paralelleştirebilirsiniz:

from concurrent.futures import ThreadPoolExecutor

urls = [f"https://example.com/sayfa/{i}" for i in range(1, 201)]
with ThreadPoolExecutor(max_workers=20) as pool:
    for resp in pool.map(fetch, urls):
        if resp is not None:
            print(resp.url, resp.status_code)

10 ile 20 worker ile başlayın, paneldeki başarı oranını izleyerek sayıyı artırın.

Sık karşılaşılan hatalar

  • 407 Proxy Authentication Required: kullanıcı adı veya şifre yanlış ya da IP'niz whitelist'te değil.
  • Zaman aşımı: timeout değerini artırın veya daha yakın bir ülke seçin.
  • Çok sayıda 403: hedefi premium veya mobil havuza taşıyın ve istek hızınızı düşürün.

Sonraki adım

Hedefinize hangi havuzun uyduğundan emin değil misiniz? Residential, mobil ve datacenter proxy farkı yazısını okuyun.