Dieser Leitfaden erklärt, wie Sie cURL Impersonate verwenden, um das Browser-Verhalten für Web-Scraping zu imitieren:
- Was ist cURL Impersonate?
- Wie cURL Impersonate funktioniert
- cURL Impersonate: Command-Line-Tutorial
- cURL Impersonate: Python-Tutorial
- cURL Impersonate Advanced Usage
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.
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
curlmit 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,-curvesund 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.
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.
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-certificatesAuf Red Hat, Fedora oder CentOS führen Sie aus:
yum install nss nss-pem ca-certificatesAuf Archlinux starten Sie:
pacman -S nss ca-certificatesAuf macOS führen Sie diesen Befehl aus:
brew install nss ca-certificatesStellen Sie außerdem sicher, dass zlib installiert ist, da die vorkompilierten Binaries gzipped sind.
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-chromeFür die Firefox-Version auf Alpine Linux:
docker pull lwthiker/curl-impersonate:0.5-ffFür die Chrome-Version auf Debian:
docker pull lwthiker/curl-impersonate:0.5-chrome-slim-busterFür die Firefox-Version auf Debian:
docker pull lwthiker/curl-impersonate:0.5-ff-slim-busterSobald es heruntergeladen ist, führen Sie curl-impersonate mit einem docker run-Befehl aus.
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-impersonateFü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-wrapperIhr gewählter Wrapper ist (z. B.curl_chrome116,curl_edge101)optionsoptionale cURL-Flags sindtarget-urldie 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.orgMit Docker:
docker run --rm lwthiker/curl-impersonate:0.5-chrome curl_chrome110 https://www.wikipedia.orgErgebnis:
<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.
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_cfiiUsage:
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... -->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/ipIn 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-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.
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!
