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.

Son güncelleme: 29 Ekim 2026

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)

Protokol
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)
Örnek değerler: KULLANICI_ADI, SIFRE, proxy.example.com, PORT paketinize göre değişir.

Çalışma ortamı: Python 3.10+ · requests 2.32+

Kurulumpip 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.Session kullanın, bağlantılar böylece yeniden kullanılır; ama Session üzerinde varsayılan bir timeout ayarı 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çin pip install "httpx[socks]" gerekir. Eski proxies= 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:// veya socks5h://.
  • Kimlik bilgisi: kullanıcı adı ve şifre. Örneklerde KULLANICI_ADI ve SIFRE. 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:PORT
Proxy adresinin genel biçimi (yer tutucularla)

Bu 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.

Kodda dikkat edilecek farklar
KonuHTTP proxySOCKS5 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ğrulamaProxy-Authorization başlığı; reddedilirse 407 yanıtı gelirKullanı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şiktirBazı 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"
Linux ve macOS için ortam değişkenleri (yer tutucu değerlerle). Windows PowerShell'de karşılığı $env:PROXY_USER = 'KULLANICI_ADI' biçimindedir.

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))
Sınırlı sayıda deneme ve üstel bekleme ile yeniden deneme (Python, requests); 407 yanıtı yeniden denenmez
Sık görülen belirtiler
BelirtiGenellikle 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ıyorOrtam 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 gelmezAynı 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 429Yanı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 olduDoğ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-agent paketinde socks5h:// şeması.
  • Node.js: socks paketine hedef, IP olarak değil alan adı olarak verilir.
  • Go: net/http ile socks5:// ş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_HOSTNAME seç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 Via ve Forwarded gibi 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.

  1. Çı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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Sık sorulan sorular

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