一个 Java 库,可直接把 curl 命令当作普通 Java 方法调用,无需手写 HTTP 客户端代码。
lexiforest/curl_cffi
基于 curl 的 Python HTTP 客户端,可模拟浏览器的 TLS、JA3 和 HTTP/2 指纹。
- Star
- 6,769
- Fork
- 570
- 未关闭 Issue
- 46
- 最近提交
- 前天
这是什么?
curl_cffi 是基于 cffi 封装 curl-impersonate 分支的 Python 绑定。它提供类似 requests 的同步与异步 HTTP 接口,但与 requests、httpx 不同,它可以模拟浏览器的 TLS、JA3 和 HTTP/2 指纹,使请求看起来像来自真实浏览器。
库同时提供带 Session 和 Cookie 管理的高层接口,以及底层 curl API。通过 impersonate="chrome" 等参数选择浏览器目标,对于非浏览器场景也可以传入自定义的 ja3 和 akamai 指纹。项目还支持 HTTP/3、SOCKS 和 HTTP 代理以及 WebSocket,并自带 curl-cffi 命令行工具。
项目为 Linux、macOS 和 Windows 提供预编译安装包,无需本地编译。指纹预设可通过 update 命令单独更新,无需升级整个包。
核心功能
- 01模拟浏览器的 TLS/JA3 和 HTTP/2 指纹,也支持自定义指纹。
- 02提供类似 requests 的接口,支持 Session,并包含同步与异步客户端。
- 03支持 HTTP/2 和 HTTP/3,以及 HTTP 和 SOCKS 代理。
- 04提供 WebSocket 客户端,握手过程可使用浏览器指纹。
- 05附带 curl-cffi 命令行工具,可带指纹访问 URL。
适用场景
- 访问会基于 TLS 指纹拦截 requests 或 httpx 请求的网站。
- 构建需要异步并发和代理轮换的网页爬虫。
- 测试服务端对特定浏览器指纹的响应。
- 让 Scrapy 或基于 requests 的代码具备类似浏览器的 TLS 行为。
快速上手
- 1
从 PyPI 安装该包
pip install curl_cffi --upgrade - 2
发起一个模拟 Chrome 的请求
python -c "import curl_cffi; r = curl_cffi.get('https://tls.browserleaks.com/json', impersonate='chrome'); print(r.json())"
使用前须知
- 部分高级功能(如 http/3 指纹)需要较新的版本。
- 更多指纹和商业支持需通过付费方案获取。
标签
常见问题
- curl_cffi 是什么?
- 基于 curl 的 Python HTTP 客户端,可模拟浏览器的 TLS、JA3 和 HTTP/2 指纹。 curl_cffi 是基于 cffi 封装 curl-impersonate 分支的 Python 绑定。它提供类似 requests 的同步与异步 HTTP 接口,但与 requests、httpx 不同,它可以模拟浏览器的 TLS、JA3 和 HTTP/2 指纹,使请求看起来像来自真实浏览器。
- curl_cffi 可以免费使用吗?用的什么许可证?
- curl_cffi 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- curl_cffi 还在维护吗?
- 活跃维护中。curl_cffi 最近一次提交是在 2026年10月23日。
- curl_cffi 适合用来做什么?
- 访问会基于 TLS 指纹拦截 requests 或 httpx 请求的网站。 构建需要异步并发和代理轮换的网页爬虫。 测试服务端对特定浏览器指纹的响应。 让 Scrapy 或基于 requests 的代码具备类似浏览器的 TLS 行为。
- curl_cffi 怎么安装和运行?
- 从 PyPI 安装该包: pip install curl_cffi --upgrade 发起一个模拟 Chrome 的请求: python -c "import curl_cffi; r = curl_cffi.get('https://tls.browserleaks.com/json', impersonate='chrome'); print(r.json())"
- 在哪里获取 curl_cffi?
- 源代码和安装说明在 GitHub 上:https://github.com/lexiforest/curl_cffi
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Hurl 是一个命令行工具,用纯文本格式定义并运行、测试 HTTP 请求。
基于 Go 标准库 net/http 构建的高性能、极简 Web 框架。
命令行 WebSocket 客户端与服务端工具,可用于 ws:// 和 wss:// 连接,类似 netcat、curl 和 socat。
一款支持 TLS 的交互式拦截 HTTP 代理,提供终端、命令行和 Web 三种界面,用于查看 HTTP/1、HTTP/2 和 WebSocket 流量。
开源 API 开发工具,支持 REST、GraphQL、WebSocket 等协议,提供网页、桌面和命令行版本。