Kurze Antwort
Wie verwende ich Python Requests mit einem statischen Proxy?
Um Python Requests mit einem statischen Proxy zu verwenden, erstellen Sie die Proxy-URL aus Host, Port, Benutzername und Passwort Ihrer IP. Übergeben Sie sie für die Schlüssel http und https von proxies=, setzen Sie ein Timeout und prüfen Sie die Exit-IP unter api.ipify.org. SteadyProxy statische IPs kosten 2,24 $ für 30 Tage (Stand Oktober 2026), ohne KYC und mit Krypto-Zahlung.
Was sind die wichtigsten Fakten?
| Installation | python -m pip install requests (SOCKS5: requests[socks]) |
|---|---|
| HTTP-Proxy-URL | http://USERNAME:PASSWORD@host:port, for both the http and https keys |
| SOCKS5-Proxy-URL | socks5h://USERNAME:PASSWORD@host:port (Standard-SOCKS5-Port 7778) |
| Sonderzeichen | URL-kodieren Sie Benutzername und Passwort mit urllib.parse.quote |
| Umgebungs-Proxys | session.trust_env = False ignoriert HTTP_PROXY, das anderswo gesetzt ist |
| Timeouts | (10, 30): 10 s zum Verbinden, 30 s zum Lesen, in unseren Beispielen |
| Getestet | Python 3.14 und Requests 2.34, 19. Oktober 2026, über einen passwortgeschützten Testproxy |
Wie sende ich eine Anfrage über einen statischen Proxy?
Jede statische IP hat ihren eigenen Host, Port, Benutzernamen und ihr eigenes Passwort im Dashboard. Speichern Sie diese in Umgebungsvariablen, nicht im Code. Das folgende Skript erstellt die Proxy-URL, sendet eine Anfrage an api.ipify.org und stoppt, wenn die Exit-IP nicht die erwartete ist. Dann liest es den Netzwerknamen von ipinfo.io. Bei falschem Passwort löst Requests einen ProxyError aus, der 407 Proxy Authentication Required erwähnt, wie unser Test zeigte.
"""Python Requests through one static proxy, with a check of the exit IP.
Install: python -m pip install requests
"""
import os
from urllib.parse import quote
import requests
HOST = os.environ.get("PROXY_HOST", "gw.steadyproxy.com")
PORT = os.environ.get("PROXY_PORT", "7777")
USER = quote(os.environ.get("PROXY_USER", "USERNAME"), safe="")
PASSWORD = quote(os.environ.get("PROXY_PASS", "PASSWORD"), safe="")
EXPECTED_IP = os.environ.get("EXPECTED_IP") # the static IP listed in your dashboard
# The proxy URL starts with http:// even for https:// sites (Requests opens a CONNECT tunnel)
PROXY = "http://" + USER + ":" + PASSWORD + "@" + HOST + ":" + PORT
PROXIES = {"http": PROXY, "https": PROXY}
with requests.Session() as session:
session.trust_env = False # ignore HTTP_PROXY / HTTPS_PROXY set elsewhere on the machine
response = session.get("https://api.ipify.org?format=json", proxies=PROXIES, timeout=(10, 30))
response.raise_for_status()
exit_ip = response.json()["ip"]
print("Exit IP:", exit_ip)
if EXPECTED_IP and exit_ip != EXPECTED_IP:
raise SystemExit("Exit IP differs from the static IP you expected")
page = session.get("https://ipinfo.io/json", proxies=PROXIES, timeout=(10, 30))
page.raise_for_status()
print("Network:", page.json().get("org"), "-", page.json().get("country"))
Warum ist die Proxy-URL http:// für https://-Seiten?
Der Schlüssel des proxies-Dictionaries ist das Schema der Zielseite; der Wert ist die Adresse des Proxys. Für eine https://-Seite fordert Requests den HTTP-Proxy auf, einen CONNECT-Tunnel zu öffnen, und führt dann TLS durch ihn zur Seite aus. Der Proxy sieht niemals die entschlüsselte Seite. Also zeigen beide Schlüssel auf dieselbe http://-Proxy-URL. Lassen Sie die Zertifikatsprüfung aktiviert: Setzen Sie niemals verify=False, um einen Proxy-Fehler zu beheben.
Wie gebe ich jedem Konto eine eigene statische IP?
Ordnen Sie jedem Konto oder Job eine IP zu und erstellen Sie eine Session pro Zuordnung. Eine Session behält Cookies und verwendet Verbindungen wieder, und mit trust_env = False wird ihre proxies-Einstellung nicht durch Umgebungsvariablen ersetzt. Das folgende Beispiel liest eine Zeile pro IP in der Reihenfolge Host, Port, Benutzername, Passwort, die Sie aus den vier Werten in Ihrem Dashboard kopieren können.
"""One static IP per account or per job with Python Requests.
Each line holds the four values shown for one IP in your dashboard:
host:port:username:password
"""
import os
from urllib.parse import quote
import requests
STATIC_IPS = {
"store-uk": os.environ.get("PROXY_STORE_UK", "gw.steadyproxy.com:7777:USERNAME:PASSWORD"),
"store-de": os.environ.get("PROXY_STORE_DE", "gw.steadyproxy.com:7777:USERNAME:PASSWORD"),
}
def session_for(name):
host, port, user, password = STATIC_IPS[name].split(":", 3)
proxy = "http://" + quote(user, safe="") + ":" + quote(password, safe="") + "@" + host + ":" + port
session = requests.Session()
session.trust_env = False
session.proxies = {"http": proxy, "https": proxy}
return session
for account in STATIC_IPS:
with session_for(account) as s:
ip = s.get("https://api.ipify.org", timeout=(10, 30)).text
print(account, "->", ip)
Wie verwende ich SOCKS5 statt HTTP?
Installieren Sie requests[socks] und ersetzen Sie http:// durch socks5h:// und den HTTP-Port durch den SOCKS5-Port. Das h bewirkt, dass der Proxy Hostnamen auflöst, sodass die DNS-Antworten zum Land der IP passen. Der Rest des Codes bleibt gleich. Ein vollständiges, getestetes Beispiel finden Sie im SOCKS5-Leitfaden für statische Proxys. Beide Ports einer statischen IP führen zur selben Exit-IP.
Was bedeuten die häufigen Fehler?
Jeder Fehler deutet auf eine Ebene hin.
- ProxyError mit 407: falscher Benutzername oder falsches Passwort, oder diese Maschine ist nicht auf Ihrer Allowlist.
- ConnectTimeout: falscher Host oder Port, oder eine Firewall auf Ihrer Seite blockiert ausgehenden Verkehr zum Proxy-Port.
- ReadTimeout: das Ziel oder der Pfad ist langsam; versuchen Sie es später erneut und behalten Sie das Lese-Timeout bei.
- SSLError: ein Zertifikatsproblem beim Ziel oder auf Ihrer Maschine; deaktivieren Sie die Überprüfung nicht.
- 403 oder 429 vom Ziel: die Seite hat die Anfrage abgelehnt oder ratenbegrenzt; verlangsamen Sie.
Wenn eine IP eine Stunde lang jede Anfrage fehlschlägt, kontaktieren Sie den Support. Unsere Ersatzregel: Wenn eine IP nicht funktioniert, schreib an den Support: Wir reparieren sie oder ersetzen sie, sofern der Bestand es erlaubt, durch eine andere IP im selben Land.
Was fragen Leute noch über Python und statische Proxys?
Warum setze ich sowohl den http- als auch den https-Schlüssel?
Requests wählt den Proxy nach dem Schema der Ziel-URL. Ohne den https-Schlüssel würden Anfragen an https://-Seiten direkt von Ihrer eigenen IP ausgehen. Wenn Sie beide Schlüssel auf dieselbe Proxy-URL setzen, wird jede Anfrage über die statische IP gesendet. Die api.ipify.org-Prüfung im Skript erkennt einen fehlenden Schlüssel sofort.
Warum sollte ich Benutzername und Passwort URL-kodieren?
Zeichen wie @, : und / haben innerhalb einer URL eine Bedeutung. Ein Passwort mit einem @ würde sonst als Ende des Login-Teils gelesen. urllib.parse.quote mit safe='' kodiert sie, und Requests dekodiert sie, bevor es den Login an den Proxy sendet. Dies funktioniert für HTTP- und socks5h://-URLs.
Warum trust_env auf False setzen?
Requests liest standardmäßig HTTP_PROXY, HTTPS_PROXY und NO_PROXY aus der Umgebung, und die Dokumentation warnt, dass Umgebungs-Proxys die proxies-Einstellung einer Session überschreiben können. Ein VPN oder eine Unternehmenseinstellung könnte dann einige Anfragen woandershin leiten. trust_env = False bewirkt, dass der Code nur den von Ihnen übergebenen Proxy verwendet.
Kann ich denselben Code mit httpx oder aiohttp verwenden?
Ja, die Idee ist dieselbe: eine Proxy-URL aus Host, Port, Benutzername und Passwort, plus ein Timeout und eine Exit-IP-Prüfung. Die Parameternamen unterscheiden sich je nach Bibliothek und Version, daher folgen Sie der Proxy-Dokumentation dieser Bibliothek. Behalten Sie einen Client pro statischer IP bei, wie bei Sessions in Requests.
Wie halte ich Anmeldeinformationen aus meinem Repository heraus?
Lesen Sie sie aus Umgebungsvariablen oder einem Secret Manager, wie in den Beispielen, und committen Sie niemals eine .env-Datei mit echten Werten. Geben Sie die Proxy-URL nicht in Protokollen aus, da sie das Passwort enthält. Mit der IP-Allowlist-Methode benötigen Skripte auf zugelassenen Maschinen überhaupt kein Proxy-Passwort.
Wie viele Anfragen kann eine statische IP in Python verarbeiten?
Der Proxy rechnet pro IP und pro 30 Tage ab, nicht pro GB. Abrechnung pro IP und pro 30 Tage, nicht pro GB; Fair Use gilt. Die tatsächliche Grenze ist die Zielseite, die eine IP ratenbegrenzen kann. Halten Sie die Parallelität pro IP moderat, fügen Sie Verzögerungen hinzu und beachten Sie die Bedingungen jeder Seite. Für mehr Volumen bei einer Aufgabe verteilen Sie die Arbeit auf mehrere IPs; siehe wie viele statische IPs brauche ich?.
Welche Quellen verwendet dieser Leitfaden? (3)
- Requests erweiterte Nutzung: Proxys, SOCKS, Timeouts — Requests (2026-10-19)
- urllib.parse: quote — Python Software Foundation (2026-10-19)
- ipify API — ipify (2026-10-19)