Zurück zum Blog
Anleitungen
Ștefan RăcilăLast updated on Mar 31, 20265 min read

So verwenden Sie einen Proxy-Server mit dem Python-Modul „requests“ – Der ultimative Leitfaden

So verwenden Sie einen Proxy-Server mit dem Python-Modul „requests“ – Der ultimative Leitfaden

Einleitung

Web-Scraping ist ein leistungsstarkes Tool, mit dem Sie wertvolle Informationen aus Websites extrahieren können. Es kann jedoch auch die Server der Websites, die Sie scrapen, stark belasten, weshalb viele Websites IP-Adressen blockieren, die zu viele Anfragen stellen. Um dies zu vermeiden, können Sie Proxys für Ihre Anfragen verwenden. In diesem Artikel zeige ich Ihnen, wie Sie Python mit Proxys nutzen und wie Sie Proxy-IPs rotieren lassen, um eine Sperrung zu vermeiden.

Einrichtung

Bevor wir beginnen, müssen folgende Voraussetzungen erfüllt sein:

✅ Python installiert

✅ Etwas Erfahrung mit Python

✅ Python-Requests-Bibliothek ebenfalls installiert

✅ Eine Liste mit Proxy-IPs und -Ports

Um Python zu installieren, müssen Sie das Python-Installationsprogramm von der offiziellen Python-Website herunterladen: https://www.python.org/downloads/

Sie können die neueste Version von Python 3 wählen. Es wird empfohlen, die neueste Version von Python zu verwenden, um von den neuesten Funktionen und Sicherheitsupdates zu profitieren.

Sobald der Download abgeschlossen ist, führen Sie das Installationsprogramm aus und folgen Sie den Anweisungen, um Python auf Ihrem Computer zu installieren. Achten Sie während des Installationsvorgangs darauf, die Option zum Hinzufügen von Python zum PATH Ihres Systems zu aktivieren, damit Sie Python über die Befehlszeile ausführen können.

Nach Abschluss der Installation können Sie überprüfen, ob Python korrekt installiert wurde, indem Sie eine Eingabeaufforderung oder ein Terminal öffnen und den Befehl `python --version` ausführen. Daraufhin sollte die Version von Python angezeigt werden, die Sie installiert haben.

Sie können überprüfen, ob das Paket `python-requests` installiert ist, indem Sie das Terminal öffnen und den folgenden Befehl ausführen:

$ pip freeze

`pip` ist ein Paketmanager, der in neueren Python-Versionen bereits enthalten sein sollte. Falls Sie `pip` aus irgendeinem Grund separat installieren müssen, können Sie die Anweisungen in dieser Anleitung befolgen.

`pip freeze` zeigt alle derzeit installierten Python-Pakete und deren Versionen an. Überprüfen Sie, ob das Modul `requests` in dieser Liste enthalten ist. Falls nicht, installieren Sie es mit dem folgenden Befehl:

$ pip install requests

Konfiguration der Proxys

In diesem Abschnitt erkläre ich, wie man Proxys mit `python-requests` einrichtet. Um loszulegen, benötigen wir einen funktionierenden Proxy und die URL, an die wir die Anfrage senden möchten.

Grundlegende Verwendung

import requests

proxies = {

    'http': 'http://proxy_ip:proxy_port', 

    'https': 'http://secure_proxy_ip:proxy_port',

}

res = requests.get('https://httpbin.org/get', proxies=proxies)

Wenn Sie keinen privaten Proxy haben, den Sie zum Testen dieses Codes verwenden können, finden Sie einen kostenlosen öffentlichen Proxy in der Liste auf freeproxylists.net. Bitte beachten Sie, dass die Proxys auf dieser Website nicht für den Einsatz in einer Produktionsumgebung gedacht sind und möglicherweise nicht zuverlässig sind.

