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.
- 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 likerequests. - MIT licence, and prebuilt binaries mean you do not have to compile curl yourself.
- 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.
- lwthiker/curl-impersonate
The original project this one forked from, covering fewer browser versions and fewer build targets.
Track this in Scout - lexiforest/curl_cffi
The same fingerprints as a Python library, which is what you want inside a program rather than at a prompt.
Track this in Scout - FlareSolverr/FlareSolverr
Runs a real browser behind a small server to get past challenge pages, which is heavier and works where a handshake alone is not enough.
Track this in Scout
# 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



