Python-Leitfaden · 1 Min Lesezeit

Wie man Proxys mit Python-Anfragen verwendet

Die Requests-Bibliothek leitet den Datenverkehr über einen Proxy mit einem kleinen Dictionary – aber das Schema, das Sie wählen, entscheidet, ob Ihre DNS- und Ursprungs-IP verborgen bleibt. Hier ist die praktische Version mit vollständigem ausführbarem Code.

Das Proxies-Dict und warum das Schema wichtig ist

Die requests Bibliothek von Python kommuniziert über ein einzelnes Dictionary mit einem Proxy. Die Schlüssel sind nicht das Protokoll des Proxys – sie sind das Schema der Ziel-URL. Also sagt {"http": ..., "https": ...} den Requests, welchen Proxy zu verwenden ist, wenn das Ziel eine HTTP- oder HTTPS-Seite ist, und in der Praxis zeigen beide Schlüssel auf denselben Endpunkt.

Was tatsächlich Ihre Privatsphäre ändert, ist das Schema innerhalb der Proxy-URL. Mit socks5:// löst Ihre eigene Maschine zuerst DNS auf und verbindet sich dann über den Proxy, was die Hostnamen, die Sie besuchen, preisgeben kann. Mit socks5h:// löst der Proxy DNS für Sie auf, sodass der Ziel-Hostname niemals unverschlüsselt Ihre Maschine verlässt. Für einen authentifizierten s4m.online Proxy, bevorzugen Sie socks5h, um DNS remote zu halten und Ihre ursprüngliche IP besser zu

verbergen.
Proxy-SchemaDNS aufgelöst vonPortInstallieren
socks5h://Proxy (remote)1080requests[socks]
socks5://Ihr Computer (lokal)1080requests[socks]
http://Proxy3128Standard-Requests

SOCKS-Unterstützung benötigt PySocks (pip install "requests[socks]"); der HTTP-Endpunkt funktioniert mit einer Standardinstallation. s4m-Proxys sind Rechenzentrum SOCKS5 und HTTP, nach Gigabyte abgerechnet – siehe Preise. Wenn Sie nur Einweg-Endpunkte für schnelle Tests benötigen, ist die kostenlose öffentliche Proxy-Liste ein separater, dritter Pool (benutzen auf eigenes Risiko). Wählen Sie zwischen einem vollständigen Tunnel und einem Proxy? Lesen Sie den Vergleich, die VPN-Übersicht oder weitere Leitfäden.

Vollständiges ausführbares Beispiel

Ersetzen Sie USER:PASS durch Ihre Proxy-Anmeldeinformationen. Dies überprüft Ihre Ausgangs-IP, verwendet eine Sitzung erneut und wechselt dann über einen kleinen Pool mit Zeitüberschreitungen und Wiederholungen.

python
import random
import requests
from requests.exceptions import RequestException

# --- Credentials & endpoints (replace with your s4m.online proxy user) ---
USER = "USER"
PASS = "PASS"
HOST = "proxy.s4m.online"

# SOCKS5 with REMOTE DNS (socks5h) — needs: pip install "requests[socks]"
SOCKS5 = f"socks5h://{USER}:{PASS}@{HOST}:1080"
# Plain HTTP CONNECT proxy — works with a stock requests install
HTTP   = f"http://{USER}:{PASS}@{HOST}:3128"

def proxies_for(proxy_url):
    # The "http"/"https" keys are the scheme of the TARGET url,
    # not the proxy's protocol — both can point at one proxy.
    return {"http": proxy_url, "https": proxy_url}

def check_ip(session, proxy):
    r = session.get(
        "https://api.ipify.org?format=json",
        proxies=proxies_for(proxy),
        timeout=(5, 15),   # (connect, read) seconds
    )
    r.raise_for_status()
    return r.json()["ip"]

# --- Per-session config: pools connections, keeps cookies/headers ---
with requests.Session() as s:
    s.headers.update({"User-Agent": "s4m-example/1.0"})
    print("Exit IP:", check_ip(s, SOCKS5))

# --- Rotate across a list, retrying on failure ---
POOL = [SOCKS5, HTTP]

def fetch(url, retries=3):
    last_err = None
    for attempt in range(1, retries + 1):
        proxy = random.choice(POOL)
        try:
            with requests.Session() as s:
                r = s.get(url, proxies=proxies_for(proxy), timeout=(5, 15))
                r.raise_for_status()
                return r
        except RequestException as e:
            last_err = e
            print(f"[{attempt}/{retries}] {proxy} failed: {e}")
    raise last_err

resp = fetch("https://httpbin.org/ip")
print(resp.json())

Pro-Anfrage, pro-Sitzung oder global

