So stellen Sie den Proxy in AIOHTTP ein

In dieser Schritt-für-Schritt-Anleitung erfahren Sie, wie Sie Proxy in AIOHTTP einrichten können
12 min read
How to Set Proxy in AIOHTTP

Am Ende dieser Anleitung zur AIOHTTP-Proxy-Integration werden Sie wissen:

  • Was AIOHTTP ist.
  • Warum Sie Proxy verwenden sollten.
  • Wie man HTTP-, HTTPS- oder SOCKS-Proxy in AIOHTTP einstellt.
  • Wie man mit Proxyauthentifizierung, SSL-Zertifikatsfehlern, IP-Rotation und mehr umgeht.

Was ist AIOHTTP?

AIOHTTP ist ein beliebtes, asynchrones Open-Source-HTTP-Client/Server-Framework in Python. Seine Hauptmerkmale sind:

  • Unterstützung sowohl für die Client- als auch für die Serverseite des HTTP-Protokolls.
  • Unterstützung für Client- und Server-Web-Sockets.
  • Bereitstellung eines Webservers mit Middleware und steckbarem Routing.

Was in diesem Tutorial im Vordergrund steht, ist seine Fähigkeit, als HTTP-Client zu agieren und HTTP-Anfragen auf asyncio auszuführen. AIOHTTP eignet sich besonders gut zum Erstellen von Skripten, die mehrere gleichzeitige Anfragen effizient verarbeiten müssen.

Zum Zeitpunkt der Erstellung dieses Artikels hat AIOHTTP über 14k Sterne auf GitHub.

Warum benötigen Sie einen AIOHTTP-Proxy?

Ein guter Grund für die Verwendung eines Proxy in AIOHTTP ist der Schutz Ihrer Online-Identität. Indem Sie Ihre Anfrage an einen Proxyserverweiterleiten, können Sie Ihre IP und Ihren Standort verbergen, sodass die Zielseite glaubt, dass Ihre Anfrage vom Proxyserver und nicht von Ihnen stammt. Dies bedeutet, dass es schwieriger wird, Sie zu identifizieren und zu verfolgen, was die Datensicherheit Ihrer Online-Aktivitäten erhöht und gleichzeitig IP-Sperren und geografische Einschränkungen vermeidet.

Beachten Sie, dass Sie das gleiche Ergebnis mit Requests erreichen können, wie in unserem Requests Proxy Integrationstutorial beschrieben.

Einen Proxy in AIOHTTP Proxy einrichten

In diesem Abschnitt erfahren Sie Schritt für Schritt, wie Sie einen HTTP-, HTTPS- oder SOCKS-Proxy in AIOHTTP einrichten.

AIOHTTP-Voraussetzungen

Wir gehen hier davon aus, dass Sie Python bereits auf Ihrem Rechner installiert und ein Python-Projekt mit einer virtuellen Umgebung eingerichtet haben. Installieren Sie AIOHTTP und die empfohlenen Abhängigkeiten mit dem folgenden Befehl:

pip install aiohttp[speedups]

Dadurch wird aiohttp zu den Abhängigkeiten Ihres Projekts hinzugefügt.

Öffnen Sie Ihre Python-Skriptdatei und fügen Sie den aiohttp import:hinzu

import aiohttp

Damit aiohttp mit der Syntax async/await funktioniert, müssen Sie asyncioverwenden. Importieren Sie deshalb auch diese Bibliothek und richten Sie eine grundlegende async main ()-Funktion ein:


import aiohttp
import aiohttp

import asyncio

async def main():
  # aiohttp logic...

asyncio.run(main())

Perfekt! Sie sind jetzt bereit, die AIOHTTP-Proxy-Integrationslogik zu schreiben!

Proxy-Voraussetzungen

Bevor Sie erfahren, wie Sie einen Proxy in AIOHTTP integrieren, müssen Sie verstehen, wie eine Proxy-URL aussieht.

Dies ist das Format der URL, die für die Verbindung zu einem Proxyserver in AIOHTTP erforderlich ist:

<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]

