Finden Sie heraus, wie Sie cURL mit Proxy verwenden können

Andrei Ogiolan am 05. Dezember 2022

Was ist cURL?

blog-image

Um das Ziel dieses Artikels zu erreichen, nämlich zu lernen, wie man cURL mit einem Proxy verwendet, müssen wir zunächst cURL vorstellen. Client URL (cURL) ist, kurz gesagt, eine einfach zu bedienende Befehlszeile, die für Entwickler entwickelt wurde, um Daten von einem Server abzurufen.

Wie benutzt man cURL?

Wie ich bereits oben erwähnt habe, ist die Verwendung von cURL ziemlich einfach und kann Informationen mit nur einem einzeiligen Befehl extrahieren. Zunächst müssen Sie ein Terminal öffnen und curl eingeben, gefolgt von einem Website-Link, zum Beispiel:

$ curl 'https://www.webscrapingapi.com/'

Herzlichen Glückwunsch, Sie haben Ihre erste Anfrage mit cURL gestellt. Dieser einfache Befehl fordert Informationen vom Server an, genau wie ein herkömmlicher Browser, und gibt den HTML-Code der Seite zurück. Nicht jede Website gibt HTML zurück, es gibt Endpunkte, die Daten als JSON-Objekt zurücksenden. Nehmen Sie dieses Beispiel:

$ curl 'https://jsonplaceholder.typicode.com/todos/3'

Geben Sie diesen Befehl in Ihr Terminal ein und Sie sollten diese Antwort erhalten:

{
"userId": 1,
"id": 3,
"title": "fugiat veniam minus",
"completed": false
}

Die meisten APIs geben Ihnen entweder HTML oder JSON zurück, wenn Sie cURL-Befehle gegen sie ausführen. Nun, das ist nicht alles, was cURL für uns tun kann. In Wirklichkeit ist es ein sehr ausgeklügeltes Tool, dessen Beherrschung viel Zeit in Anspruch nimmt. Wenn Sie mehr über cURL erfahren möchten, empfehle ich Ihnen dringend, einen Blick in die cURL-Dokumentation zu werfen, um die Parameter besser zu verstehen. Alternativ können Sie auch den folgenden Befehl ausführen:

$ curl --help

Dies zeigt Ihnen einige Optionen, die Sie für cURL einstellen können:

Usage: curl [options...] <url>
-d, --data <data> HTTP POST data
-f, --fail Fail silently (no output at all) on HTTP errors
-h, --help <category> Get help for commands
-i, --include Include protocol response headers in the output
-o, --output <file> Write to file instead of stdout
-O, --remote-name Write output to a file named as the remote file
-s, --silent Silent mode
-T, --upload-file <file> Transfer local FILE to destination
-u, --user <user:password> Server user and password
-A, --user-agent <name> Send User-Agent <name> to server
-v, --verbose Make the operation more talkative
-V, --version Show version number and quit

This is not the full help, this menu is stripped into categories.
Use "--help category" to get an overview of all categories.
For all options use the manual or "--help all".

Wie Sie wahrscheinlich sehen können, sind das noch nicht einmal alle Optionen, die Sie für cURL einstellen können, es ist ein in Kategorien unterteiltes Menü. Sie haben wahrscheinlich erraten, dass, um alle Optionen, die Sie ausführen möchten, zu erhalten:

$ curl --help all

Die Verwendung von cURL allein hat jedoch einige Einschränkungen hinsichtlich der Anzahl der Server, von denen wir Daten abrufen können. Beispielsweise können einige Server die Geolokalisierung nutzen und sich weigern, uns die gesuchten Daten aufgrund unseres Standorts zu liefern. In diesem Fall benötigen wir einen Proxy, der wie ein Mittelsmann zwischen uns und dem Zielserver agiert.

Was ist eine Vollmacht?

Das Konzept eines Proxyservers ist nicht schwer zu verstehen. Wie bereits erwähnt, ist ein Proxyserver eine Art Vermittler zwischen einem Client, der eine Ressource anfordert, und dem Server, der diese Ressource bereitstellt. Proxys sind dafür vorgesehen, dass wir Daten von überall her abrufen können. Um dieses Konzept besser zu verstehen, nehmen wir an, dass wir einen Server namens Bob haben, der über einige Daten verfügt, an denen wir interessiert sind, aber Bob stellt diese Daten nur zur Verfügung, wenn wir uns in Europa befinden, wir aber in den Vereinigten Staaten sind.

