Für eine einzelne asynchrone Anfrage durch einen HTTP-Proxy ohne Authentifizierung legen Sie die Route bei session.get() fest. Fügen Sie aiohttp bei Bedarf zum Projekt hinzu:

uv add aiohttp

Ersetzen Sie die folgende Dokumentationsadresse durch Ihren HTTP-Listener oder einen Kandidaten aus der HTTP-Proxy-Liste. Er muss CONNECT zum HTTPS-Ziel erlauben; ein reiner SOCKS-Endpunkt braucht einen passenden Connector statt dieses proxy-Arguments.

import asyncio
import aiohttp

async def main():
    timeout = aiohttp.ClientTimeout(total=15, connect=5)
    async with aiohttp.ClientSession(
        timeout=timeout,
        trust_env=False,
    ) as session:
        async with session.get(
            "https://example.com/",
            proxy="http://203.0.113.10:8080",
        ) as response:
            print(response.status)
            print((await response.text())[:200])

asyncio.run(main())

Die Anfrage gibt ihren HTTP-Status und die ersten 200 Zeichen des Antworttexts aus. Ein 403 oder 429 bleibt hier eine prüfbare Antwort; rufen Sie response.raise_for_status() auf, wenn Ihre Anwendung erfolglose Status in Ausnahmen umwandeln soll. Die asynchronen Kontextmanager schließen Sitzung und Antwort am Ende ihrer Blöcke, auch bei einer Ausnahme.

Das 15-sekündige total-Budget umfasst den Anfragevorgang. Das 5-sekündige connect-Budget schließt das Warten auf eine verfügbare Pool-Verbindung ein. Ein belegter Pool kann es daher verbrauchen, bevor ein neuer Socket geöffnet wird. Diese Unterscheidung ist wichtig, wenn Sie den einzelnen Aufruf zu nebenläufigen Prüfungen ausbauen.

trust_env=False hält die gezeigte Route explizit. aiohttp sucht standardmäßig nicht nach Proxy-Umgebungsvariablen; der Export einer solchen Variablen in einem anderen Terminal konfiguriert diesen Aufruf nicht. Wählen Sie trust_env=True nur, wenn die geerbte Prozessumgebung die gewünschte Routingrichtlinie ist.

Ähnliche Artikel