Pro Anfrage

Pass proxies= zu jedem Aufruf: requests.get(url, proxies=proxies_for(SOCKS5), timeout=10). Die expliziteste Form und die einfachste, um sie auf einer Aufruf-für-Aufruf-Basis zu wechseln oder zu rotieren.

Pro Sitzung

Setzen Sie es einmal mit session.proxies = proxies_for(SOCKS5). Jede Anfrage, die über diese Sitzung gemacht wird, erbt den Proxy und verwendet TCP-Verbindungen wieder, was schneller ist als ein frisches get() jedes Mal.

Global über die Umgebung

requests respektiert HTTP_PROXY, HTTPS_PROXY und ALL_PROXY. Exportieren Sie ALL_PROXY=socks5h://USER:PASS@proxy.s4m.online:1080 und jede Anfrage wird ohne Codeänderung weitergeleitet. Verwenden Sie NO_PROXY, um Hosts auszuschließen, oder trust_env=False in einer Sitzung, um die Umgebung zu ignorieren.

Dinge, die Menschen verwirren

Auth geht in die URL

Geben Sie USER:PASS@ direkt in die Proxy-URL ein, und die Anfragen senden die Anmeldeinformationen für Sie. Wenn Ihr Passwort @, : oder / Zeichen enthält, kodieren Sie es zuerst mit urllib.parse.quote.

DNS remote halten

socks5 löst Hostnamen auf Ihrem Computer auf; socks5h löst sie am Proxy auf. Verwenden Sie socks5h, wenn das Ziel darin besteht, Ihre Abfragen und die ursprüngliche IP vom Radar des Ziels fernzuhalten.

Eine Sitzung wiederverwenden

Eine requests.Session bündelt Verbindungen und speichert Cookies, sodass eine Reihe von Anfragen über einen Proxy deutlich schneller ist als jedes Mal requests.get() kalt aufzurufen.

TLS-Überprüfung aktiv lassen

Ein Proxy leitet nur Ihren Datenverkehr weiter — es gibt keinen Grund, verify=False zu setzen. Halten Sie die Zertifikatsüberprüfung aktiviert, damit ein Zwischenhändler HTTPS-Antworten nicht lautlos manipulieren kann.

FAQ

Fragen, beantwortet

Brauchen SOCKS5-Proxys ein zusätzliches Paket?

Ja. requests benötigt PySocks für SOCKS-Unterstützung: installieren Sie es mit pip install "requests[socks]". Der HTTP-Endpunkt auf Port 3128 funktioniert mit einer Standard-requests-Installation und ohne zusätzliche Abhängigkeit.

Was ist der Unterschied zwischen socks5 und socks5h?

Es geht darum, wo DNS aufgelöst wird. socks5:// löst den Ziel-Hostnamen auf Ihrem eigenen Gerät auf, bevor eine Verbindung hergestellt wird; socks5h:// bittet den Proxy, ihn aufzulösen. Verwenden Sie socks5h, um das Leaken der Hostnamen, die Sie besuchen, zu vermeiden.

Warum ändert sich meine Ausgangs-IP nicht, wenn ich rotiere?

In der Regel wird das Proxydict nicht tatsächlich angewendet, oder eine einzelne Sitzung verwendet eine upstream Verbindung wieder. Bestätigen Sie, dass jede Anfrage proxies= übergibt, erstellen Sie eine frische Sitzung pro Proxy beim Rotieren und drucken Sie die Antwort von einem IP-Echo-Endpunkt aus, um zu verifizieren.

Sind das Wohn-IP-Adressen?

Nein. s4m-Proxys sind Datacenter-SOCKS5- und HTTP-Endpunkte, die mit einem Benutzernamen und Passwort authentifiziert und pro Gigabyte abgerechnet werden. Die separate kostenlose öffentliche Proxyliste ist von Dritten und nicht für die Produktion validiert.

Wie überspringe ich einen toten Proxy in einer Liste?

Umhüllen Sie jeden Versuch in try/except requests.exceptions.RequestException und versuchen Sie es dann mit dem nächsten Proxy aus Ihrem Pool erneut. Das ausführbare Beispiel oben macht genau dies mit einer kleinen Retry-Schleife.

Proxys, die dazu dienen, Ihre ursprüngliche IP zu verbergen

Authentifizierte Datacenter-SOCKS5- und HTTP-Proxys, nach Verbrauch abgerechnet, mit einer optionalen dedizierten persönlichen IP. Richten Sie Anfragen an proxy.s4m.online und los.

Menschen fanden diese Seite durch die Suche nach

Echte Suchphrasen, auf die diese Seite antwortet — die verlinkten öffnen die Seite, die sie ausführlich behandelt.