httpx替代品,防爬更顺手

模拟浏览器 TLS / JA3 / JA4 / HTTP/2 指纹,而不是普通的 requests/httpx,目前比较值得看的主要有下面这些。

1. tls-client

这是我认为和 curl_cffi 最像、也最值得对比的一个。

它基于 Go 的 bogdanfinn/tls-client,底层使用 uTLS,提供 Chrome、Firefox、Safari、Android 等浏览器指纹配置,可以控制 TLS 指纹、HTTP/2 行为、Cookie、Proxy 等。(GitHub)

Python 示例:

python 复制代码
import tls_client

session = tls_client.Session(
    client_identifier="chrome_120",
    random_tls_extension_order=True,
)

resp = session.get("https://example.com")
print(resp.status_code)

curl_cffi 最大区别:

text 复制代码
curl_cffi
    Python
      ↓
    libcurl
      ↓
    curl-impersonate
      ↓
    BoringSSL / nghttp2

tls-client
    Python wrapper
      ↓
    Go
      ↓
    uTLS
      ↓
    自定义 TLS / HTTP2

实际项目里,两者可以互相作为 fallback :某个站点对其中一个指纹实现比较敏感时,换另一个有时就能明显改善。2026 年的一次对比测试也将 curl_cffitls-clientprimp 等放在一起测试了真实 Chrome 的 JA3/JA4 一致性。(Serpent API)


2. curl-impersonate ------ curl_cffi 的底层本体

严格来说,它不是"另一个类似产品",而是 curl_cffi 的底层基础之一。

text 复制代码
curl-impersonate
      ↓
   libcurl
      ↓
Python curl_cffi

它本身就是修改过的 curl,可以直接模拟 Chrome、Edge、Safari、Firefox 的 TLS 和 HTTP handshake。最新 fork 还加入了 ECH、ZSTD、Kyber/ML-KEM、HTTP/3/QUIC fingerprint 等能力。(GitHub)

所以如果你不需要 Python API,直接用:

bash 复制代码
curl_chrome ...
curl_firefox ...

这种方式也可以。


3. utls ------ Go 底层控制能力最强

如果你本身愿意用 Go,uTLS 是非常重要的一个选择。

它不是像 curl_cffi 那样开箱即用的 HTTP Client,而是 TLS 层的可编程实现

可以理解为:

text 复制代码
curl_cffi  = 成品
tls-client = 成品
uTLS       = 底层发动机

它允许控制 ClientHello、Cipher Suites、Extensions、GREASE 等浏览器行为。(mobileproxies.org)

如果你需要自己研究:

text 复制代码
JA3
JA4
ClientHello
Extension Order
GREASE
HTTP/2 SETTINGS
ALPN

那么 uTLS 的研究价值非常高。


4. azuretls-client ------ Go 方向值得研究

这是一个比较新的 Go HTTP Client,定位就是:

spoof TLS/JA3、HTTP/2、HTTP/3 fingerprint

GitHub 项目目前仍然活跃。(GitHub)

tls-client 相比,它更偏"现代 TLS/HTTP3 指纹控制"。

适合这种场景:

text 复制代码
Python
  ↓
微服务
  ↓
Go HTTP fingerprint service
  ↓
目标站点

尤其是你大量并发请求的时候,Go 版本可能比 Python wrapper 更适合做底层服务。


5. primp ------ Python 新派方案

primp 是近几年出现的一个 Python HTTP Client,也经常被拿来和:

text 复制代码
requests
httpx
curl_cffi
tls-client

比较。

它同样关注浏览器 TLS fingerprint,而不是单纯 HTTP API。2026 年的实测比较里也把它作为 TLS impersonation client 参与测试。(Serpent API)

它值得拿来做一个 第三候选 / fallback


6. scrapy-impersonate ------ 如果你用 Scrapy

这个不是底层 HTTP client,而是 Scrapy 的 Downloader Handler。

text 复制代码
Scrapy
   ↓
scrapy-impersonate
   ↓
curl_cffi / curl-impersonate

它支持 Chrome、Firefox、Safari、iOS Safari 等指纹,并且支持浏览器随机轮换。(GitHub)

如果你已经是 Scrapy 架构,这比自己改 Downloader 简单很多。


7. Node.js 生态:node-curl-impersonate

如果不限定 Python,这个其实非常接近 curl_cffi

项目本身就是:

Node.js equivalent of Python curl_cffi

使用方式接近浏览器 Fetch:

javascript 复制代码
import { fetch } from "node-curl-impersonate";

const res = await fetch("https://example.com", {
    impersonate: "chrome146"
});

它直接基于 libcurl-impersonate,支持 Chrome / Firefox / Safari / Edge / Tor 等浏览器预设,并支持 HTTP/2、HTTP/3、代理和自定义 JA3。(GitHub)

