Skip to content

Verwenden Sie cURL Impersonate für browserähnliches Web-Scraping in der CLI und in Python, mit Unterstützung für Proxies, TLS-Fingerprinting und Anti-Bot-Umgehung.

Notifications You must be signed in to change notification settings

bright-data-de/web-scraping-with-curl-impersonate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Web-Scraping mit cURL Impersonate

Bright Data Promo

Dieser Leitfaden erklärt, wie Sie cURL Impersonate verwenden, um das Browser-Verhalten für Web-Scraping zu imitieren:

What Is cURL Impersonate?

cURL Impersonate ist ein spezialisierter cURL-Build, der dafür entwickelt wurde, gängige Browser (Chrome, Edge, Safari und Firefox) zu imitieren. Dieses Tool führt TLS- und HTTP-Handshakes aus, die denen realer Browser sehr ähnlich sind.

Sie können diesen HTTP-Client entweder über das curl-impersonate Command-Line-Tool verwenden, ähnlich wie bei regulärem curl, oder als Bibliothek in Python.

Diese Browser können imitiert werden:

Browser Simulated OS Wrapper Script
Chrome 99 Windows 10 curl_chrome99
Chrome 100 Windows 10 curl_chrome100
Chrome 101 Windows 10 curl_chrome101
Chrome 104 Windows 10 curl_chrome104
Chrome 107 Windows 10 curl_chrome107
Chrome 110 Windows 10 curl_chrome110
Chrome 116 Windows 10 curl_chrome116
Chrome 99 Android 12 curl_chrome99_android
Edge 99 Windows 10 curl_edge99
Edge 101 Windows 10 curl_edge101
Firefox 91 ESR Windows 10 curl_ff91esr
Firefox 95 Windows 10 curl_ff95
Firefox 98 Windows 10 curl_ff98
Firefox 100 Windows 10 curl_ff100
Firefox 102 Windows 10 curl_ff102
Firefox 109 Windows 10 curl_ff109
Firefox 117 Windows 10 curl_ff117
Safari 15.3 macOS Big Sur curl_safari15_3
Safari 15.5 macOS Monterey curl_safari15_5

Jeder unterstützte Browser hat ein spezifisches Wrapper-Script, das curl-impersonate mit den passenden Headern, Flags und Einstellungen konfiguriert, um diesen Browser zu simulieren.

How curl-impersonate Works

Beim Senden einer HTTPS-Anfrage findet ein TLS handshake statt. Während dieses Prozesses werden Details über den HTTP-Client mit dem Webserver geteilt, wodurch ein eindeutiger TLS-Fingerabdruck entsteht.

Standard-HTTP-Clients haben Konfigurationen, die sich von Browsern unterscheiden, was zu einem TLS-Fingerabdruck führt, der automatisierte Anfragen leicht offenlegt. Dadurch können Anti-Bot-Systeme Ihre Scraping-Versuche erkennen und blockieren.

cURL Impersonate löst dieses Problem, indem das Standard-curl-Tool so angepasst wird, dass es den TLS-Fingerabdrücken realer Browser entspricht – durch:

  • TLS library modification: Für Chrome-Versionen wird curl mit BoringSSL, Googles TLS-Bibliothek, kompiliert. Für Firefox-Versionen wird NSS, die TLS-Bibliothek von Firefox, verwendet.
  • Configuration adjustments: Es werden die TLS-Erweiterungen und SSL-Optionen von cURL angepasst, um Browser-Einstellungen zu imitieren, und es wird Unterstützung für browser-spezifische TLS-Erweiterungen hinzugefügt.
  • HTTP/2 handshake customization: Die HTTP/2-Verbindungseinstellungen von cURL werden an reale Browser angepasst.
  • Non-default flags: Es wird mit spezifischen Flags wie -ciphers, -curves und benutzerdefinierten Headern ausgeführt, um das Browser-Verhalten weiter zu imitieren.

Dadurch wirken curl-impersonate-Anfragen so, als kämen sie von einem realen Browser, was hilft, viele Bot-Erkennungsmechanismen zu umgehen.

curl-impersonate: Command Line Tutorial

Befolgen Sie diese Schritte, um cURL Impersonate über die Command Line zu verwenden.

Hinweis: Es werden mehrere Installationsmethoden gezeigt, aber Sie benötigen nur eine. Docker wird empfohlen.

Installation From Pre-Compiled Binaries

Laden Sie vorkompilierte Binaries für Linux und macOS von der Seite GitHub releases herunter. Installieren Sie vor der Verwendung:

  • NSS (Network Security Services): Bibliotheken zur Unterstützung plattformübergreifender sicherheitsfähiger Anwendungen.
  • CA certificates: Digitale Zertifikate zur Authentifizierung von Server- und Client-Identitäten.

Um die Voraussetzungen auf Ubuntu zu erfüllen:

sudo apt install libnss3 nss-plugin-pem ca-certificates

Auf Red Hat, Fedora oder CentOS führen Sie aus: 

yum install nss nss-pem ca-certificates

Auf Archlinux starten Sie: 

pacman -S nss ca-certificates

Auf macOS führen Sie diesen Befehl aus: 

brew install nss ca-certificates

Stellen Sie außerdem sicher, dass zlib installiert ist, da die vorkompilierten Binaries gzipped sind.

Installation through Docker

Docker-Images mit curl-impersonate sind auf Docker Hub verfügbar, basierend auf Alpine Linux und Debian.

