Python Requests kütüphanesinde kimlik doğrulamalı proxy kullanmak, kimlik bilgilerinin gömülü olduğu proxy URL'lerinden oluşan bir sözlük geçirmek ya da proxy sunucusuna kimliğinizi doğrulatan özel kimlik doğrulama handler'ları kullanmak anlamına gelir. Bu kurulum, proxy ağ geçidine yalnızca yetkili kullanıcıların erişmesini sağlar; böylece bant genişliğiniz korunur ve web scraping, otomasyon ve veri toplama işleri için güvenli bir tünel elde edersiniz.
Python Requests'te proxy kimlik doğrulamasını anlamak
Proxy kimlik doğrulaması, proxy sunucusunun istemcinin trafiğini yönlendirmesine izin vermeden önce kullanıcı adı ve parola istediği bir güvenlik mekanizmasıdır. Python'un requests kütüphanesinde bu genellikle proxies parametresiyle yapılır. Kütüphane, GProxy gibi çoğu residential ve datacenter proxy sağlayıcısının sektör standardı olan HTTP Basic Authentication'ı varsayılan olarak destekler.
Kimlik doğrulamalı bir proxy üzerinden istek gönderdiğinizde istemci, Proxy-Authorization başlığını ekler. Bu başlık, base64 ile kodlanmış kimlik bilgilerini içerir. Kimlik bilgileri eksik ya da hatalıysa proxy sunucusu 407 Proxy Authentication Required durum kodunu döndürür. Bu istekleri doğru biçimlendirmeyi bilmek, ölçeklenebilir bir veri hattı ile bağlantı hataları yüzünden sürekli çöken bir betik arasındaki farktır.

Temel proxy kimlik doğrulamasını kurma
Python Requests'te kimlik doğrulamayı uygulamanın en doğrudan yolu, kimlik bilgilerini doğrudan proxy URL dizesine gömmektir. Biçim, standart URI şemasını izler: http://user:password@host:port.
import requests
# GProxy kimlik bilgilerinizi tanımlayın
proxy_username = "your_username"
proxy_password = "your_password"
proxy_host = "proxy.gproxy.com"
proxy_port = "8080"
# Proxy sözlüğünü oluşturun
proxies = {
"http": f"http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}",
"https": f"http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}",
}
try:
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(response.json())
except requests.exceptions.ProxyError as e:
print(f"Proxy connection failed: {e}")
Bu örnekte proxies sözlüğü, protokolü (http veya https) kimlik doğrulamalı proxy URL'sine eşler. Hedef sitenin şifrelemesinden bağımsız olarak tüm trafiğin proxy üzerinden gitmesi için sözlükte her iki anahtarın da bulunması şarttır.
Paroladaki özel karakterleri ele almak
Yaygın bir tuzak, proxy parolalarının @, : veya / gibi özel karakterler içermesidir. Bu karakterler bir URL'de ayraç görevi gördüğü için dize ayrıştırma mantığını bozabilir. Bunu önlemek için kimlik bilgilerini URL kodlamak üzere urllib.parse.quote kullanın.
from urllib.parse import quote
import requests
user = quote("user@domain")
password = quote("p@ssword!")
proxy_url = f"http://{user}:{password}@proxy.gproxy.com:8080"
proxies = {"http": proxy_url, "https": proxy_url}
Kalıcı bağlantılar için Session nesnelerini kullanmak
Yüksek performanslı uygulamalarda her istek için yeni bir bağlantı açmak verimsizdir. GProxy kullanıcılarının çoğu zaman "sticky session" sürdürmesi ya da yalnızca TCP el sıkışmasının maliyetini azaltması gerekir. requests.Session() nesnesi, proxy yapılandırmasını bir kez tanımlayıp birden çok istekte yeniden kullanmanızı sağlar.
import requests
session = requests.Session()
session.proxies = {
"http": "http://user:pass@host:port",
"https": "http://user:pass@host:port",
}
# 'session' ile yapılan sonraki tüm istekler kimlik doğrulamalı proxy'yi kullanır
response1 = session.get("https://api.ipify.org")
response2 = session.get("https://httpbin.org/user-agent")
print(response1.text, response2.text)
Session nesnesi kullanmanın birkaç teknik avantajı vardır:
- Bağlantı havuzu: proxy sunucusuna açık bağlantıları yeniden kullanır ve gecikmeyi belirgin biçimde azaltır.
- Çerez kalıcılığı: istekler arasında çerezleri otomatik yönetir; giriş duvarı olan siteleri kazımak için bu şarttır.
- Daha temiz kod:
proxiessözlüğünü herget()veyapost()çağrısına ayrı ayrı geçirmeniz gerekmez.

SOCKS5 proxy kimlik doğrulaması
HTTP proxy'ler yaygın olsa da SOCKS5 proxy'ler, her tür trafiği (TCP/UDP) taşıyabilen daha alt seviyeli bir protokol sunar. Python Requests'te kimlik doğrulamalı SOCKS5 kullanmak için PySocks bağımlılığını kurmanız gerekir:
pip install requests[socks]
Kurulumdan sonra uygulama benzerdir, yalnızca protokol öneki socks5h olur ("h" harfi DNS çözümlemesinin proxy tarafında yapılmasını sağlar; bu anonimlik için daha iyidir).
proxies = {
"http": "socks5h://user:pass@host:port",
"https": "socks5h://user:pass@host:port"
}
response = requests.get("https://httpbin.org/ip", proxies=proxies)
Python entegrasyonu için proxy türlerinin karşılaştırması
Doğru proxy türünü seçmek kullanım senaryonuza bağlıdır. GProxy, her biri farklı kimlik doğrulama davranışına ve performans profiline sahip çeşitli seçenekler sunar.
| Proxy türü | Kimlik doğrulama yöntemi | Başlıca kullanım alanı | Başarı oranı |
|---|---|---|---|
| Veri merkezi | Kullanıcı/parola veya IP beyaz listesi | Yüksek hızlı toplu scraping | Orta |
| Residential | Kullanıcı/parola (rotasyonlu) | Anti-bot sistemlerini aşma | Yüksek |
| ISP (statik) | Kullanıcı/parola | Sosyal medya yönetimi | Çok yüksek |
| Mobil | Kullanıcı/parola | Uygulama testi ve yüksek güvenlikli hedefler | En yüksek |
Gelişmiş hata yönetimi ve yeniden denemeler
Üretim ortamlarında proxy bağlantıları ağ dengesizliği ya da IP rotasyonu nedeniyle kopabilir. Sağlam bir kod bu istisnaları düzgün ele almalıdır. GProxy kullanırken kimlik bilgileriniz süresi dolarsa 407 hatası, ağ geçidine ulaşılamıyorsa ProxyError alabilirsiniz.
Üstel geri çekilmeli (exponential backoff) bir yeniden deneme stratejisi kurmak profesyonel yaklaşımdır. requests kütüphanesinin içeride kullandığı urllib3, güçlü bir Retry aracı sunar.
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
import requests
def get_secure_session(proxy_dict):
session = requests.Session()
retries = Retry(
total=5,
backoff_factor=1,
status_forcelist=[407, 500, 502, 503, 504],
raise_on_status=True
)
adapter = HTTPAdapter(max_retries=retries)
session.mount("http://", adapter)
session.mount("https://", adapter)
session.proxies = proxy_dict
return session
my_proxies = {"https": "http://user:pass@host:port"}
secure_session = get_secure_session(my_proxies)
try:
res = secure_session.get("https://target-site.com")
print(res.status_code)
except Exception as e:
print(f"Failed after retries: {e}")
Güvenlik açısından en iyi uygulamalar
- Kimlik bilgilerini asla koda gömmeyin: GProxy kullanıcı adı ve parolanızı saklamak için ortam değişkenlerini (
os.getenv) kullanın. Bu, GitHub gibi sürüm kontrol sistemlerinde kazara sızıntıları önler. - Hedef için HTTPS kullanın: proxy bağlantısı HTTP olsa bile hedef siteye her zaman
https://üzerinden erişmeye çalışın; böylece verileriniz uçtan uca şifrelenir. - Kimlik bilgilerini döndürün: olası bir sızıntının etkisini azaltmak için proxy parolalarınızı GProxy panelinden düzenli aralıklarla güncelleyin.
- SSL'i doğrulayın: Requests'te varsayılan değer
verify=True'dur. Kontrollü bir test ortamında değilseniz bunuFalseyapmayın; aksi halde Man-in-the-Middle (MITM) saldırılarına açık hale gelirsiniz.
Öne çıkanlar
Python Requests'te proxy kimlik doğrulamasında ustalaşmak, dayanıklı ve güvenli otomasyon araçları kurmak için şarttır. Proxy URL'lerini biçimlendirmeyi, özel karakterleri ele almayı, performans için session nesnelerini kullanmayı ve sağlam bir yeniden deneme mantığı kurmayı öğrendiniz.
- Biçim önemlidir: her zaman
http://user:pass@host:portsöz dizimini kullanın ve özel karakter içeren kimlik bilgilerini URL kodlayın. - Verimlilik: bağlantı havuzundan yararlanmak için
requests.Session()kullanın; bu, yüksek performanslı GProxy residential ağlarında özellikle faydalıdır. - Dayanıklılık: geçici 407 ve 5xx hatalarını otomatik ele almak için
urllib3yeniden denemelerini uygulayın.
Pratik ipucu 1: hata ayıklarken betiğinizin gönderdiği başlıkları incelemek için https://httpbin.org/get gibi bir servis kullanın. Bu, Proxy-Authorization başlığının doğru üretilip üretilmediğini doğrulamanıza yardımcı olur.
Pratik ipucu 2: proxy sağlayıcınız IP beyaz listesini destekliyorsa, ek bir güvenlik katmanı için bunu kullanıcı/parola kimlik doğrulamasıyla birlikte kullanmayı düşünün; böylece proxy kaynaklarınıza fiilen "çift faktörlü" bir kilit koymuş olursunuz.
Bunları da okuyun
A-Parser için Proxy'ler: Arama Motoru Parsing Kurulumu
Xrumer İçin Proxy'ler: Hangisini Seçmeli ve Nasıl Kurmalı
Key Collector için proxy'ler: kurulum ve rotasyon
Binom Tracker: Trafik arbitrajı için proxy kurulumu
VKDog Pro: VK içerik otomatik paylaşımı ve grabbing
