Heim BlogWeb-Scraping So verwenden Sie Proxy mit Python-Anfragen

So verwenden Sie Proxy mit Python-Anfragen

von Kadek

Proxys sind Vermittler, die Ihnen auf verschiedene Weise beim Zugriff auf das Internet helfen können. Sie können Website-Blockaden umgehen, IP-basierte Einschränkungen umgehen und die Flexibilität, Sicherheit und Leistung Ihrer Python-Projekte verbessern. Wenn Sie verstehen, wie Proxys funktionieren und wie Sie sie effektiv nutzen, können Sie neue Möglichkeiten für Ihre Projekte erschließen.

In diesem Artikel lernen Sie die Grundlagen der Verwendung von Proxys mit Python kennen. Am Ende dieses Artikels werden Sie in der Lage sein, Proxys zu verwenden, um auf blockierte Websites und Inhalte zuzugreifen, geografische Sperren zu umgehen und Ihre Privatsphäre zu schützen, indem Sie Ihre IP-Adresse verbergen und Ihren Datenverkehr verschlüsseln.

Proxys verstehen

Ein Proxyserver ist ein Vermittler zwischen Ihnen und dem Rest des Internets. Wenn Sie einen Proxy verwenden, senden Sie Ihre Anfrage an den Proxy, fragen die Website nach Ihnen und senden die Antwort zurück. Dadurch können Sie Website-Blockierungen umgehen, auch wenn diese auf Ihrer IP-Adresse oder Ihrem geografischen Standort basieren.

Proxys sind beim Web Scraping von Vorteil. Wenn Sie eine Website durchsuchen, besteht die Gefahr, dass Sie blockiert werden, da nicht alle Websites für Bots geeignet sind. Die Verwendung eines Proxys kann Ihnen jedoch dabei helfen, Blockierungen zu vermeiden. Wenn eine Website Ihren Scraper erkennt, blockiert sie nur den Proxy, den Sie leicht ändern können.

Darüber hinaus können Sie rotierende Proxys verwenden, die nach einer bestimmten Zeit oder bei Sperrung automatisch ersetzt werden. Wir haben bereits darüber geschrieben, worauf Sie bei der Auswahl rotierender Proxys achten sollten und wo Sie diese finden.

Sie können auch kostenlose Proxys verwenden, wenn Sie diese nicht kaufen möchten. Sie sind weniger zuverlässig und langlebig, aber leicht zu finden und bei Bedarf durch neue zu ersetzen.

Voraussetzungen

Um Proxys in Python zu verwenden, benötigen Sie die Requests-Bibliothek, die beliebteste und einfachste Bibliothek zum Senden von HTTP-Anfragen. Wenn Sie Python installiert haben, sollten Sie es haben. Wenn Sie es jedoch aus irgendeinem Grund nicht haben, können Sie es mit dem folgenden Befehl installieren:

pip install requests

Zusätzlich zu den oben genannten Voraussetzungen benötigen Sie grundlegende Programmierkenntnisse und einen Texteditor. Der Einfachheit halber wird ein Texteditor mit Syntaxhervorhebung empfohlen, z. B. Visual Studio Code oder Sublime.

In diesem Artikel verwenden wir Python 3.10.7. Wenn Sie Python 2 verwenden, funktionieren die Befehle in diesem Artikel möglicherweise nicht für Sie.

Grundlegende Verwendung

Sehen wir uns an, wie Sie mit verschiedenen Proxy-Typen eine einfache Anfrage stellen. Dies wird Ihnen helfen zu verstehen, wie Sie Proxys mit der Requests-Bibliothek verwenden. Bevor wir das tun, stellen wir jedoch eine einfache Anfrage ohne Proxy.

Erstellen Sie eine neue Datei mit der Erweiterung *.py und importieren Sie die Requests-Bibliothek:

import requests 

Erstellen Sie dann eine Variable zum Speichern der Website-Adresse, auf die Sie zugreifen möchten. Der Einfachheit halber verwenden wir eine Website, die Ihre IP-Adresse als Antwort zurückgibt. Dies wird später nützlich sein, um sicherzustellen, dass die Proxys funktionieren.

url="https://httpbin.org/ip"

Fordern Sie nun die angegebene URL an und geben Sie das Ergebnis auf dem Bildschirm aus:

response = requests.get(url)
print(response.text)

Sie erhalten eine Antwort ähnlich dieser:

{
  "origin": "151.115.44.26"
}

Fügen wir nun dieser Basisanfrage einen Proxy hinzu.

HTTP/HTTPS-Proxys