Im Detail besteht diese aus:

  • <PROTOCOL>: http für HTTP-Proxys, https für HTTPS-Proxys und socks, socks4 oder socks5 für Proxys in den verschiedenen SOCKS-Protokollen.
  • <HOST>: Die IP des Proxyservers oder seiner gesamten Domain (z. B. proxydomain.com).
  • <PORT>: Der Port, auf den der Proxyserver hört.
  • <USERNAME>: Der optionale Benutzername zur Authentifizierung der Proxyverbindung.
  • <PASSWORD>: Das optionale Passwort zur Authentifizierung der Proxyverbindung.

Beachten Sie, dass <PROTOCOL> und <HOST> die einzigen erforderlichen Teile der URL sind. Der <PORT>-Abschnitt ist optional, aber in der Regel müssen Sie ihn angeben. Zuletzt ist der Abschnitt <USERNAME>:<PASSWORD> mit den Anmeldeinformationen nur erforderlich, wenn es sich um authentifizierte Proxys handelt.

Wenn Sie keine URL eines Proxyservers haben, können Sie eine kostenlos online erhalten. Bedenken Sie jedoch gleichzeitig, dass kostenlose Proxys unzuverlässig, datenverschlingend, inkonsistent, fehleranfällig und fragwürdig sind. Sie eignen sich nur zu Lernzwecken. Für die Produktion benötigen Sie einen zuverlässigen Premium-Proxy von einem erstklassigen Anbieter wie Bright Data.

Im Verlauf dieses Artikels erfahren Sie, wie Sie einen Bright Data-Proxy erhalten und ihn in AIOHTTP verwenden können.

HTTP-Proxy-Integration

Wie in der Dokumentation erwähnt, unterstützt AIOHTTP die HTTP-Proxy-Integration. Angenommen, dies ist die URL Ihres HTTP-Proxys:

http://190.6.23.219:999

Sie können sie in Ihrer AIOHTTP-Anfrage angeben, indem Sie die folgende Proxy-Option verwenden:


async with aiohttp.ClientSession() as session:
    async with session.get(
        'https://example.com',
        proxy='http://190.6.23.219:999'
    ) as response:
        print(response.status)

AIOHTTP leitet nun die GET-Anfrage über die Proxy-URL weiter, die als -Proxy -Argument an die get ()-Funktion weitergegeben wurde.

Beachten Sie, dass Sie einen HTTP-Proxy sowohl für HTTP- als auch für HTTPS-Datenverkehr verwenden können.

HTTPS–Proxy-Integration

Wenn es um HTTPS-Proxys geht, wird es etwas komplexer. Wie in der AIOHTTP-Dokumentation angegeben:

„In Python 3.10 ist die Unterstützung für TLS in TLS für die Transporte deaktiviert, die asyncioverwendet. Wenn die weitere Version von Python (sagen wir v3.11) ein Attribut umschaltet, funktioniert es einfach™.

aiohttp v3.8 und höher ist dafür bereit und hat bereits den entprechenden Code eingerichtet, unterstützt TLS-in-TLS und sendet daher HTTPS-Anfragen über HTTPS-Proxy-Tunnel.“

Mit anderen Worten, wenn Sie HTTPS-Proxys in AIOHTTP verwenden möchten, müssen Sie Python auf Version 3.11 und aiohttp auf v3.8 oder höher aktualisieren. Der Ansatz zur HTTPS-AIOHTTP-Proxy-Integration bleibt derselbe wie oben beschrieben. Der einzige veränderte Aspekt ist, dass das Proxy-Protokoll https und nicht mehr httpist.

SOCKS-Proxy-Integration

AIOHTTP unterstützt standardmäßig keine SOCKS-Proxys. Wenn Sie einen SOCKS-Proxy in AIOHTTP verwenden möchten, müssen Sie aiohtpp-socksinstallieren:

pip install aiohttp_socks

Diese Bibliothek verwendet python-Socks, um AIOHTTP mit SOCKS4(a)- und SOCKS5(h)-Unterstützung zu erweitern.

