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://yerinehttp://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
- Yazılımınızın hangi protokolü gerektirdiğini belirleyin
- UDP'ye ihtiyacınız olup olmadığını kontrol edin (oyunlar, torrentler, VoIP)
- Sağlayıcıdan istenen protokol desteğini teyit edin
- Uyumluluğu test etmek için test erişimi isteyin
- 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.