HTTP-Proxys sind die gebräuchlichste und kostengünstigste Proxy-Art. Allerdings nutzen sie eine unverschlüsselte Verbindung, was sie weniger sicher macht. HTTPS-Proxys verwenden dieselbe Verbindungsmethode, verschlüsseln die Daten jedoch und machen sie dadurch zuverlässiger.

Um einen Proxy zu verwenden, müssen wir eine Variable erstellen. Wenn Sie einen Proxy für HTTP-Anfragen verwenden möchten, sieht Ihr Code folgendermaßen aus:

proxies = {
    'http': 'http://45.95.147.106:8080',
}

Und für einen HTTPS-Proxy:

proxies = {
    'https': 'https://37.187.17.89:3128',
}

Oder Sie können beide Arten von Proxys gleichzeitig angeben:

proxies = {
    'http': 'http://45.95.147.106:8080',
    'https': 'https://37.187.17.89:3128'
}

Um einen Proxy mit Python-Anfragen zu verwenden, geben Sie Folgendes an Proxys Parameter und setzen Sie seinen Wert auf die entsprechende Variable. Dadurch wird sichergestellt, dass die Anfrage über den Proxy ausgeführt wird.

response = requests.get(url, proxies=proxies)

Die Verwendung von HTTP/HTTPS-Proxys mit der Requests-Bibliothek ist relativ einfach. Schauen wir uns also an, wie man SOCKS-Proxys einrichtet.

SOCKS-Proxys

SOCKS-Proxys, insbesondere SOCKS5, sind flexibler und allgemeiner in ihrer Unterstützung für verschiedene Arten von Datenverkehr und Authentifizierungsmethoden. Sie werden häufig für Anwendungen bevorzugt, die eine größere Auswahl an Proxys erfordern.

Um SOCKS-Proxys zu verwenden, müssen Sie das zusätzliche Paket „requests(socks)“ installieren:

pip install requests(socks)

Jetzt können Sie die SOCKS-Proxy-IP-Adresse in einer Variablen in Ihrem Code angeben und verwenden.

proxies = {
    'http': 'socks5://24.249.199.4:41458',
    'https': 'socks5://24.249.199.4:41458'
}

Verwenden Sie SOCKS-Proxys, wenn Sie mehr Funktionalität in Ihrer Anwendung benötigen.

Anforderungsmethoden mit Proxys

Bevor wir uns den Proxyserver-Autorisierungsmethoden und der Sitzungsnutzung zuwenden, schauen wir uns die Arten von Anforderungen an, die mithilfe der Anforderungsbibliothek ausgeführt werden können.

GET-Methode

Dies ist die einfachste und am häufigsten verwendete Art der Anfrage. Damit können Sie alle Daten abrufen, die sich unter der angegebenen URL befinden. Im Allgemeinen hat diese Anfrage die folgende Form:

response = requests.get(target_url, proxies=proxies)

Verwenden Sie diese Methode, wenn Sie den Inhalt einer Webseite abrufen möchten.

POST-Methode

Die nächste Methode ist POST. Es ermöglicht Ihnen, beliebige Daten an die angegebene URL zu senden. Dies bedeutet jedoch nicht, dass Sie im Gegenzug keine Daten erhalten. Wenn Sie Daten mithilfe einer POST-Anfrage an einen Server senden, erhalten Sie normalerweise eine Antwort vom Server, die möglicherweise die erforderlichen Daten enthält. Hier ist ein Beispiel für eine POST-Anfrage:

response = requests.post(target_url, data=data, proxies=proxies)

Diese Methode wird weniger häufig verwendet, kann jedoch bei der Arbeit mit APIs hilfreich sein.

Andere Methoden

Die übrigen Methoden werden selten verwendet, daher fassen wir der Einfachheit halber ihre Beschreibungen und Anwendungsbeispiele in einer Tabelle zusammen.

Methode

Beschreibung

Beispiel

SETZEN

Daten auf einem Server aktualisieren

request.put(target_url, data=data, proxies=proxies)

LÖSCHEN

Daten von einem Server entfernen

request.delete(target_url, proxies=proxies)

KOPF

Rufen Sie Header für eine Ressource ab, die sich unter einer URL befindet

request.head(target_url, proxies=proxies)

OPTIONEN

Informieren Sie sich über die Kommunikationsmöglichkeiten

request.options(target_url, proxies=proxies)

PATCH

Anwenden teilweiser Änderungen auf eine Ressource

request.patch(target_url, data=data, proxies=proxies)

VERBINDEN