Nehmen wir an, dies ist die URL Ihres SOCKS-Proxys:

socks5://98.175.31.195:4145

Benutzen Sie sie in AIOHTTP wie folgt:


# initialize a SOCKS proxy connector
connector = ProxyConnector.from_url('socks5://98.175.31.195:4145')

# initialize an AIOHTTP client with the SOCKS proxy connector
async with aiohttp.ClientSession(connector=connector) as session:
    async with session.get('https://example.com') as response:
        print(response.status)

AIOHTTP leitet nun die GET-Anfrage über den angegebenen SOCKS-Proxy weiter.

ProxyConnector kommt von aiohttp-socks, vergessen Sie also nicht, zu importieren mit:

from aiohttp_socks import ProxyConnector

Hinter den Kulissen definiert aiohttp-socks einen AIOHTTP Connector, um die Anfragen zu optimieren und sie durch den angegebenen SOCKS-Proxy laufen zu lassen.

Vollständiges Beispiel

Sie haben gerade gelernt, wie man einen Proxy mit AIOHTTP benutzt. Lassen Sie uns anhand eines vollständigen Beispiels überprüfen, ob die oben genannten Ansätze funktionieren!

Der Einfachheit halber werden wir mit einem HTTP-Proxy arbeiten, aber Sie können das folgende Beispiel problemlos an HTTPS und SOCKS anpassen.

Die Ziel-URL der GET-Anfrage ist der /ip -Endpunkt aus dem HttpBin-Projekt. Diese API gibt die IP der eingehenden Anfrage zurück. Wenn die Proxy-Integration erfolgreich ist, sollte der Endpunkt also mit der IP des Proxyservers antworten und nicht mit Ihrer IP.

Gehen Sie noch einmal davon aus, dass dies die URL Ihres HTTP-Proxyservers ist:

http://190.6.23.219:999

Integrieren Sie sie in AIOHTTP und drucken Sie die vom Endpunkt https://httpbin.io/ip zurückgegebenen Daten aus mit:


import aiohttp
import asyncio

async def main():
    async with aiohttp.ClientSession() as session:
        # perform a GET request through an HTTP proxy
        async with session.get(
          'https://httpbin.io/ip',
          proxy='http://190.6.23.219:999'
        ) as response:
            # extract the response data and print it
            json = await response.json()
            print(json)

asyncio.run(main())

Führen Sie dieses Skript aus, dann sollten Sie Folgendes erhalten:


{
  'origin': '190.6.23.219'
}

Und voilà! Das ist genau die IP des Proxyservers, was bedeutet, dass die AIOHTTP-Proxy-Integration wie magisch funktioniert.

Hinweis: Proxyserver sind kurzlebig. Wenn Sie dieses Tutorial lesen, funktioniert der ausgewählte Proxy bereits nicht mehr und das obige Skript schlägt fehl. Damit es funktioniert, ersetzen Sie den HTTP-Proxy durch einen neuen, funktionierenden Proxy.

AIOHTPP-Proxy: Erweiterte Anwendungsfälle

Sie kennen die Grundlagen der AIOTTP-Proxy-Integration, aber was ist mit komplexeren Techniken? Erfahren Sie mehr in diesem Abschnitt!

Globale Proxys über Umgebungsvariablen

AIOHTTP unterstützt zwei Möglichkeiten, den zu verwendenden Proxy zu bestimmen:

  1. Es verwendet die Proxy-URL, die an das Proxy-Argument übergeben wurde.
  2. Wenn trust_env auf Truegesetzt ist, liest es die Umgebungsvariablen HTTP_PROXY und HTTPS_PROXY.

Sie können daher einen Proxy global in AIOHTTP konfigurieren, indem Sie die folgenden Umgebungen einstellen:

  • HTTP_PROXY: Die URL des Proxyservers, der für HTTP-Anfragen verwendet werden soll.
  • HTTPS_PROXY: Die URL des Proxyservers, der für HTTPS-Anfragen verwendet werden soll.

Stellen Sie sie beispielsweise unter Linux oder macOS mit den folgenden Befehlen ein:


export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]"
export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>@]<HOST>[:<PORT>]"

Als Nächstes übergeben Sie trust_env=True an aiohttp.clientSession():

async with aiohttp.ClientSession(trust_env=True) as session:

Sie können jetzt session.get() ohne proxy argumentaufrufen


async with aiohttp.ClientSession(trust_env=True) as session:
    async with session.get('https://example.com') as response:
        print(response.status)

Großartig! AIOHTTP verwendet die in den Umgebungsvariablen angegebenen Proxys für jede HTTP- und HTTPS-Anfrage.

Folgen Sie dem Link, um mehr zu erfahren, da derselbe Mechanismus auch mit Proxys in cURLfunktioniert.

Ansätze zur Proxy-Authentifizierung

Der Versuch, ohne die richtigen Anmeldeinformationen eine Verbindung zu einem authentifizierten Proxy herzustellen, führt zu dem Fehler 407 Proxy-Authentifizierung erforderlich.

Angenommen, der folgende String ist die URL für die Verbindung zu einem authentifizierten HTTP-Proxy:

http://admin:[email protected]:8928

Hier lautet die reine Proxy-URL:

http://20.198.112.312:892

Und die Anmeldeinformationen für die Authentifizierung lauten:

  • Benutzername: admin
  • Passwort: pk5ip98NWp56I9sjy

AIOHTTP unterstützt zwei Möglichkeiten, mit authentifizierten Proxys umzugehen:

  1. Geben Sie die Anmeldeinformationen direkt in der Proxy-URL an:

async with session.get(
  'https://example.com/',
  proxy='http://admin:[email protected]:8928'
) as response:

2. Übergeben Sie den Benutzernamen und das Passwort an ein AIOHttp.basicAuth()-Objekt und verwenden Sie es dann in der proxy_auth-Option:


proxy_auth = aiohttp.BasicAuth('admin', 'pK5ip98NWp56l9sjy')
async with session.get(
    'https://example.com/',
    proxy="http://20.198.112.312:892",
    proxy_auth=proxy_auth
) as response:

Wunderbar! Die AIOHTTP-Proxyauthentifizierung ist kein Geheimnis mehr.

SSL-Zertifikatsfehler vermeiden

Wenn Sie einen Proxy in AIOHTTP einrichten, schlagen Ihre Anfragen möglicherweise aufgrund des folgenden Fehlers fehl:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain 

Um diese Probleme mit dem SSL-Zertifikat zu vermeiden, deaktivieren Sie die SSL-Überprüfung mit ssl=False:


async with aiohttp.ClientSession() as session:
    async with session.get(
      'https://example.com',
      proxy='http://190.6.23.219:999',
      ssl=False # turn of SSL certificate verification
    ) as response:
        print(response.status)

Die Fehler bei der Überprüfung des AIOHTTP-SSL-Zertifikats verschwinden sofort.

Rotierende Proxys in AIOHTTP

Wenn Sie sich immer wieder auf denselben Proxyserver verlassen, besteht die Möglichkeit, dass die Zielseite ihre IP-Adresse blockiert. Um dies zu vermeiden, müssen Sie sicherstellen, dass Ihre Anfrage unterschiedliche Proxyserver verwendet.

Das können Sie folgendermaßen tun:

  1. Füllen Sie eine Python-Liste mit vielen Proxy-URLs auf.
  2. Wählen Sie vor jeder Anfrage zufällig eine Proxy-URL aus.
  3. Stellen Sie die gewählte Proxy-URL in AIOHTTP ein.

Das Hauptproblem bei diesem Ansatz ist, dass er Boilerplate-Code beinhaltet. Außerdem ist der Zugriff auf einen Pool zuverlässiger Proxyserver erforderlich, den es nicht kostenlos gibt. Zum Glück hat Bright Data eine effektivere Lösung! Seine rotierenden Proxys ändern automatisch die Ausgangs-IP-Adressen für Sie, sind in 195 Ländern verfügbar, bieten eine außergewöhnliche Netzwerkverfügbarkeit und garantieren eine Erfolgsquote von 99,9 %.

