Automation and scraping · Edition No. 22 · 16 Sep 2026

lexiforest/curl-impersonate

A build of curl whose TLS and HTTP/2 handshakes match a real browser's, so pages that refuse automated visitors answer normally.

← Automation and scrapingRead the whole edition →

2.7k stars · MIT · v2.2.2 (2026-09-01), read from /releases/latest; the date showed no year and falls in the past, so 2026 · Track this in Scout

A build of curl whose TLS and HTTP/2 handshakes match a real browser's, so pages that refuse automated visitors answer normally.

Repo detailsthe review · specs · pros & cons · install

What it is

A patched build of curl, the standard command-line tool for fetching a web page. The patches change how it negotiates the encrypted connection and how it opens an HTTP/2 session, so the fingerprint a website measures matches a real browser instead of a script. It ships wrapper commands named after each browser and version, and this repository is an actively maintained fork of the original project with more browsers and more build targets.What it is good for. Anyone whose research or monitoring keeps hitting a wall. The problem it removes is a page that works in your browser and fails in your script, for no reason you can see. Twenty-one editions have handed you scrapers and research tools — yt-dlp, Firecrawl, crawl4ai, trafilatura, changedetection.io — and every one of them fails the same way against a site that filters on the handshake. This is the layer underneath all of them. For competitor research for the YouTube channel it is often the difference between a page you can read and a page you cannot.

Stars2.7k
LicenceMIT
Latestv2.2.2 (2026-09-01), read from /releases/latest; the date showed no year and falls in the past, so 2026
Good
  • It solves a specific problem that nothing else in this ledger addresses, and it solves it completely.
  • There is a Python library, curl_cffi, that gives the same fingerprints through code that looks like requests.
  • MIT licence, and prebuilt binaries mean you do not have to compile curl yourself.
Watch for
  • Making requests look like a browser can break a website's terms of service. Read them, and be careful with rate limits.
  • Browser fingerprints change with each browser release, so this needs updating to stay convincing.
  • It only handles the connection. A site that requires JavaScript to render its content still needs a real browser.
Similar repositories
Install
# Prebuilt builds for Linux and macOS:
#   https://github.com/lexiforest/curl-impersonate/releases/latest
# They give you one command per browser:
curl_chrome131 https://example.com
# Or run it from a container with nothing installed:
docker run --rm lexiforest/curl-impersonate curl_chrome131 https://example.com
# From Python, the same fingerprints in a requests-like library:
python3 -m venv venv
source venv/bin/activate
pip install curl_cffi
Screenshots
lexiforest/curl-impersonate: GitHub preview cardlexiforest/curl-impersonate: Screenshot 1lexiforest/curl-impersonate: Screenshot 2lexiforest/curl-impersonate: Screenshot 3

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.