Stellen Sie eine Netzwerkverbindung zu einer Ressource her, die normalerweise mit einem Proxy für Tunnelzwecke verwendet wird

request.connect(target_url, proxies=proxies)

VERFOLGEN

Rufen Sie eine Diagnoseverfolgung der Kommunikation zwischen Client und Server ab

Anfragen.request(‚TRACE‘, target_url, proxies=Proxies)

Wie Sie sehen, kann jede der besprochenen Methoden bei Bedarf mit einem Proxy verwendet werden.

Arbeiten mit Sitzungen

Sitzungen sind ein sehr praktisches Tool, wenn Sie einige Einstellungen einmal vornehmen und diese für mehrere Verbindungen verwenden möchten. Mithilfe von Sitzungen können Sie dieselbe bestehende Verbindung verwenden, anstatt jedes Mal neue Verbindungen erstellen zu müssen.

Eine Sitzung behält Einstellungen, Cookies, Header und andere Informationen zwischen mehreren Anfragen bei. Dadurch bleiben Status und Authentifizierung über alle Anforderungen hinweg erhalten. Wenn Sie sich beispielsweise mit einer Anfrage bei einer Website anmelden oder für alle Anfragen denselben Proxy verwenden möchten, bleibt die Sitzung Sie für nachfolgende Anfragen angemeldet.

Um einen Proxy mit Python-Anfragen für eine gesamte Sitzung zu verwenden, müssen Sie zunächst ein Sitzungsobjekt erstellen und die Proxy-IP-Adressen dafür festlegen:

import requests

url="https://httpbin.org/ip"

session = requests.Session()
session.proxies = {
    'http': 'http://45.95.147.106:8080',
    'https': 'http://45.95.147.106:8080'
}

Wenn Sie nun eine Sitzungsanfrage stellen, müssen Sie nur noch die Sitzung und die URL angeben. Es werden die zuvor angegebenen Proxys verwendet.

response = session.get(url)

Nachdem Sie mit der Arbeit an einer Sitzung fertig sind, müssen Sie sie schließen:

session.close()

Während Sie die Anforderungsbibliothek verwenden, können Sie mehrere Sitzungen einrichten und zwischen ihnen wechseln. Auf diese Weise können Sie Ihre Verbindungen so konfigurieren, wie Sie es benötigen.

Proxy-Authentifizierung

Um geschützte und private Proxys nutzen zu können, müssen Sie einen persönlichen Benutzernamen und ein Passwort verwenden. Allerdings unterscheiden sich die Authentifizierungsmethoden für verschiedene Proxy-Typen. Schauen wir sie uns einzeln an.

HTTP/HTTPS-Proxy-Authentifizierung

Um sich bei einem HTTP/HTTPS-Proxy zu authentifizieren, können Sie einfach den Benutzernamen und das Passwort als Teil der Proxy-URL angeben, zum Beispiel:

http://{proxy_username}:{proxy_password}@{http_proxy_url}

Anschließend können Sie wie in den vorherigen Beispielen Anfragen stellen.

SOCKS-Proxy-Authentifizierung

Die Authentifizierung in SOCKS-Proxys unterscheidet sich geringfügig. Im Gegensatz zum vorherigen Beispiel müssen Sie sich während der Anfrage authentifizieren:

import requests

response = requests.get(target_url, proxies=proxies, auth=(proxy_username, proxy_password))

Alternativ können Sie eine Sitzung erstellen und damit die Authentifizierungsparameter festlegen:

session.auth = ('username', 'password')

Ansonsten ist der Code derselbe.

Erweiterte Proxy-Techniken

Zusätzlich zu den von uns behandelten Themen gibt es viele andere Möglichkeiten, Proxys mit der Requests-Bibliothek zu verwenden. Werfen wir einen Blick darauf, wie Sie Umgebungsvariablen verwenden, um Ihren Code zu vereinfachen, und wie Sie Proxys rotieren.

Umgebungsvariable für Anfragen

Umgebungsvariablen sind Variablen auf Systemebene, die verschiedene Einstellungen und Verhaltensweisen von Softwareanwendungen, einschließlich Python-Programmen, konfigurieren. Beim Konfigurieren von Proxy-Einstellungen für Python-Programme, die die Anforderungsbibliothek verwenden, können Sie Umgebungsvariablen verwenden, um Proxy-Informationen anzugeben.

Mit diesem Ansatz können Sie die Proxy-Konfiguration von Ihrem Code getrennt halten, was die Verwaltung der Proxy-Einstellungen erleichtert, insbesondere in verschiedenen Umgebungen oder beim Teilen von Code.

