Bloga geri dön

Proxy İstenen Protokolü Desteklemiyor: Ne Yapmalı?

Proxy'lerin protokollerle uyumsuzluk nedenleri ve pratik çözüm yolları: yerel dönüştürücülerin ayarlanmasından proxy türünün doğru seçimine kadar inceleniyor.

📅9 Aralık 2025
```html

Proxy İhtiyaç Duyulan Protokolü Desteklemiyor: Ne Yapmalı?

Proxy'yi ayarladınız, betiği başlattınız ve "Protocol not supported" (Protokol desteklenmiyor) veya "Connection refused" (Bağlantı reddedildi) hatası aldınız. Protokol uyumsuzluğu, göründüğünden daha sık karşılaşılan bir sorundur. Neden olduğunu ve sağlayıcı değiştirmeden bu sorunu nasıl çözeceğinizi inceleyelim.

Proxy'lerin Kullandığı Protokoller

Sorunu çözmeden önce protokoller arasındaki farkı anlamak önemlidir. Her birinin kendine özgü kullanım alanı ve kısıtlamaları vardır.

Protokol Varsayılan Portlar Özellikler
HTTP 80, 8080, 3128 Yalnızca HTTP trafiği, başlıkları değiştirebilir
HTTPS (CONNECT) 443, 8443 HTTP CONNECT üzerinden tünelleme, şifreleme
SOCKS4 1080 TCP bağlantıları, kimlik doğrulama yok, UDP yok
SOCKS5 1080, 1081 TCP ve UDP, kimlik doğrulama, proxy üzerinden DNS

Tipik Çatışmalar:

  • Selenium ve Puppeteer HTTP/HTTPS gerektirir, ancak sizde SOCKS5 var
  • Telegram botları SOCKS5 üzerinden çalışır, ancak proxy yalnızca HTTP destekler
  • Torrent istemcileri UDP'li SOCKS5 gerektirir, ancak proxy SOCKS4'tür
  • Oyun uygulamaları UDP gerektirir, ancak HTTP proxy UDP'yi desteklemez

Teşhis: Proxy Protokolünü Belirleme

Sağlayıcı protokolü açıkça belirtmemişse veya şüpheleriniz varsa, proxy'yi kendiniz kontrol edin.

Curl ile Kontrol

HTTP protokolünü test edelim:

# HTTP proxy
curl -x http://proxy_ip:port http://httpbin.org/ip

# Kimlik doğrulamalı
curl -x http://user:pass@proxy_ip:port http://httpbin.org/ip

SOCKS5'i test edelim:

# SOCKS5 proxy
curl -x socks5://proxy_ip:port http://httpbin.org/ip

# Proxy üzerinden DNS (socks5h)
curl -x socks5h://proxy_ip:port http://httpbin.org/ip

Komut proxy'nin IP adresini döndürüyorsa, protokol doğru belirlenmiştir. Connection refused veya Unsupported proxy hatası alıyorsanız, protokol yanlıştır.

Python ile Kontrol

import requests

proxy_ip = "proxy_ip:port"

# HTTP Testi
try:
    r = requests.get("http://httpbin.org/ip", 
                     proxies={"http": f"http://{proxy_ip}"}, 
                     timeout=10)
    print(f"HTTP çalışıyor: {r.json()}")
except Exception as e:
    print(f"HTTP çalışmıyor: {e}")

# SOCKS5 Testi (pip install requests[socks] gereklidir)
try:
    r = requests.get("http://httpbin.org/ip", 
                     proxies={"http": f"socks5://{proxy_ip}"}, 
                     timeout=10)
    print(f"SOCKS5 çalışıyor: {r.json()}")
except Exception as e:
    print(f"SOCKS5 çalışmıyor: {e}")

Otomatik Algılama

Protokol deneme betiği:

import requests

def detect_protocol(proxy_address):
    protocols = ["http", "https", "socks4", "socks5", "socks5h"]
    
    for proto in protocols:
        try:
            proxies = {
                "http": f"{proto}://{proxy_address}",
                "https": f"{proto}://{proxy_address}"
            }
            r = requests.get("http://httpbin.org/ip", 
                           proxies=proxies, timeout=5)
            if r.status_code == 200:
                return proto
        except:
            continue
    return None

result = detect_protocol("proxy_ip:port")
print(f"Tespit edilen protokol: {result}")

HTTP'den SOCKS'a ve Tersine Dönüştürme

Proxy'niz yazılımınızın ihtiyaç duyduğu protokolü desteklemiyorsa, yerel bir dönüştürücü kullanın.

Privoxy: HTTP → SOCKS

Privoxy, HTTP isteklerini alır ve bunları bir SOCKS proxy üzerinden yönlendirir.

Kurulum:

# Ubuntu/Debian
sudo apt install privoxy

# macOS
brew install privoxy

# Windows — resmi siteden indirin

Yapılandırma (config dosyası /etc/privoxy/config):

# Yerel port 8118'de (HTTP) dinle
listen-address 127.0.0.1:8118

# Harici SOCKS5 üzerinden yönlendir
forward-socks5 / socks_proxy_ip:1080 .

# Kimlik doğrulamalı
forward-socks5 / user:pass@socks_proxy_ip:1080 .

Artık yazılımınız 127.0.0.1:8118 adresine HTTP ile bağlanacak ve trafik SOCKS5 üzerinden gidecektir.

Gost: Evrensel Dönüştürücü

Gost, her türlü protokol dönüşümü için güçlü bir araçtır.

# Girişte HTTP proxy → Çıkışta SOCKS5
gost -L http://:8080 -F socks5://socks_proxy_ip:1080

# Girişte SOCKS5 → Çıkışta HTTP
gost -L socks5://:1080 -F http://http_proxy_ip:8080

# Her iki uçta da kimlik doğrulama ile
gost -L http://local_user:local_pass@:8080 \
     -F socks5://remote_user:remote_pass@proxy_ip:1080

Python Dönüştürücüsü

Basit görevler için minimalist bir dönüştürücü:

# pip install pproxy
# Girişte HTTP, çıkışta SOCKS5
pproxy -l http://:8080 -r socks5://proxy_ip:1080

# Girişte SOCKS5, çıkışta HTTP  
pproxy -l socks5://:1080 -r http://proxy_ip:8080

Yerel Tüneller Kurma

Bazen dönüştürme yeterli olmaz; tam teşekküllü bir tünel gerekebilir.

HTTP Proxy Üzerinden SSH Tüneli

Bir SSH sunucunuz ve bir HTTP proxy'niz varsa, SOCKS5 oluşturabilirsiniz:

# HTTP proxy üzerinden localhost:1080'de bir SOCKS5 oluşturma
ssh -D 1080 -o ProxyCommand="nc -X connect -x http_proxy:8080 %h %p" user@ssh_server

HTTPS için Stunnel

Elinizde yalnızca HTTP varsa ve HTTPS proxy'ye ihtiyacınız varsa:

# stunnel.conf
[https-proxy]
client = yes
accept = 127.0.0.1:8443
connect = http_proxy_ip:8080
protocol = connect
protocolHost = target_host:443

Mevcut Protokole Göre Yazılım Ayarlama

Bazen dönüştürmektense, yazılımı mevcut protokole göre ayarlamak daha kolaydır.

Farklı Protokollerle Selenium

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# HTTP proxy (standart yöntem)
options = Options()
options.add_argument('--proxy-server=http://proxy_ip:8080')

# SOCKS5 proxy
options.add_argument('--proxy-server=socks5://proxy_ip:1080')

# Firefox için SOCKS5
from selenium.webdriver.firefox.options import Options as FirefoxOptions
profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.socks", "proxy_ip")
profile.set_preference("network.proxy.socks_port", 1080)
profile.set_preference("network.proxy.socks_version", 5)

aiohttp ile SOCKS

# pip install aiohttp-socks
import aiohttp
from aiohttp_socks import ProxyConnector

async def fetch_with_socks():
    connector = ProxyConnector.from_url('socks5://proxy_ip:1080')
    async with aiohttp.ClientSession(connector=connector) as session:
        async with session.get('http://httpbin.org/ip') as response:
            return await response.json()

Telegram Botları HTTP Üzerinden

Telegram kütüphanesi SOCKS5 gerektiriyorsa ancak sizde HTTP varsa:

# python-telegram-bot ile HTTP proxy
from telegram.ext import ApplicationBuilder

application = (
    ApplicationBuilder()
    .token("YOUR_TOKEN")
    .proxy_url("http://proxy_ip:8080")  # HTTP ile çalışır
    .build()
)

İpucu: Birçok modern kütüphane hem HTTP'yi hem de SOCKS'u destekler. Belki de sadece URL şemasını socks5:// yerine http:// olarak değiştirmeniz yeterlidir.

İstenen Protokollü Proxy Nasıl Seçilir

Protokol sorunlarından kaçınmak için gereksinimlerinizi önceden belirleyin.

Uyumluluk Matrisi

Görev Önerilen Protokol Neden
Web Kazıma (Scraping) HTTP/HTTPS Geniş destek, basit kurulum
Tarayıcı Otomasyonu HTTP veya SOCKS5 Tarayıcıya ve çerçeveye bağlıdır
Telegram, Discord Botları SOCKS5 Kütüphane gereksinimleri
Torrentler UDP'li SOCKS5 DHT ve PEX UDP kullanır
Oyunlar, VoIP UDP'li SOCKS5 Düşük gecikme, UDP trafiği
API İstekleri HTTP/HTTPS REST API HTTP üzerinden çalışır

Proxy Sağlayıcısı Seçerken Dikkat Edilmesi Gerekenler

  • Desteklenen Protokol Listesi — Açıkça belirtilmiş olmalı
  • Değiştirme Yeteneği — Bazı sağlayıcılar aynı IP'ye farklı portlar/protokoller üzerinden erişim sağlar
  • SOCKS5 için UDP Desteği — Her SOCKS5 proxy'si UDP'yi desteklemez
  • Yapılandırma Dokümantasyonu — Farklı diller ve araçlar için örnekler

Konut proxy'leri genellikle hem HTTP/HTTPS hem de SOCKS5'i aynı anda destekler, bu da uyumluluk sorunlarının çoğunu ortadan kaldırır. Veri merkezi proxy'leri ise genellikle HTTP/HTTPS ile sınırlıdır.

Satın Alma Öncesi Kontrol Listesi

  1. Yazılımınızın hangi protokolü gerektirdiğini belirleyin
  2. UDP'ye ihtiyacınız olup olmadığını kontrol edin (oyunlar, torrentler, VoIP)
  3. Sağlayıcıdan istenen protokol desteğini teyit edin
  4. Uyumluluğu test etmek için test erişimi isteyin
  5. B Planı olarak yerel bir dönüştürücü hazırlayın

Sonuç

Protokol uyumsuzluğu çözülebilir bir sorundur. Çoğu durumda, Privoxy veya Gost gibi yerel bir dönüştürücü kurmak yeterlidir. Uzun vadeli projeler için ise, istenen protokolü destekleyen bir proxy seçmek daha avantajlıdır.

Protokol seçimi konusunda esneklik gerektiren görevler için, çoklu protokol erişimine sahip konut proxy'leri uygundur — daha fazla bilgi için proxycove.com adresini ziyaret edin.

```