Geliştiriciler
Geliştiriciler için Proxy Kod Örnekleri
Bu sayfada HTTP ve SOCKS5 proxy trafiğini Python'dan Bash'e yaygın dillerde nasıl göndereceğinizi, kopyalayıp çalıştırabileceğiniz istemci kodlarıyla görürsünüz. Örneklerin hepsi her dilin kendi standart ya da yaygın kütüphanesini kullanır; kurmanız gereken bir API ya da SDK yoktur: adres, port, protokol ve kimlik bilgisi yeterlidir. Kodlardaki KULLANICI_ADI, SIFRE, proxy.example.com ve PORT yer tutucudur; gerçek değerleri satın aldığınız paketin bağlantı bilgilerinden alırsınız.
Kod örnekleri
HTTP ve SOCKS5 için kopyalanabilir kod örnekleri
Dilinizi ve protokolü seçip kodu kopyalayın. Yer tutucuları kendi bağlantı bilgilerinizle değiştirin.
Python (requests)
import os
from urllib.parse import quote
import requests
# Bağlantı bilgileri ortam değişkenlerinden okunur; yoksa yer tutucular kullanılır
HOST = os.environ.get("PROXY_HOST", "proxy.example.com")
PORT = os.environ.get("PROXY_PORT", "PORT")
USER = quote(os.environ.get("PROXY_USER", "KULLANICI_ADI"), safe="")
PASSWORD = quote(os.environ.get("PROXY_PASS", "SIFRE"), safe="")
# HTTP proxy: HTTPS hedeflerde proxy üzerinden CONNECT tüneli açılır
proxy_url = f"http://{USER}:{PASSWORD}@{HOST}:{PORT}"
proxies = {"http": proxy_url, "https": proxy_url}
try:
response = requests.get(
"https://api.ipify.org?format=json",
proxies=proxies,
timeout=(5, 15), # (bağlanma, okuma) saniye
)
response.raise_for_status()
print(response.json()) # örnek çıktı: {'ip': '203.0.113.7'}
except requests.exceptions.ProxyError as exc:
print("Proxy hatası (adres, port veya kimlik bilgisi?):", exc)
except requests.exceptions.Timeout:
print("Zaman aşımı: proxy ya da hedef süre içinde yanıt vermedi")
except requests.exceptions.RequestException as exc:
print("İstek başarısız:", exc)Çalışma ortamı: Python 3.10+ · requests 2.32+
pip install "requests[socks]"HTTP proxy ile istek
Kullanıcı adı ve şifredeki özel karakterler quote ile kodlanır. timeout verilmezse requests süresiz bekler; bağlanma ve okuma süresini ayrı vermek için bir çift kullanın.
İpuçları
- Kullanıcı adı ve şifreyi ortam değişkeninden okuyun; koda ya da depoya yazmayın.
- Aynı proxy ile çok istek yapacaksanız
requests.Sessionkullanın, bağlantılar böylece yeniden kullanılır; amaSessionüzerinde varsayılan birtimeoutayarı yoktur, süreyi her çağrıda verin. - Alan adının proxy tarafında çözülmesini istiyorsanız
socks5h://kullanın;socks5://adı yerelde çözer. - httpx (0.28+) kullanıyorsanız adres
httpx.Client(proxy=proxy_url)ile verilir,socks5h://şeması da bu sürümde geçerlidir; SOCKS5 içinpip install "httpx[socks]"gerekir. Eskiproxies=parametresi 0.28'de kaldırıldı.
Koddan proxy kullanmak dört bilgiyle başlar
Proxy, isteğinizi hedef siteye kendi adına ileten bir aracı sunucudur. Kod tarafında yapacağınız iş, HTTP istemcinize isteği doğrudan hedefe değil proxy sunucusuna göndermesini söylemektir. Bunun için dört bilgi yeterlidir.
- Adres: proxy sunucusunun alan adı ya da IP adresi. Örneklerde
proxy.example.com. - Port: proxy'nin bağlantı kabul ettiği port numarası. Örneklerde
PORT. - Protokol: HTTP ya da SOCKS5. Çoğu kütüphanede adresin başındaki şemayla belirtilir:
http://veyasocks5h://. - Kimlik bilgisi: kullanıcı adı ve şifre. Örneklerde
KULLANICI_ADIveSIFRE. IP yetkilendirme kullanıyorsanız kodda kimlik bilgisi bulunmaz.
Düz metin
http://KULLANICI_ADI:SIFRE@proxy.example.com:PORT
socks5h://KULLANICI_ADI:SIFRE@proxy.example.com:PORTBu sayfadaki her örnek aynı işi yapar: api.ipify.org adresine proxy üzerinden bir GET isteği gönderir ve yanıtı yazdırır. Yanıttaki IP, hedef sitenin gördüğü çıkış IP'sidir; proxy kullanılıyorsa tarayıcınızın doğrudan gördüğü IP'den farklı olması beklenir. api.ipify.org üçüncü taraf bir IP yansıtma hizmetidir; yalnızca çıkış IP'sini görmek için ve seyrek isteklerle kullanın.
Mobil Proxy ve Rotating Mobil Proxy paketlerinde de proxy'ye bağlanan kod bu dört bilgiyi kullanır. IP değiştirme davranışı ürüne göre farklıdır; ayrıntısı ilgili ürün sayfasındadır.
HTTP ve SOCKS5: kodda ne değişir?
İki protokol arasındaki fark kod tarafında küçüktür: adres şeması değişir, bazı kütüphanelerde ek bir paket gerekir. Hangisinin daha iyi olduğu değil, istemcinizin neyi desteklediği ve paketinizin hangi protokolü sunduğu belirleyicidir.
| Konu | HTTP proxy | SOCKS5 proxy |
|---|---|---|
| Adres şeması | http:// | socks5h:// (alan adı proxy'de çözülür) ya da socks5:// (cURL ve Python'da yerelde çözülür; Go gibi bazı kütüphanelerde proxy'de) |
| HTTPS hedefler | İstemci proxy'ye CONNECT alan-adi:443 gönderir; TLS hedef siteyle uçtan uca kurulur | İstemci proxy'ye CONNECT komutuyla hedefe bir TCP bağlantısı açtırır; TLS yine hedef siteyle kurulur |
| Kimlik doğrulama | Proxy-Authorization başlığı; reddedilirse 407 yanıtı gelir | Kullanıcı adı ve şifre müzakeresi (RFC 1929); reddedilirse HTTP durum kodu yoktur, bağlantı kapanır |
| Ek paket | Çoğu kütüphanede yerleşiktir | Bazı kütüphanelerde gerekir: Python requests için requests[socks], Node.js için socks-proxy-agent ya da socks |
Genel teknik bilgidir. İkisi de proxy ile aranızdaki bağlantıyı kendiliğinden şifrelemez; HTTPS hedeflerde koruma TLS'ten gelir.
Hangi pakette hangi protokolün bulunduğu pakete göre değişir. Mobil Proxy'nin Türkiye haftalık ve aylık paketleri ile ISP Proxy'nin Türkiye paketlerinde protokol (HTTP ya da SOCKS5) sipariş formunda seçilir. Sağlayıcının belirttiğine göre Rotating Mobil Proxy'nin Türkiye paketleri yalnızca HTTP ve HTTPS sunar; bu paketlerde SOCKS5 örneklerini kullanamazsınız. Ürün bazında tablo için HTTP & SOCKS5 Proxy sayfasına bakın.
Tarayıcı araçlarında SOCKS5 sınırı
Kullanıcı adı ve şifreli SOCKS5 proxy, tarayıcı otomasyon araçlarında sorun çıkarır: Chromium bu kimlik doğrulamayı desteklemez (Puppeteer dahil) ve Playwright, socks5:// adresiyle birlikte kullanıcı adı ve şifre verildiğinde hata verir. Tarayıcı otomasyonunda HTTP proxy kullanın; paketiniz HTTP sunmuyorsa SOCKS5 kimlik doğrulamasını destekleyen başka bir istemci seçin.
Not
Operatör, lokasyon ve özellik bilgileri ürün sayfalarında belirtilen sağlayıcı bilgilerine dayanır; ölçülmüş bir sonuç ya da taahhüt değildir.
Kullanıcı adı ve şifre ya da IP yetkilendirme
Proxy'nin sizi tanıması için iki yaygın yol vardır. Birincisi kullanıcı adı ve şifredir: HTTP proxy'de Proxy-Authorization başlığıyla, SOCKS5'te protokolün kendi kimlik müzakeresiyle gönderilir. Bu bilgiler proxy ile aranızdaki bağlantıda ayrıca şifrelenmez; güvenmediğiniz bir ağdan çalışırken bunu hesaba katın.
İkincisi IP yetkilendirmedir (IP whitelist). Sağlayıcının belirttiğine göre Mobil Proxy ve Datacenter Proxy gibi bazı ürünlerde kullanıcı adı ve şifre yerine bu yöntem de sunulur; her pakette bulunmayabilir. Kullanıldığında kodda kimlik bilgisi yazmazsınız (örneklerdeki kullanıcı adı ve şifre satırlarını çıkarırsınız); proxy sizi bağlandığınız genel IP adresinden tanır. IP'niz değişen bir ağdan çalışıyorsanız yetkili adresin de güncel olması gerekir. Yöntemin paketinizde olup olmadığını ürün sayfasından ya da WhatsApp'tan öğrenin.
Şifreyi koda yazmayın. Bu sayfadaki örnekler bilgileri PROXY_HOST, PROXY_PORT, PROXY_USER ve PROXY_PASS ortam değişkenlerinden okur; değişken tanımlı değilse yer tutucu değerlere düşer. Bash örneğinde adres ve port betiğin başında yazılıdır, kullanıcı adı ve şifre ise ortam değişkeninden alınır.
Bash
export PROXY_HOST="proxy.example.com"
export PROXY_PORT="PORT"
export PROXY_USER="KULLANICI_ADI"
export PROXY_PASS="SIFRE"Kimlik bilgisi bir adresin içine yazılıyorsa @, :, / ve # gibi karakterlerin URL kodlamasından geçmesi gerekir; kütüphane kullanıcı adı ve şifreyi ayrı alanlar olarak alıyorsa gerekmez. Bilgilerin yazıldığı .env benzeri dosyaları herkese açık bir depoya eklemeyin, proxy adresini şifresiyle birlikte log çıktısına yazdırmayın.
Zaman aşımı, yeniden deneme ve hata kodları
Ağ kodunda ilk kural, her isteğe bir zaman aşımı koymaktır. Python requests'te varsayılan zaman aşımı yoktur; Go'da http.Client için Timeout sıfırsa sınır yoktur; JavaScript'te fetch için sınırı AbortSignal.timeout() ile siz koyarsınız. Sınır koymazsanız takılan tek bir bağlantı betiğinizi çok uzun süre bekletebilir. Bağlanma ve yanıt bekleme sürelerini ayrı ayrı sınırlayabiliyorsanız ayırın; hatanın nerede olduğunu anlamak kolaylaşır.
Geçici hatalarda (zaman aşımı, kopan bağlantı, 429, 5xx) birkaç kez yeniden deneyin; ama her denemeden önce giderek artan bir süre bekleyin ve deneme sayısını sınırlı tutun. Yanlış kimlik bilgisini tekrar denemek sonucu değiştirmez. Rotating Mobil Proxy'de sağlayıcı beyanına göre varsayılan davranış her istekte değişen bir çıkış IP'sidir; bir IP'ye bağlı oturumlar (örneğin giriş yapılmış bir hesap) istekler arasında bozulabilir, bunu istemci tarafında hesaba katın.
Python
import random
import time
import requests
RETRYABLE = (requests.exceptions.ConnectionError, requests.exceptions.Timeout)
def get_with_retry(url, proxies, attempts=3):
for attempt in range(1, attempts + 1):
try:
response = requests.get(url, proxies=proxies, timeout=(5, 15))
if response.status_code not in (429, 500, 502, 503, 504):
return response
error = f"geçici HTTP durumu: {response.status_code}"
except RETRYABLE as exc:
if "407" in str(exc): # kimlik bilgisi reddedildi: tekrar denemek işe yaramaz
raise
error = str(exc)
if attempt == attempts:
raise RuntimeError(f"{attempts} denemeden sonra vazgeçildi: {error}")
# üstel bekleme: 2, 4, 8 ... saniye + küçük rastgele sapma
time.sleep(2**attempt + random.uniform(0, 1))| Belirti | Genellikle ne anlama gelir | İlk kontrol |
|---|---|---|
| HTTP 407 ya da “Proxy Authentication Required” | HTTP proxy kullanıcı adı ve şifreyi kabul etmedi ya da IP yetkilendirmesi IP'nizi tanımıyor | Ortam değişkenlerini, özel karakter kodlamasını ve yetkili IP adresini kontrol edin |
| SOCKS5'te “authentication failed” ya da bağlantının kapanması | SOCKS5 kimlik doğrulaması reddedildi; protokolde HTTP durum kodu olmadığı için 407 gelmez | Aynı kontrol; protokolün paketinizde bulunduğunu da doğrulayın |
| Bağlantı reddedildi (connection refused) ya da zaman aşımı | Adres ya da port yanlış, bir güvenlik duvarı engelliyor ya da yanlış protokolle bağlanıyorsunuz (örneğin HTTP proxy'ye SOCKS5 ile) | Port Kontrol ve Proxy Kontrol ile sınayın |
| Hedef siteden 403 ya da 429 | Yanıtı proxy değil hedef site verdi; çoğunlukla bir hız sınırı ya da erişim kuralı | İstek hızını düşürün, hedefin kullanım koşullarına uyun |
| Sertifika (TLS) hatası | Sertifika doğrulaması başarısız oldu | Doğrulamayı kapatmayın; sistem saatini, CA paketini ve araya giren ağ cihazlarını kontrol edin |
Hedef siteye saygılı olun: eşzamanlı istek sayısını küçük tutun, 429 yanıtındaki Retry-After başlığına uyun, hedefin kullanım koşullarını ve robots.txt kurallarını gözetin. Sağlayıcı beyanına göre “Sınırsız” paketlerde veri kotası yoktur ama adil kullanım kuralları geçerlidir. Ayrıntı için Sorumlu Kullanım sayfasına bakın.
socks5h, uzaktan DNS ve proxy’nin gizlemedikleri
Bir alan adına bağlanmadan önce adın IP adresine çevrilmesi, yani DNS sorgusu gerekir. SOCKS5'te istemci alan adını proxy'ye gönderirse çözümlemeyi proxy yapar; adı kendisi çözüp yalnızca IP gönderirse sorgu sizin ağınızdan çıkar. cURL ve onu örnek alan kütüphanelerde bu fark şema adında yazılır: socks5:// adı yerelde, socks5h:// proxy tarafında çözer. Bu bir RFC değil cURL'ün kuralıdır; kütüphaneniz aynı adı tanımayabilir ya da iki adı da aynı işleyebilir, belgesine bakın.
Bu sayfadaki SOCKS5 örneklerinde alan adının proxy tarafında çözülmesi şöyle sağlanır:
- Python (requests):
socks5h://şeması. - JavaScript ve TypeScript:
socks-proxy-agentpaketindesocks5h://şeması. - Node.js:
sockspaketine hedef, IP olarak değil alan adı olarak verilir. - Go:
net/httpilesocks5://şeması; Go alan adını zaten proxy'ye gönderir (socks5h://ancak Go 1.23'ten beri tanınır). - PHP: cURL için
CURLPROXY_SOCKS5_HOSTNAMEseçeneği. - Diğer dillerde ilgili örneğin notuna ve ipuçlarına bakın; alan adı çözümlemesinin nerede yapıldığı kütüphaneye göre değişir.
HTTP proxy ile HTTPS siteye giderken istemci CONNECT alan-adi:443 gönderir; alan adı proxy'ye gittiği için çözümlemeyi yine proxy yapar. Tarayıcılar yapılandırmaya göre başka DNS isteklerini (örneğin DoH ya da ön çözümleme) proxy dışından da yapabilir.
Proxy, hedef sitenin gördüğü çıkış IP'sini değiştirir; başka hiçbir şeyi kendiliğinden değiştirmez. Şunlar proxy'den bağımsızdır:
- Tarayıcının saat dilimi, dili ve yerel ayarları ile cihaz parmak izi. Çıkış IP'sinin ülkesiyle bunların uyuşmaması, hedef siteye görünen bir tutarsızlıktır.
- Çerezler ve oturum açtığınız hesabın kendisi.
- WebRTC: tarayıcı yapılandırmasına göre, proxy ayarını atlayan doğrudan bağlantılarla gerçek IP'nizi gösterebilir (RFC 8828).
- Proxy ya da aradaki sistemler tarafından eklenen
ViaveForwardedgibi başlıklar. Bunların bulunup bulunmadığı sağlayıcıya göre değişir; kendi testinizle doğrulayın.
Kod örnekleri komut satırı istemcileridir; WebRTC ve saat dilimi gibi konular ancak tarayıcı otomasyonu kullanıyorsanız gündeme gelir. Proxy bir anonimlik garantisi değildir; yalnızca çıkış IP'sini değiştirir.
Kurulumu araçlarla kontrol edin
Kodun hatasız bitmesi isteğin proxy'den geçtiğini göstermez; bazı kütüphaneler proxy ayarını sessizce yok sayabilir. Doğrulamak için şu sırayı izleyin.
- Çıkış IP'sini yazdırın
Bu sayfadaki örneklerden birini çalıştırın. Yazdırılan IP, hedef sitenin gördüğü çıkış IP'sidir.
- Kendi IP'nizle karşılaştırın
Kodu çalıştırdığınız makineyle aynı ağdan bakıyorsanız, IP Adresim aracı bu siteye hangi IP ile bağlandığınızı gösterir. Kodun yazdırdığı IP bununla aynıysa istek proxy'den geçmemiş demektir.
- Proxy'yi araçla sınayın
Proxy Kontrol bir proxy'nin bağlantı kabul edip etmediğini ve çıkış IP'sini sınar; protokolü biliyorsanız HTTP Proxy Kontrol ya da SOCKS5 Proxy Kontrol kullanın. Sınama bizim sunucumuzdan yapılır; yalnızca sizin IP'nizi kabul eden IP yetkilendirmeli bir proxy bu araçlarla sınanamaz.
- Adres ve portu ayrı sınayın
Port Kontrol bir portun dışarıdan erişilebilir olup olmadığını gösterir. Bağlantı kurulamıyorsa önce bunu deneyin.
- Diğer araçların neyi göstermediğini bilin
DNS Sorgulama bir alan adının DNS kayıtlarını gösterir; kodunuzun adı nerede çözdüğünü göstermez. IPv4 / IPv6 Bilgisi bir IP adresinin sürümünü ve türünü, User Agent Kontrol ise tarayıcınızın gönderdiği User-Agent bilgisini gösterir. Üçü de kodunuzun proxy kullanıp kullanmadığını söylemez.
Not
Bir araç, o andaki tek bir denemenin sonucunu gösterir. Proxy'nin hızı, sürekliliği ya da hedef sitelerde nasıl karşılanacağı hakkında kanıt değildir; bu sayfada ölçülmüş bir değer paylaşmıyoruz.
Sorun sürerse Mobil Proxy Sorun Giderme rehberinden devam edin. Protokol seçimi için HTTP ve SOCKS5 Proxy Farkı rehberine, paketinize özel sorular için iletişim sayfasındaki WhatsApp bağlantısına bakabilirsiniz.
Kaynaklar ve lisanslar
Dil logoları: Go gopher’ı Renee French (CC BY 4.0); PHP logosu Colin Viebrock (CC BY-SA 4.0); Ruby logosu Yukihiro Matsumoto (CC BY-SA 2.5); Rust logosu Rust Foundation (CC BY 4.0); GNU Bash logosu © Free Software Foundation (Free Art License); JS logosu Christopher Williams ve Manuel Strehl (MIT); Java maskotu Duke, OpenJDK Duke projesinden (BSD). Diğer simgeler Devicon’dan (MIT). Tüm ad ve logolar sahiplerinin ticari markalarıdır; yalnızca proxy’lerin hangi dillerden kullanılabileceğini göstermek için yer alır, sahipleriyle bağlantımız yoktur.
Sonraki adımlar
HTTP & SOCKS5 Proxy
Protokol seçimi rehberi
HTTP ve SOCKS5 Proxy Farkı
HTTP proxy ve SOCKS5 ne yapar? CONNECT tüneli, kimlik doğrulama hataları, DNS çözümleme ve UDP açısından iki protokolün farkı ile seçim ölçütleri.
Mobil Proxy Nasıl Kullanılır?
Sunucu adresi, port, kullanıcı adı ve şifreyi tarayıcıya, telefona, uygulamaya ve betiğe girmenin adımları; ardından çıkış IP’sini doğrulama yöntemleri.
Proxy Kontrol
Bir proxy’nin bağlantı kabul edip etmediğini ve çıkış IP’sini sınar.
Mobil Proxy
Operatör hattından çıkış IP’si
Rotating Mobil Proxy
Mobil IP rotasyonu
Sık sorulan sorular
Örneklerdeki KULLANICI_ADI, SIFRE, proxy.example.com ve PORT yer tutucudur; bunları kendi paketinizin bağlantı bilgileriyle değiştirirsiniz. Sağlayıcı beyanına göre Mobil Proxy bağlantı bilgileri müşteri panelinde gösterilir. Şifreyi koda yazmak yerine ortam değişkeninde tutun ve gerçek bilgi içeren dosyayı herkese açık bir depoya koymayın. Bilgilerin çalışıp çalışmadığını Proxy Kontrol aracıyla sınayabilirsiniz.
Python, JavaScript, TypeScript, Node.js, Go, PHP, Java, C#, C++, Ruby, Rust ve Bash için proxy bağlantısı örnekleri bulursunuz; her dilde HTTP ve SOCKS5 kullanımı ayrı ayrı gösterilir. Örnekler her dilin yaygın HTTP istemcisini ve onun kendi proxy seçeneğini kullanır. Kitaplıkların proxy desteği farklıdır ve sürümle değişir; bir örnek çalışmazsa kullandığınız sürümün proxy belgesine de bakın. Genel anlatım için Mobil Proxy Nasıl Kullanılır? rehberini okuyun.
Bu iki ad cURL'de ve onu örnek alan kitaplıklarda kullanılır; bir standart değil, istemci kuralıdır. “socks5” ile alan adı çözümlemesi sizin tarafınızda yapılır, “socks5h” ile alan adı proxy tarafında çözülür. DNS sorgularının yerel ağınızdan görünmesini istemiyorsanız ve kitaplığınız bu kuralı destekliyorsa socks5h kullanın. Hangi üründe SOCKS5 bulunduğunu HTTP & SOCKS5 Proxy sayfasındaki tabloda görebilirsiniz.
Hayır. Bu site bir SDK ya da API sunmaz; proxy'yi kullandığınız dilin ya da aracın standart HTTP veya SOCKS5 proxy ayarına adres, port, kullanıcı adı ve şifreyi yazarak kullanırsınız. Örnekler de bu yüzden yalnızca kitaplıkların kendi seçeneklerini gösterir. Hangi protokolü seçeceğinizi HTTP ve SOCKS5 Proxy Farkı rehberinden öğrenebilirsiniz.
Sağlayıcı beyanına göre Mobil Proxy paketlerinin kendi IP değiştirme bağlantısı vardır; bunu tarayıcıdan açabilir ya da bir betikten çağırabilirsiniz. Rotating Mobil Proxy için sağlayıcı, varsayılan davranışın her istekte yeni IP olduğunu belirtir; kodda ek bir şey yapmanız gerekmez. İsteğe bağlı oturum kimliğinin nasıl yazılacağı ve ne kadar süreceği yayımlanmadığı için örneklerde göstermiyoruz; kullanmadan önce WhatsApp'tan sorun. Yöntemlerin ayrıntısı için Mobil Proxy IP Değiştirme Yöntemleri ve Sınırları rehberine bakın.
Önce bilgileri bir araçla sınayın: adres, port, protokol, kullanıcı adı ve şifrenin doğru olduğunu Proxy Kontrol ile görebilirsiniz. HTTP proxy'de 407 hatası, proxy'nin kimlik doğrulaması istediğini ya da verdiğiniz bilgiyi kabul etmediğini gösterir; SOCKS5'te kimlik doğrulama başarısız olursa bağlantı kapanır. İstemcide HTTP yerine SOCKS5 seçmek ya da tersi de yaygın bir hata kaynağıdır. Adım adım kontrol listesi için Mobil Proxy Sorun Giderme rehberine bakın.
Satın alma adımı
Paketinizi seçin, kodunuzu çalıştırın
Satın alma, güvenli ödeme sayfasında tamamlanır.
WhatsApp'tan sorun (WhatsApp, yeni sekmede açılır)+90 850 550 34 60