Sie können die Umgebungsvariablen für HTTP/HTTPS-Proxys manuell oder mit den folgenden Befehlen festlegen:

export HTTP_PROXY=http://username:(email protected):8080
export HTTPS_PROXY=https://username:(email protected):8080

Wir haben bereits eine ausführliche Anleitung zu Umgebungsvariablen, deren Einstellung und Verwendungszweck geschrieben. Bei Problemen oder Fragen können Sie sich an unseren Ratgeber wenden.

Der Hauptvorteil der Verwendung von Umgebungsvariablen besteht darin, dass Sie den Proxy nicht in Ihrem Code angeben müssen. Sie werden automatisch für alle Anfragen verwendet.

IP-Rotation und Proxy-Pools

IP-Rotation und Proxy-Pools sind Techniken, mit denen die IP-Adresse für Webanfragen in Python mithilfe der Anfragebibliothek rotiert oder geändert wird. Diese Techniken sind beim Web-Scraping, der Datenerfassung oder anderen Aufgaben wertvoll, bei denen Sie IP-Verbote, Ratenbeschränkungen oder den Zugriff auf geografisch eingeschränkte Inhalte vermeiden müssen.

Um rotierende Proxys zu verwenden, können Sie die vorherigen Beispiele verwenden. Ersetzen Sie einfach den spezifischen Proxy durch eine Server-URL:

import requests

proxies = {
    'http': 'http://your-proxy-service-url.com',
    'https': 'http://your-proxy-service-url.com'
}

Bei Proxy-Pools wird ein Pool oder eine Liste von Proxy-Servern (Proxy-Wörterbuch) verwaltet und manuell durch diese gewechselt. Sie können eine Liste von Proxyservern erstellen oder abrufen und diese dann einzeln für Ihre Anfragen verwenden und die Liste nach Bedarf durchgehen.

proxy_pool = ('http://45.95.147.105:8080', 'http://45.95.147.106:8080', 'http://45.95.147.107:8080')

for proxy_url in proxy_pool:
    # YOUR CODE

Alternativ können Sie einen völlig zufälligen Proxy aus der Liste auswählen:

import random

proxy_pool = ('http://45.95.147.105:8080', 'http://45.95.147.106:8080', 'http://45.95.147.107:8080')

num = random.randint(1, len(proxy_pool)-1)
proxies = {
  "http://": proxy_pool(num)
}

Die manuelle Verwaltung eines Proxy-Pools oder einer Proxy-Rotation ist eine komplexe Aufgabe, die eine sorgfältige Verwaltung, Fehlerbehandlung und Überwachung erfordert, um sicherzustellen, dass die IP-Rotation reibungslos verläuft und potenzielle Probleme umgehend behoben werden. Es ist außerdem wichtig, Proxyserver aus zuverlässigen Quellen zu beziehen, um Sicherheits- und Zuverlässigkeitsprobleme zu vermeiden.

Abschluss

In diesem Artikel haben wir die Grundlagen der Verwendung von Proxys mit der Requests-Bibliothek von Python untersucht. Proxys sind ein leistungsstarkes Tool, mit dem Sie Ihre webbezogenen Aufgaben in Python verbessern können. Unabhängig davon, ob Sie Ihre Privatsphäre schützen, auf blockierte Inhalte zugreifen, die Leistung verbessern oder Ihre IP-Adresse ändern möchten, können Proxys Ihnen dabei helfen, Ihre Ziele zu erreichen.

Mit den richtigen Kenntnissen und Tools können Sie die Leistungsfähigkeit von Proxys nutzen, um neue Möglichkeiten für Ihre Python-Projekte zu erschließen. Beispielsweise können Sie Proxys verwenden, um Websites zu durchsuchen, Daten zu sammeln, Social-Media-Aufgaben zu automatisieren und anonym im Internet zu surfen.

Wenn Sie nach einer robusteren Lösung suchen, stehen auch kommerzielle Proxy-Integrationsplattformen und -Dienste zur Verfügung. Diese Plattformen können verschiedene Funktionen bereitstellen, z. B. Proxy-Rotation, Authentifizierung und SSL-Überprüfung.

Egal welche Anforderungen Sie haben, es gibt eine Proxy-Lösung, die zu Ihnen passt. Indem Sie die Grundlagen von Proxys verstehen und wissen, wie Sie sie effektiv nutzen, können Sie Ihre webbezogenen Aufgaben verbessern und die Sicherheit, Leistung und Zuverlässigkeit Ihrer Anwendungen verbessern.

Related Posts

Hinterlasse einen Kommentar