lexiforest/curl_cffi

Python binding for curl-impersonate fork via cffi. A http client that can impersonate browser tls/ja3/http2 fingerprints.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 54 minutes ago
Added to GitGenius on September 10th, 2026
Created on March 10th, 2022
Open Issues & Pull Requests: 71 (+0)
GitHub issues: Enabled
Number of forks: 548
Total Stargazers: 6,488 (+0)
Total Subscribers: 39 (+0)

Repository Insights (GitGenius)

Most active contributors

Sign in to see contributor activity.

Related repositories by overlapping contributors

No overlapping-contributor repos identified yet.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Issue API getrepoissuespagesummary failed: 429 Rate limit exceeded. Please try again later.

Detailed Description

curl_cffi is a Python HTTP client that impersonates browser TLS, JA3, and HTTP/2 fingerprints through a binding to curl-impersonate via cffi.

Many websites block requests from non-browser clients by analyzing TLS and HTTP fingerprints. curl_cffi solves this by wrapping curl-impersonate, allowing Python code to mimic the exact cryptographic signatures and protocol behaviors of real browsers. Unlike pure Python HTTP libraries such as httpx or requests, which cannot modify these low-level fingerprints, curl_cffi operates at the native level to match browser identities, making it effective against fingerprint-based blocking.

Developers facing blocks from sites using fingerprint detection should consider curl_cffi. It suits web scraping and automation projects where standard libraries fail due to bot protection. The tool maintains support for evolving browser fingerprints, including recent algorithm and extension changes. Projects requiring JavaScript execution should explore related tools in the same ecosystem, while those needing to solve JavaScript challenges have separate options available.

The project receives active maintenance with updates tracking changes in browser fingerprints across versions. Development includes regular additions of support for new cryptographic algorithms and protocol extensions as browsers evolve. The tool maintains backward compatibility while requiring a minimum Python version, indicating deliberate choices about maintenance scope.