Im nächsten Kapitel erfahren Sie, wie Sie beginnen, die rotierenden Proxys von Bright Data in AIOHTTP zu verwenden.

Integration von AIOHTTP mit einem Bright Data Proxy

Bright Data betreibt die besten Proxy-Server der Welt und betreut Fortune-500-Unternehmen sowie über 20.000 Kunden. Sein weltweites Proxy-Netzwerk umfasst:

Dies ist eines der größten und zuverlässigsten Proxy-Netzwerke der Welt!

Führen Sie die folgenden Schritte aus und erfahren Sie, wie Sie die Proxys von Bright Data in AIOHTTP verwenden.

Falls Sie bereits ein Konto haben, melden Sie sich bei Bright Data an. Andernfalls können Sie ein kostenloses Konto erstellen. Sie erhalten Zugriff auf das folgende Benutzer-Dashboard:

Klicken Sie wie unten angegeben auf die Schaltfläche „Proxy-Produkte anzeigen“:

Proxy-Produkte ansehen

Sie werden auf die folgende Seite „Proxys und Scraping-Infrastruktur“ weitergeleitet:

Scrollen Sie nach unten, suchen Sie nach der Karte „Proxys für Privatkunden“ und klicken Sie auf die Schaltfläche „Los geht’s“:

Privatkunden-Proxy

Sie gelangen zum Dashboard für die Proxykonfiguration für Privatkunden. Folgen Sie dem geführten Assistenten und richten Sie den Proxy-Service nach Ihren Bedürfnissen ein. Wenn Sie Zweifel bezüglich der Konfiguration des Proxys haben, wenden Sie sich bitte an den 24/7-Support.

Gehen Sie zur Registerkarte „Zugriffsparameter“ und rufen Sie den Host, den Port, den Benutzernamen und das Passwort Ihres Proxys wie folgt ab:

Zugriffsparameter

Beachten Sie, dass das Feld „Host“ den Port bereits enthält.

Das ist alles, was Sie brauchen, um die Proxy-URL zu erstellen und sie in AIOHTTP zu verwenden. Fügen Sie alle Informationen zusammen und erstellen Sie eine URL mit der folgenden Syntax:

<Username>:<Password>@<Host>

In diesem Fall wäre es zum Beispiel:

brd-customer-hl_4hgu8dwd-zone-residential:[email protected]:XXXXX

Schalten Sie auf „Aktiver Proxy“ um, folgen Sie den letzten Anweisungen und schon kann es losgehen!

aktiver Proxy

Ihr AIOHTTP-Proxy-Snippet für die Bright Data-Integration sieht wie folgt aus:


import aiohttp
import asyncio

async def main():
    async with aiohttp.ClientSession() as session:
        # perform a GET request through an HTTP proxy
        async with session.get(
          'https://lumtest.com/myip.json',
          proxy='http://brd-customer-hl_4hgu8dwd-zone-residential:[email protected]:XXXXX'
        ) as response:
            # extract the response data and print it
            json = await response.json()
            print(json)

asyncio.run(main())

Fazit

In diesem Tutorial zur AIOHTTP-Proxy-Integration haben Sie erfahren, warum Sie Proxys verwenden sollten und wie Sie dies mit aiohttptun können. Sie wissen nun, wie Sie einen HTTP-, HTTPS- oder SOCKS-Proxy in der beliebten Python-HTTP-Client-Bibliothek AIOHTTP einrichten können. Wie hier bewiesen, sind dafür nur ein paar Codezeilen erforderlich!

Dank dieser Anleitung haben Sie auch verstanden, warum Sie niemals kostenlose Proxydienste verwenden sollten. Stattdessen sollten Sie zuverlässige Proxyserver von einem seriösen Proxydienstanbieter verwenden. Der beste Anbieter auf dem Markt? Bright Data! Das Verfahren zur Integration von Proxys in AIOHTTP bleibt gleich, aber die Vorteile von Premium-Proxys sind endlos.