Wie gehen wir damit um? Wir senden unsere Anfrage an einen Proxy-Server, der sich in Europa und nicht bei Bob befindet, und teilen dem Proxy mit, dass wir einige Daten von Bob erhalten möchten. Der Proxy-Server sendet die Anfrage an Bob, und Bob sendet die Daten an den Proxy-Server zurück, da der Proxy-Server in Europa steht. Der Proxy-Server sendet uns dann die Daten von Bob zurück.

Dies ist der Hauptfluss der Funktionsweise von Proxys. Ein weiterer guter Anwendungsfall für einen Proxy ist zum Beispiel, wenn wir Daten erhalten wollen, die Preise in einer bestimmten Währung enthalten, um Verwirrung zu vermeiden. Für ein besseres Verständnis von Proxies empfehle ich Ihnen einen Blick auf Wikipedia zu werfen.

Proxy-Einrichtung

Um einen Proxy zu verwenden, benötigen Sie höchstwahrscheinlich einen Host, einen Port, einen Benutzer, ein Passwort und eine Ziel-URL, von der Sie Daten erhalten möchten. Für dieses Beispiel werde ich einen Proxy verwenden, der von WebScrapingAPI für Anfragen zur Verfügung gestellt wird. Weitere Informationen dazu finden Sie hier. WebScrapingAPI ist kein Proxy-Anbieter, sondern ein Web-Scraping-Dienst, der stattdessen Proxys bereitstellt. In unseren Beispielen wird unser Setup wie folgt aussehen:

  • Proxy-Hostname: proxy.webscrapingapi.com
  • Proxy-Anschluss: 80
  • Proxy-Benutzername: webscrapingapi.proxy_type=datacenter.device=desktop
  • Proxy password: <YOUR-API-KEY-HERE> // you can get one by registering here
  • Ziel-URL: http://httpbin.org/get

Bitte beachten Sie, dass es einige Proxy-Anbieter geben kann, die ein anderes Authentifizierungsschema verlangen.

Wie benutzt man cURL mit einem Proxy?

Da wir uns mit cURL und Proxies beschäftigt haben, können wir nun beides miteinander kombinieren und Anfragen über einen Proxy stellen, was ein ziemlich unkomplizierter Prozess ist. Zuerst müssen wir uns authentifizieren und dann können wir den Proxy verwenden.

Proxy-Authentifizierung in cURL

Die Proxy-Authentifizierung in cURL ist ziemlich einfach und kann für unser obiges Beispiel wie folgt durchgeführt werden:

$ curl -U webscrapingapi.proxy_type=datacenter.device=desktop:<YOUR-API-KEY> --proxy @proxy.webscrapingapi.com:80 http://httpbin.org/get

Wenn wir diesen Befehl ausführen, gibt uns httpbin unsere IP-Adresse und einige andere Eigenschaften zurück:

​​{
"args": {},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5173.0 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-633af93b-35faf8637f37f7f075f185ec"
},
"origin": "45.9.120.69",
"url": "http://httpbin.org/get"
}

Wie Sie wahrscheinlich schon sehen können, ist der Ursprung, den Sie zurückbekommen, nicht Ihre IP-Adresse, sondern die Adresse des Proxy-Servers. Außerdem können Sie den Befehl auch ausführen, ohne Ihr Passwort im Terminal einzugeben. Dazu gehen Sie wie folgt vor:

$ curl -U webscrapingapi.proxy_type=datacenter.device=desktop --proxy @proxy.webscrapingapi.com:80 http://httpbin.org/get

Dann werden Sie aufgefordert, Ihr Passwort einzugeben:

Geben Sie das Proxy-Passwort für den Benutzer 'webscrapingapi.proxy_type=datacenter.device=desktop' ein:

Jetzt können Sie Ihren API-Schlüssel dort eingeben, ohne ihn im Terminal preiszugeben, was den gesamten Prozess sicherer macht. Außerdem ist es nicht ideal, jedes Mal, wenn Sie einen cURL-Befehl über einen Proxy ausführen möchten, Ihre Anmeldeinformationen, den Host und den Port einzugeben, insbesondere wenn Sie viele Befehle über einen Proxy ausführen möchten und denselben Proxy-Anbieter verwenden. 

Natürlich können Sie Ihre Anmeldedaten in einer separaten Datei auf Ihrem Rechner speichern und sie jedes Mal per Copy-Paste einfügen, aber es gibt einen natürlicheren Ansatz, nämlich die Übergabe über Umgebungsvariablen, auf die wir weiter unten eingehen werden.

Verwendung von cURL mit einem Proxy über Umgebungsvariablen

Eine Umgebungsvariable ist wie ein Objekt, das einen editierbaren Wert im Speicher speichert, der von einer oder mehreren Programmen verwendet werden kann. In diesem speziellen Fall können wir cURL eine Variable namens http_proxy oder https_proxy übergeben, die unsere Proxy-Details enthält und die wir nicht bei jeder Ausführung des Befehls angeben müssen. Sie können dies tun, indem Sie diesen Befehl ausführen:

$ export http_proxy="http://webscrapingapi.proxy_type=datacenter.device=desktop:<YOUR-API-KEY>@proxy.webscrapingapi.com:80"

Bitte beachten Sie, dass Sie Ihre Variable http_proxy oder https_proxy aufrufen müssen , damit cURL versteht, worüber Sie sprechen. Das war's, jetzt brauchen Sie Ihre Anmeldeinformationen nicht mehr bei jedem Lauf zu übergeben und Sie können cURL einfach so starten:

$ curl http://httpbin.org/get

Das Ergebnis ist die folgende Ausgabe:

{
"args": {},
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Host": "httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-633bf912-66ace1104304ddaf5ea8ac65"
},
"origin": "132.255.134.104",
"url": "http://httpbin.org/get"
}

Wie Sie wahrscheinlich sehen, ist die IP-Adresse die Adresse des Proxys, was bestätigt, dass Sie Ihren Proxy sehr gut eingestellt haben. Jetzt können wir jeden cURL-Befehl ausführen, ohne die Proxy-Details angeben zu müssen, denn cURL übernimmt das für uns.

Deaktivierung des Proxys für einen bestimmten Befehl

Wenn Sie jedoch eine bestimmte Anfrage ohne Proxy senden müssen, brauchen Sie sich nicht darum zu kümmern, den Wert der Variable http_proxy zu löschen. Als ausgeklügeltes Werkzeug mit vielen Optionen kann cURL dies für uns durch seinen Proxy-Parameter erledigen, der besagt, dass kein Proxy verwendet werden soll, wenn die Anfrage gestellt wird. Dies kann wie folgt geschehen:

$ curl --noproxy "*" http://httpbin.org/get

Dadurch erhalten wir unsere IP-Adresse zurück, nicht die der Proxys.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass die Verwendung von cURL mit einem Proxy eine großartige Möglichkeit ist, Geolocation-Filter zu umgehen, die Anzahl der Ressourcen, die wir von Webservern abrufen können, zu erweitern und ein guter Ausgangspunkt für den Einstieg in Themen wie Web-Scraping ist, bei denen wir Proxys verwenden müssen, um bestimmte Daten abrufen zu können oder sie in dem gewünschten Format zu erhalten.ich hoffe, dass Sie diesen Artikel nützlich fanden, um zu lernen, wie man cURL mit einem Proxy verwendet, und Sie werden damit herumspielen und Ihre eigenen Skripte erstellen, die Daten von Servern extrahieren, die Geolocation-Filter verwenden.

Nachrichten und Aktualisierungen

Bleiben Sie auf dem Laufenden mit den neuesten Web Scraping-Anleitungen und Nachrichten, indem Sie unseren Newsletter abonnieren.

We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Ähnliche Artikel

Vorschaubild
LeitfädenWie man Amazon-Produktdaten scrappt: Ein umfassender Leitfaden zu Best Practices & Tools

Entdecken Sie die Komplexität des Scrapens von Amazon-Produktdaten mit unserem ausführlichen Leitfaden. Von Best Practices und Tools wie der Amazon Scraper API bis hin zu rechtlichen Aspekten erfahren Sie, wie Sie Herausforderungen meistern, CAPTCHAs umgehen und effizient wertvolle Erkenntnisse gewinnen.

Suciu Dan
Autorenavatar
Suciu Dan
15 Minuten lesen
Vorschaubild
LeitfädenScrapy Splash Tutorial: Die Kunst des Scrapings von JavaScript-gerenderten Websites mit Scrapy und Splash beherrschen

Lernen Sie, wie Sie mit Scrapy und Splash dynamische JavaScript-gerenderte Websites scrapen können. Von der Installation über das Schreiben eines Spiders bis hin zum Umgang mit Seitenumbrüchen und der Verwaltung von Splash-Antworten bietet dieser umfassende Leitfaden Schritt-für-Schritt-Anleitungen für Anfänger und Experten gleichermaßen.

Ștefan Răcila
Autorenavatar
Ștefan Răcila
6 Minuten lesen
Vorschaubild
LeitfädenErfahren Sie, wie Sie die Cloudflare-Erkennung mit dem besten Selenium-Browser umgehen

Erfahren Sie, welcher Browser am besten geeignet ist, um Cloudflare-Erkennungssysteme beim Web-Scraping mit Selenium zu umgehen.

Mihnea-Octavian Manolache
Autorenavatar
Mihnea-Octavian Manolache
9 Minuten lesen