所以:

text 复制代码
Python  → curl_cffi
Node    → node-curl-impersonate
Go      → tls-client / azuretls-client

这个对应关系比较清晰。


如果按照"和 curl_cffi 的相似度"排序

项目 语言 TLS指纹 JA3/JA4 HTTP/2 HTTP/3 浏览器模拟 推荐度
curl_cffi Python ⭐⭐⭐⭐⭐
tls-client Go/Python 部分 ⭐⭐⭐⭐⭐
curl-impersonate C/C++/CLI ⭐⭐⭐⭐⭐
primp Python --- ⭐⭐⭐⭐
uTLS Go 可控 --- 手工 ⭐⭐⭐⭐
azuretls-client Go ⭐⭐⭐⭐
node-curl-impersonate Node ⭐⭐⭐⭐
scrapy-impersonate Python --- ⭐⭐⭐⭐
requests Python
httpx Python ❌* ❌* ⭐⭐
Playwright JS/Python ✅真实浏览器 ⭐⭐⭐⭐⭐
  • httpx 可以做 HTTP/2 等控制,但它的定位不是浏览器 TLS impersonation。(GitHub)

但有一个很重要的区别

如果你的目的实际上是:

"让请求看起来像真实 Chrome,从而降低被反爬系统识别的概率"

那么不要只比较 curl_cffi 和其它 HTTP Client。

因为现代反爬通常不是只看:

text 复制代码
JA3

而是综合:

text 复制代码
            TLS
             │
       ┌─────┴─────┐
       │           │
      JA3         JA4
       │           │
       └─────┬─────┘
             │
        HTTP/2 Fingerprint
             │
       Header Order
             │
       Cookie Behavior
             │
        IP Reputation
             │
        JS Fingerprint
             │
       Browser APIs
             │
        行为模型

curl_cffi 自己的文档也明确提醒:仅仅正确模拟 JA3 / Akamai 并不意味着不会被检测 ,还有额外 TLS 字段以及其它行为特征。(curl-cffi.readthedocs.io)

因此,如果你的目标是做真正接近浏览器的请求栈,我会把方案分成三档:

text 复制代码
第一档:纯 HTTP
curl_cffi
tls-client
primp
azuretls-client

第二档:浏览器 HTTP + TLS
curl-impersonate
uTLS

第三档:真正 Browser Stack
Playwright
Chrome DevTools Protocol
Patchright

其中:

Python 项目 → 首选 curl_cffi + tls-client 双栈。

例如:

python 复制代码
try:
    # curl_cffi
    ...
except Exception:
    # tls-client
    ...

甚至可以进一步做成:

text 复制代码
Request Engine
│
├── curl_cffi
│   ├── chrome
│   ├── firefox
│   └── safari
│
├── tls-client
│   ├── chrome
│   ├── firefox
│   └── safari
│
├── proxy
│
└── Playwright fallback

这样比单独死磕某一个库更实用。

另外,curl_cffi 目前的 impersonation profile 已经覆盖 Chrome、Firefox、Safari、Edge 等多种浏览器版本,并支持自定义 JA3/Akamai/extra fingerprint;商业版 impersonate.pro 还提供更频繁更新的 profile。(curl-cffi.readthedocs.io)

相关推荐
IPdodo_1 天前
2026年爬虫代理 IP 选择指南:从可用率、延迟到成本验收
网络协议·tcp/ip·scrapy·http·https·beautifulsoup·httpx
夏天测1 个月前
Python 网络编程入门:从 Socket 底层到 HTTP 并发实战
python·socket·httpx·requests·tcp udp·python网络编程·爬虫基础
暮暮祈安1 个月前
Celery 新手入门指南
java·数据库·python·flask·httpx
能有时光2 个月前
从卡顿到丝滑:FastAPI 调用外部 API 的正确姿势(httpx 实战)
fastapi·httpx
曲幽2 个月前
从卡顿到丝滑:FastAPI 调用外部 API 的正确姿势(httpx 实战)
python·fastapi·web·async·httpx·client·await·requests·aiohttp
搬砖柯2 个月前
系列12-接口压测怎么做成平台能力?自研 httpx 引擎、分布式 Worker 与 Locust 选型对照
分布式·测试工具·性能优化·开源·自动化·httpx
matrixmind83 个月前
HTTPX:Python 下一代 HTTP 客户端
python·其他·http·httpx
showgea3 个月前
Python httpx封装和使用
python·httpx
SilentSamsara3 个月前
HTTP 客户端实战:httpx/重试/限速/连接池/中间件设计
开发语言·网络·python·http·青少年编程·中间件·httpx