Eine Proxy-IP in Python Requests verwenden
Legen Sie in Requests Proxy-Routen pro Anfrage ausdrücklich fest, wählen Sie das passende Endpunktschema und behandeln Sie Zeitüberschreitungen sowie HTTPS-Tunnelfehler.
Wenn Requests im Projekt verfügbar ist, übergeben Sie dem Aufruf eine Proxy-Zuordnung:
import requests
proxies = {
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
print(response.status_code)
Ersetzen Sie den Loopback-Endpunkt durch Ihren laufenden Proxy oder einen Kandidaten aus der HTTP-Proxy-Liste, den Sie mit dieser Anfrage testen. Die Schlüssel beschreiben die Zielschemata: http für HTTP-URLs und https für HTTPS-URLs. Die Werte beschreiben den Proxy-Listener. Falls Ihr Netz getrennte Routen erfordert, können es unterschiedliche Endpunkte sein.
Ein Proxy-Wert mit http:// unter dem Schlüssel https ist beabsichtigt. Requests fordert vom HTTP-Listener einen CONNECT-Tunnel an und baut darin TLS zum Ziel auf, wobei die Ziel- und Portrichtlinien des Proxys gelten. Ein Wechsel zu https:// verlangt TLS zum Proxy selbst; erwartet der Listener unverschlüsseltes HTTP, kann das scheitern.
Was die beiden Timeout-Werte bedeuten
timeout=(5, 15) setzt Verbindungs- und Lesezeitlimits. Es legt keine Gesamtfrist von fünfzehn Sekunden fest. Regelmäßig eintreffende Daten, mehrere Adressen und Verbindungsversuche können die Laufzeit verlängern. Ohne diese Einstellung gibt Requests kein allgemeines Zeitlimit vor. Wählen Sie daher zur Antwort passende Grenzen und ergänzen Sie bei einem strikt begrenzten Gesamtbudget eine Frist auf Anwendungsebene.
Fehler dort behandeln, wo sie auftreten
try:
response = requests.get(
"https://example.com/",
proxies=proxies,
timeout=(5, 15),
)
response.raise_for_status()
except requests.exceptions.ProxyError as error:
print("Proxy setup failed:", type(error).__name__)
except requests.exceptions.Timeout:
print("A configured timeout expired")
except requests.exceptions.HTTPError as error:
print("HTTP status:", error.response.status_code)
Ein abgelehnter CONNECT kann ProxyError auslösen, bevor eine Zielantwort vorliegt. Der Zweig HTTPError folgt auf eine erhaltene Antwort mit Fehlerstatus; Timeout bedeutet, dass ein konfiguriertes Zeitlimit abgelaufen ist. Untersuchen Sie Ausnahmeverkettungen des Verbindungsaufbaus lokal und entfernen Sie vor dem Teilen Endpunkte mit Zugangsdaten und private URLs.
Lassen Sie die Zertifikatsprüfung eingeschaltet. Nutzt das autorisierte Netz eine private CA oder verwaltetes Abfangen des Verkehrs, stellen Sie das vorgesehene Vertrauensmaterial bereit, statt die Prüfung abzuschalten.
Explizite Einträge pro Anfrage steuern die hier angegebenen Routen. Nicht aufgeführte Schemata können aber weiterhin durch die Proxy-Erkennung aus der Umgebung beeinflusst werden. Beim Übernehmen des Aufrufs in eine wiederverwendbare Session entscheiden Sie, wie Umgebungsvariablen, Session-Vorgaben und Überschreibungen pro Anfrage zusammenspielen sollen. Verbindungswiederverwendung und Routing-Richtlinien sind getrennte Entscheidungen.