Das `proxies`-Wörterbuch muss genau die Struktur aufweisen, wie sie im Code-Beispiel gezeigt wird. Du gibst einen Proxy für HTTP-Verbindungen und einen Proxy für HTTPS-Verbindungen an. Die Proxys können unterschiedlich sein oder auch nicht. Du kannst denselben Proxy für mehrere Protokolle verwenden.

Beachten Sie außerdem, dass ich in der Proxy-URL für beide Verbindungen das HTTP-Schema verwendet habe. Nicht alle Proxys verfügen über ein SSL-Zertifikat. Die Verbindung zum Proxy wird in beiden Fällen über HTTP hergestellt.

Zur Authentifizierung bei einem Proxy können Sie folgende Syntax verwenden:

http://user:pass@working-proxy:port

Umgebungsvariablen

Wenn du nicht vorhast, mehrere Proxysätze zu verwenden, kannst du diese als Umgebungsvariablen exportieren.

So exportieren Sie Umgebungsvariablen in der Linux-Shell

$ export HTTP_PROXY='http://proxy_ip:proxy_port'

$ export HTTP_PROXYS='http://secure_proxy_ip:proxy_port'

Um die Umgebung zu überprüfen, führen Sie einfach Folgendes aus

$ env

So exportieren Sie Umgebungsvariablen in PowerShell

>_ $Env:HTTP_PROXY='http://proxy_ip:proxy_port'

>_ $Env:HTTP_PROXYS='http://secure_proxy_ip:proxy_port'

Um die Umgebung zu überprüfen, führen Sie einfach folgenden Befehl aus

>_ Get-ChildItem -Path Env:

So exportieren Sie Umgebungsvariablen in der Eingabeaufforderung

\> set HTTP_PROXY='http://proxy_ip:proxy_port'

\> set HTTP_PROXYS='http://secure_proxy_ip:proxy_port'

Um die Umgebung zu überprüfen, führen Sie einfach folgenden Befehl aus

\> set

Auf diese Weise müssen Sie in Ihrem Code keine Proxys definieren. Stellen Sie einfach die Anfrage, und es funktioniert.

Wie liest man die Antwort?

Sie können Ihre Daten auf viele Arten auslesen, aber in den meisten Fällen werden Sie sie als Klartext oder als JSON-kodierte Zeichenkette auslesen wollen.

Klartext:

response = requests.get(url)

text_resp = response.text

JSON: Für JSON-formatierte Antworten bietet das requests-Paket eine integrierte Methode.

response = requests.get(url)

json_resp = response.json()

Proxy-Sitzungen

Möglicherweise möchten Sie auch Daten von Websites scrapen, die Sitzungen verwenden. In diesem Fall müssen Sie ein Sitzungsobjekt erstellen. Erstellen Sie zunächst eine Variable namens `session` und weisen Sie ihr die Methode `Session()` von requests zu. Nun müssen Sie die Proxys dem Attribut `.proxies` der Sitzung zuweisen. Anschließend senden Sie Ihre Anfrage unter Verwendung des bereits erstellten `session`-Objekts. Diesmal müssen Sie lediglich die URL als Argument übergeben.

import requests

session = requests.Session()

session.proxies = {

    'http': 'http://proxy_ip:proxy_port',

    'https': 'http://secure_proxy_ip:proxy_port',

}

res = session.get('https://httpbin.org/get')

Achte darauf, `proxy_ip` und `proxy_port` durch die tatsächliche IP-Adresse und den Port deines Proxys zu ersetzen.

So wechseln Sie die Proxy-IPs

Um zu vermeiden, dass du von Websites blockiert wirst, ist es wichtig, deine Proxy-IPs zu rotieren. Eine Möglichkeit hierfür ist, eine Liste mit Proxy-IPs und -Ports zu erstellen und bei der Erstellung von Anfragen Proxys nach dem Zufallsprinzip auszuwählen.

Hier ist ein Beispiel:

def proxy_request(url, **kwargs):

    while True:

        try:

            proxy = random.randint(0, len(ip_addresses) - 1)

            proxies = {

                'http': ip_addresses(proxy),

                'https': ip_addresses(proxy)

            }

           

            response = requests.get(url, proxies=proxies, timeout=5, **kwargs)

            print(f"Currently using proxy: { proxy['http'] }")

            break

        except:

            print("Error encoutered, changing the proxy...")

    return response

print(proxy_request('https://httpbin.org/get'))

Beauftragen Sie einen Profi

Die Verwaltung Ihrer eigenen Proxys ist zwar mit Python möglich, aber es ist ein zeitaufwändiger Prozess, und es kann viel Zeit und Geld kosten, einen guten Satz an Proxys zu erhalten. Um Zeit und Geld zu sparen, können Sie ein professionelles Scraping-Tool verwenden. WebScrapingAPI verfügt über integrierte Funktionen zur Proxy-Verwaltung und -Rotation. Wir verfügen über einen Pool an verifizierten und hochwertigen Proxys, die zuverlässiger sind und Ihnen langfristig Zeit und Geld sparen können.

Wir bieten außerdem einen Proxy-Modus an, den Sie kostenlos testen können. Um einen kostenlosen API-Schlüssel zu erhalten, müssen Sie lediglich ein Konto erstellen und die Testversion von WebScrapingAPI starten. Hier ist ein Code-Beispiel zur Verwendung unseres Proxy-Modus:

import requests

def get_params(object):

    params = ''

    for key,value in object.items():

        if list(object).index(key) < len(object) - 1:

            params += f"{key}={value}."

        else:

            params += f"{key}={value}"

    return params

API_KEY = '<YOUR_API_KEY>'

TARGET_URL = 'http://httpbin.org/get'

PARAMETERS = {

    "proxy_type":"datacenter",

    "device":"desktop"

}

PROXY = {

    "http": f"http://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:80",

    "https": f"https://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:8000"

}

response = requests.get(

    url=TARGET_URL,

    proxies=PROXY,

    verify=False

)

print(response.text)

Bitte beachten Sie: Wenn Sie die Verbindung zum Proxy-Modus über HTTPS herstellen möchten, muss Ihr Code so konfiguriert sein, dass SSL-Zertifikate nicht überprüft werden. In diesem Fall wäre das `verify=False`, da Sie mit Python Requests arbeiten.

Fazit

Die Verwendung von Proxys ist eine effektive Methode, um beim Web Scraping nicht blockiert zu werden. Durch die Rotation von Proxy-IPs und die Nutzung eines Proxy-Pools können Sie das Risiko einer Blockierung verringern und die Erfolgschancen erhöhen. Die Verwaltung eigener Proxys kann jedoch mühsam sein, und es kann viel Zeit und Geld kosten, einen guten Satz an Proxys zu erhalten.

Wenn Sie einen Premium-Proxy-Dienst wie WebScrapingAPI abonnieren, erhalten Sie Zugriff auf eine Vielzahl von Funktionen, wie z. B. IP-Rotation und die Möglichkeit, zwischen Rechenzentrums- und Residential-Proxys zu wechseln.

Wir hoffen, dass dieser Artikel Ihnen ein besseres Verständnis dafür vermittelt hat, wie Sie einen Proxy mit HttpClient nutzen können und wie dieser Ihnen bei Ihren Scraping-Anforderungen helfen kann. Melden Sie sich für unsere 14-tägige kostenlose Testversion an, um unseren Dienst zu testen und alle seine Funktionen und Möglichkeiten kennenzulernen.

Über den Autor
Ștefan Răcilă, Full-Stack-Entwickler @ WebScrapingAPI
Ștefan RăcilăFull-Stack-Entwickler

Stefan Racila ist DevOps- und Full-Stack-Entwickler bei WebScrapingAPI, wo er Produktfunktionen entwickelt und die Infrastruktur wartet, die für die Zuverlässigkeit der Plattform sorgt.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.