Chrome-Images (*-chrome) können Chrome, Edge und Safari imitieren. Firefox-Images (*-ff) können Firefox imitieren.

Um ein Docker-Image herunterzuladen:

Für die Chrome-Version auf Alpine Linux:

docker pull lwthiker/curl-impersonate:0.5-chrome

Für die Firefox-Version auf Alpine Linux:

docker pull lwthiker/curl-impersonate:0.5-ff

Für die Chrome-Version auf Debian:

docker pull lwthiker/curl-impersonate:0.5-chrome-slim-buster

Für die Firefox-Version auf Debian:

docker pull lwthiker/curl-impersonate:0.5-ff-slim-buster

Sobald es heruntergeladen ist, führen Sie curl-impersonate mit einem docker run-Befehl aus.

Installation From Distro Packages

Auf Arch Linux installieren Sie über das AUR-Paket curl-impersonate-bin.

Auf macOS installieren Sie das inoffizielle Homebrew-Paket:

brew tap shakacode/brew

brew install curl-impersonate

Basic Usage

Führen Sie einen curl-impersonate-Befehl aus mit:

curl-impersonate-wrapper [options] [target-url]

Oder mit Docker:

docker run --rm lwthiker/curl-impersonate:[curl-impersonate-version]curl-impersonate-wrapper [options] [target_url]

Wobei:

  • curl-impersonate-wrapper Ihr gewählter Wrapper ist (z. B. curl_chrome116, curl_edge101)
  • options optionale cURL-Flags sind
  • target-url die URL der Webseite ist

Seien Sie vorsichtig mit benutzerdefinierten Optionen, da einige Flags die TLS-Signatur verändern könnten.

Die Wrapper setzen automatisch Standard-HTTP-Header, die Sie durch Anpassen der Scripts anpassen können.

Beispiel: Rufen Sie die Wikipedia-Startseite mit Chrome ab:

curl_chrome110 https://www.wikipedia.org

Mit Docker:

docker run --rm lwthiker/curl-impersonate:0.5-chrome curl_chrome110 https://www.wikipedia.org

Ergebnis:

<html lang="en" class="no-js">

  <head>

    <meta charset="utf-8">

    <title>Wikipedia</title>

    <meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">

<!-- omitted for brevity... -->

Der Server gibt das HTML zurück, als würden Sie einen Browser verwenden.

curl-impersonate: Python Tutorial

Während die Command Line sich hervorragend zum Testen eignet, wird Web-Scraping typischerweise in Sprachen wie Python umgesetzt.

Sie können cURL Impersonate in Python über curl-cffi verwenden, ein Python-Binding für curl-impersonate.

Prerequisites:

  • Python 3.8+
  • Ein Python-Projekt mit eingerichteter virtual environment
  • Optional eine Python-IDE wie Visual Studio Code

Installation:

Installieren Sie via pip:

pip install curl_cfii

Usage:

Typischerweise möchten Sie die requests-ähnliche API verwenden. Importieren Sie dazu requests aus curl_cffi:

response = requests.get("https://www.wikipedia.org", impersonate="chrome")

Geben Sie das Antwort-HTML aus mit:

print(response.text)

Alles zusammengefügt erhalten Sie:

from curl_cffi import requests

# make a GET request to the target page with

# the Chrome version of curl-impersonate

response = requests.get("https://www.wikipedia.org", impersonate="chrome")

# print the server response

print(response.text)

Wenn Sie dieses Script ausführen, wird ausgegeben:

html
Copy
<html lang="en" class="no-js">
  <head>
    <meta charset="utf-8">
    <title>Wikipedia</title>
    <meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.">
<!-- omitted for brevity... -->

cURL Impersonate Advanced Usage

Proxy Integration

Die Simulation des Browser-Fingerabdrucks ist gegen ausgefeilte Anti-Bot-Lösungen möglicherweise nicht ausreichend. Proxies können helfen, indem sie frische IP-Adressen bereitstellen.

So verwenden Sie einen Proxy mit cURL Impersonate über die Command Line:

curl-impersonate -x http://84.18.12.16:8888 https://httpbin.org/ip

In Python:

from curl_cffi import requests

proxies = {"http": "http://84.18.12.16:8888", "https": "http://84.18.12.16:8888"}

response = requests.get("https://httpbin.org/ip", impersonate="chrome", proxies=proxies)

Libcurl Integration

libcurl-impersonate ist eine kompilierte libcurl-Version mit cURL-Impersonate-Funktionen und einer erweiterten API für TLS-Details und Header-Konfigurationen.

Installieren Sie es über das pre-compiled package. Es erleichtert die Integration von cURL Impersonate in Bibliotheken in verschiedenen Programmiersprachen.

Conclusion

Beachten Sie, dass fortgeschrittene Anti-Bot-Lösungen wie Cloudflare automatisierte Anfragen möglicherweise weiterhin erkennen können. Für eine umfassende Lösung sollten Sie Bright Data's Scraper API in Betracht ziehen, die Browser-Fingerprinting, CAPTCHA solving und IP rotation übernimmt.

Registrieren Sie sich für eine kostenlose Testversion von Bright Data's Web-Scraping-Infrastruktur!

About

Verwenden Sie cURL Impersonate für browserähnliches Web-Scraping in der CLI und in Python, mit Unterstützung für Proxies, TLS-Fingerprinting und Anti-Bot-Umgehung.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors