Proxy unterstützt das benötigte Protokoll nicht: Was tun?
Sie haben einen Proxy eingerichtet, das Skript gestartet – und erhalten die Fehlermeldung „Protocol not supported“ oder „Connection refused“. Das Problem der Protokollinkompatibilität tritt häufiger auf, als man denkt. Wir zeigen, warum dies geschieht und wie Sie die Aufgabe lösen können, ohne den Anbieter wechseln zu müssen.
Welche Protokolle Proxys verwenden
Bevor Sie das Problem lösen, ist es wichtig, die Unterschiede zwischen den Protokollen zu verstehen. Jedes hat seinen eigenen Anwendungsbereich und Einschränkungen.
| Protokoll | Standardports | Besonderheiten |
|---|---|---|
| HTTP | 80, 8080, 3128 | Nur HTTP-Traffic, kann Header modifizieren |
| HTTPS (CONNECT) | 443, 8443 | Tunneling über HTTP CONNECT, Verschlüsselung |
| SOCKS4 | 1080 | TCP-Verbindungen, keine Authentifizierung, kein UDP |
| SOCKS5 | 1080, 1081 | TCP und UDP, Authentifizierung, DNS über Proxy |
Typische Konflikte:
- Selenium und Puppeteer benötigen HTTP/HTTPS, Sie haben aber SOCKS5
- Telegram-Bots arbeiten über SOCKS5, der Proxy unterstützt aber nur HTTP
- Torrent-Clients benötigen SOCKS5 mit UDP, der Proxy bietet nur SOCKS4
- Gaming-Anwendungen erfordern UDP, was HTTP-Proxys nicht unterstützen
Diagnose: Das Proxy-Protokoll bestimmen
Wenn der Anbieter das Protokoll nicht explizit angibt oder Sie unsicher sind, testen Sie den Proxy selbst.
Testen mit curl
Testen des HTTP-Protokolls:
# HTTP Proxy
curl -x http://proxy_ip:port http://httpbin.org/ip
# Mit Authentifizierung
curl -x http://user:pass@proxy_ip:port http://httpbin.org/ip
Testen von SOCKS5:
# SOCKS5 Proxy
curl -x socks5://proxy_ip:port http://httpbin.org/ip
# SOCKS5 mit DNS über Proxy (socks5h)
curl -x socks5h://proxy_ip:port http://httpbin.org/ip
Wenn der Befehl die IP-Adresse des Proxys zurückgibt, wurde das Protokoll korrekt identifiziert. Eine Fehlermeldung wie Connection refused oder Unsupported proxy deutet auf ein falsches Protokoll hin.
Testen mit Python
import requests
proxy_ip = "proxy_ip:port"
# HTTP-Test
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"http://{proxy_ip}"},
timeout=10)
print(f"HTTP funktioniert: {r.json()}")
except Exception as e:
print(f"HTTP funktioniert nicht: {e}")
# SOCKS5-Test (erfordert pip install requests[socks])
try:
r = requests.get("http://httpbin.org/ip",
proxies={"http": f"socks5://{proxy_ip}"},
timeout=10)
print(f"SOCKS5 funktioniert: {r.json()}")
except Exception as e:
print(f"SOCKS5 funktioniert nicht: {e}")
Automatische Erkennung
Skript zum Durchprobieren der Protokolle:
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"Erkanntes Protokoll: {result}")
Konvertierung von HTTP zu SOCKS und umgekehrt
Wenn der Proxy nicht das Protokoll unterstützt, das Ihre Software benötigt, verwenden Sie einen lokalen Konverter.
Privoxy: HTTP → SOCKS
Privoxy nimmt HTTP-Anfragen entgegen und leitet sie über einen SOCKS-Proxy weiter.
Installation:
# Ubuntu/Debian
sudo apt install privoxy
# macOS
brew install privoxy
# Windows — von der offiziellen Website herunterladen
Konfiguration (Datei /etc/privoxy/config):
# Lauscht auf dem lokalen Port 8118 (HTTP)
listen-address 127.0.0.1:8118
# Leitet weiter über den externen SOCKS5
forward-socks5 / socks_proxy_ip:1080 .
# Mit Authentifizierung
forward-socks5 / user:pass@socks_proxy_ip:1080 .
Ihre Software verbindet sich nun über HTTP mit 127.0.0.1:8118, und der Traffic wird über SOCKS5 geleitet.
Gost: Universeller Konverter
Gost ist ein leistungsstarkes Tool für alle Arten von Protokolltransformationen.
# HTTP-Proxy als Eingang → SOCKS5 als Ausgang
gost -L http://:8080 -F socks5://socks_proxy_ip:1080
# SOCKS5 als Eingang → HTTP als Ausgang
gost -L socks5://:1080 -F http://http_proxy_ip:8080
# Mit Authentifizierung an beiden Enden
gost -L http://local_user:local_pass@:8080 \
-F socks5://remote_user:remote_pass@proxy_ip:1080
Konverter in Python
Ein minimalistischer Konverter für einfache Aufgaben:
# pip install pproxy
# HTTP als Eingang, SOCKS5 als Ausgang
pproxy -l http://:8080 -r socks5://proxy_ip:1080
# SOCKS5 als Eingang, HTTP als Ausgang
pproxy -l socks5://:1080 -r http://proxy_ip:8080
Einrichtung lokaler Tunnel
Manchmal reicht eine Konvertierung nicht aus – ein vollwertiger Tunnel ist erforderlich.
SSH-Tunnel über HTTP-Proxy
Wenn Sie einen SSH-Server und einen HTTP-Proxy haben, können Sie einen SOCKS5-Tunnel erstellen:
# Erstellen eines SOCKS5 auf localhost:1080 über den HTTP-Proxy
ssh -D 1080 -o ProxyCommand="nc -X connect -x http_proxy:8080 %h %p" user@ssh_server
Stunnel für HTTPS
Wenn Sie einen HTTPS-Proxy benötigen, aber nur einen HTTP-Proxy haben:
# stunnel.conf
[https-proxy]
client = yes
accept = 127.0.0.1:8443
connect = http_proxy_ip:8080
protocol = connect
protocolHost = target_host:443
Software für das verfügbare Protokoll konfigurieren
Manchmal ist es einfacher, die Software an das verfügbare Protokoll anzupassen, als das Protokoll zu konvertieren.
Selenium mit verschiedenen Protokollen
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# HTTP Proxy (Standardmethode)
options = Options()
options.add_argument('--proxy-server=http://proxy_ip:8080')
# SOCKS5 Proxy
options.add_argument('--proxy-server=socks5://proxy_ip:1080')
# Für Firefox mit 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 mit 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-Bots über HTTP
Wenn die Telegram-Bibliothek SOCKS5 erfordert, Sie aber nur HTTP haben:
# python-telegram-bot mit HTTP Proxy
from telegram.ext import ApplicationBuilder
application = (
ApplicationBuilder()
.token("YOUR_TOKEN")
.proxy_url("http://proxy_ip:8080") # Funktioniert mit HTTP
.build()
)
Tipp: Viele moderne Bibliotheken unterstützen beide Protokolle. Prüfen Sie die Dokumentation – manchmal reicht es aus, das URL-Schema von
socks5://aufhttp://zu ändern.
Wie man einen Proxy mit dem richtigen Protokoll auswählt
Um Protokollprobleme zu vermeiden, bestimmen Sie die Anforderungen im Voraus.
Kompatibilitätsmatrix
| Aufgabe | Empfohlenes Protokoll | Warum |
|---|---|---|
| Web-Scraping | HTTP/HTTPS | Breite Unterstützung, einfache Einrichtung |
| Browser-Automatisierung | HTTP oder SOCKS5 | Abhängig vom Browser und Framework |
| Telegram, Discord Bots | SOCKS5 | Anforderungen der Bibliotheken |
| Torrents | SOCKS5 mit UDP | DHT und PEX verwenden UDP |
| Spiele, VoIP | SOCKS5 mit UDP | Geringe Latenz, UDP-Traffic |
| API-Anfragen | HTTP/HTTPS | REST APIs laufen über HTTP |
Worauf Sie bei der Auswahl eines Anbieters achten sollten
- Liste der unterstützten Protokolle – sollte explizit angegeben sein
- Umschaltmöglichkeit – einige Anbieter ermöglichen den Zugriff auf dieselbe IP über verschiedene Ports/Protokolle
- UDP-Unterstützung für SOCKS5 – nicht alle SOCKS5-Proxys unterstützen UDP
- Dokumentation zur Einrichtung – Beispiele für verschiedene Sprachen und Tools
Residenzielle Proxys unterstützen in der Regel gleichzeitig HTTP/HTTPS und SOCKS5, was die meisten Kompatibilitätsprobleme beseitigt. Rechenzentrums-Proxys sind häufig auf HTTP/HTTPS beschränkt.
Checkliste vor dem Kauf
- Bestimmen Sie, welches Protokoll Ihre Software benötigt
- Prüfen Sie, ob UDP benötigt wird (Spiele, Torrents, VoIP)
- Fragen Sie den Anbieter explizit nach der Unterstützung des benötigten Protokolls
- Fordern Sie einen Testzugang an, um die Kompatibilität zu überprüfen
- Halten Sie einen Plan B bereit – einen lokalen Konverter
Fazit
Die Inkompatibilität von Protokollen ist ein lösbares Problem. In den meisten Fällen genügt ein lokaler Konverter wie Privoxy oder Gost. Für langfristige Projekte ist es jedoch vorteilhafter, einen Proxy zu wählen, der das benötigte Protokoll von vornherein unterstützt.
Für Aufgaben, die Flexibilität bei der Protokollwahl erfordern, eignen sich residente Proxys mit Multiprotokollzugriff – mehr dazu auf proxycove.com.