
这份源码是一个 Python 的 HTTP 客户端库,核心亮点是能模拟主流浏览器的 TLS/JA3 和 HTTP/2 指纹,底层基于 curl-impersonate,对外提供和 requests 几乎一致的调用方式。
源码简介
curl_cffi 是 curl-impersonate 的 Python 绑定(通过 cffi 调用),目标是做出一个能”伪装”成真实浏览器的 HTTP 客户端。它既提供贴近 requests 风格的高层 API(get/post/Session),也有基于 libcurl 的底层 curl API,并附带 asyncio 异步支持、WebSocket 和独立的 curl-cffi 命令行工具。项目 MIT 协议开源,预编译二进制开箱即用,支持 Linux、macOS、Windows。
适用场景
- Python 爬虫与采集场景中规避 TLS/JA3 指纹识别
- 需要 HTTP/2、HTTP/3 或 WebSocket 的异步请求客户端
- 学习 cffi 调用原生库、指纹模拟与请求库架构实现
技术栈与运行环境
Python 3.10+,仅两个运行时依赖 cffi>=2.0.0 与 certifi(pyproject.toml 标注)。
底层依赖 curl-impersonate 提供的 libcurl 预编译动态库(Windows 下打包 libcurl.dll)。
提供 cli / extra / dev 等可选依赖组(rich 用于彩色命令行、readability-lxml 等用于内容提取)。
支持 CPython 3.10–3.14 及 free-threading。安装:pip install curl_cffi。
功能亮点
- 浏览器指纹模拟:支持 Chrome / Safari / Firefox 等预设的 TLS/JA3 与 HTTP/2 指纹(impersonate 参数),也可自定义 ja3 / akamai / extra_fp
- 双 API 设计:高层 requests 风格(curl_cffi.get / Session)+ 底层 libcurl 封装(curl.py),迁移成本低
- 异步与并发:AsyncSession 支持 asyncio,可配合代理轮换做高并发请求
- 协议覆盖全:HTTP/2、HTTP/3(v0.15 起含 UDP socks5 代理与指纹)、WebSocket(同步 + 异步 ws_connect)
- 内置命令行工具:curl-cffi CLI(get / list / update 等子命令),可用于调试 URL 与指纹
- 配套模块完善:requests/ 下含 cookies / headers / cache / impersonate / session / websockets 等,指纹库 fingerprints.py 含 37 个以上预设
安装与部署提示
本仓库为 Python 库源码,安装即从源码构建:先 make preprocess 生成预处理文件,再 pip install .(需 cffi 与 curl-impersonate 动态库)。
普通用户直接 pip install curl_cffi 拉取预编译 wheel 即可,无需本地编译。
CLI 需额外装 curl_cffi[cli](rich)才有彩色输出。文档在 docs/(Sphinx + readthedocs),示例在 examples/。
截图与演示说明
– examples/ 目录:async_session.py、websocket 示例等可直接运行的代码片段
– docs/ 文档:quick_start.rst、impersonate/ 指纹说明、websockets.rst、cli/ 命令行指南
– benchmark/ 目录:benchmark.py、server.py 与压测脚本、single_worker.csv / multiple_workers.csv 对比数据
– curl-cffi CLI:终端运行 curl-cffi get tls.browserleaks.com/json --impersonate chrome 观察返回的指纹哈希
常见问题
- 和 requests / httpx 有什么区别? curl_cffi 的 API 刻意贴近 requests,但多了浏览器指纹模拟与 HTTP/2、HTTP/3、WebSocket 支持,适合被反爬机制拦截的场景;requests 不支持指纹与 HTTP/2,httpx 支持 HTTP/2 但不做指纹伪装。
- 需要自己编译 libcurl 吗? 不需要。PyPI 上的预编译 wheel 已内置 libcurl-impersonate 动态库,Windows 包还带 libcurl.dll,直接 pip 安装即可使用。
安全风险提示
特别提示:本源码未检测安全风险文件,下载后请务必进行安全审计,删除恶意代码后再部署使用!
下载说明
本源码包为 GitHub 公开仓库快照(MIT 协议),已打包为无密码 zip,含完整提交历史(.git)。
项目开源地址:https://github.com/lexiforest/curl_cffi
下载后建议优先 pip install curl_cffi 使用预编译包;如需研读源码与构建,参照 README 的 make preprocess + pip install 流程。
