首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >狂揽6.6K星 !!! 一抓就被拦?这个特制 curl 穿上 Chrome 的"皮",反爬彻底认不出,太6了

狂揽6.6K星 !!! 一抓就被拦?这个特制 curl 穿上 Chrome 的"皮",反爬彻底认不出,太6了

作者头像
豆芽菜小萌
发布2026-09-08 20:20:42
发布2026-09-08 20:20:42
570
举报

你是不是也遇到过这种事——用 requests 或者 curl 写个爬虫,刚跑两下,直接给你弹个 403;换个网站更狠,Cloudflare 五秒盾 + 验证码 直接把你挡在门外。

你代码没毛病,IP 也没封,为啥就认定你是机器人?答案可能让你意外:不是你抓错了,是「握手」的时候你就露馅了。

把 curl 伪装成真浏览器

反爬指纹系统,根本分不清你是人还是机器

一句话:curl-impersonate = 一个「换皮」过的 curl,TLS 和 HTTP/2 握手跟真实 Chrome / Firefox 完全一致,让网站以为你就是个正在用浏览器的真人。

01

PART

网站到底怎么认出你是机器人?

HOW SITES DETECT BOTS

关键在「握手」,不在「内容」。

TLS 握手(Client Hello)

你和网站建立加密连接时,发的第一个包里带着一堆 TLS 参数(加密套件、扩展、曲线……)。浏览器和 curl 发出来的这堆参数长得完全不一样,网站一眼就能认出「这不是真浏览器」。

HTTP/2 握手

如果网站用 HTTP/2,连接时还会交换一堆设置项。普通 HTTP 客户端用的设置,跟真实浏览器也对不上。

TLS 指纹 / HTTP/2 指纹

这些特征合起来叫 TLS 指纹 / HTTP/2 指纹。现在很多站点就靠它来识别机器人——你内容爬得再像,握手不对,照样被拦。

你内容爬得再像,握手不对,照样被拦

指纹识别,正在成为反爬的第一道防线

02

PART

curl-impersonate 怎么破的?

HOW IT WORKS

作者把 curl 大改了一遍:

1

换底层 TLS 库:Firefox 版用 NSS(火狐同款),Chrome 版用 BoringSSL(谷歌同款),从根上贴近浏览器的握手行为。

2

对齐每一个参数:加密套件、曲线、扩展、HTTP/2 设置,甚至一些非默认命令行参数(--ciphers、--curves、特定请求头),全部按真实浏览器调。

3

结果:网络层面和真浏览器一模一样,从流量上看它就是个 Chrome / Firefox,反爬指纹系统直接被绕过去。

从流量上看,它就是个 Chrome / Firefox

03

PART

三步上手,会 curl 就会用

GET STARTED IN 3 STEPS

STEP 01

装好(选一个浏览器版本)

macOS 用 Homebrew 一行装好;Docker 官方镜像一行拉起,开箱即用;也能按 README 编译源码,支持 Chrome / Firefox / Edge / Safari 多版本。

bash

brew install curl-impersonate

STEP 02

像普通 curl 一样用,只是换个名字

比如伪装成 Chrome 99:下面这行一跑,握手的指纹就变成 Chrome 99 了。你原来怎么写 curl,现在就怎么写。

bash

curl_chrome99 https://www.example.com

STEP 03

在代码里当库用(更爽)

它不只是命令行,还能当 libcurl 的替代品直接嵌进你的程序。具体写法看下一章。

04

PART

在代码里当库用(更爽)

USE IT AS A LIBRARY

它不只是命令行,还能当 libcurl 的替代品直接嵌进你的程序:

Python:用 curl_cffi(基于 curl-impersonate 的封装)

python

from curl_cffi import requests

r = requests.get("https://www.example.com", impersonate="chrome")

一行 impersonate 参数直接指定要伪装成哪个浏览器,干净利落。

其他语言同样能 impersonate

Node 里同样能 impersonate;还有 Go、Rust 等多语言封装,主流爬虫框架也能直接接。

05

PART

能伪装哪些浏览器?

SUPPORTED BROWSERS

Chrome、Edge、Safari、Firefox 全家桶都行,还细分不同大版本(比如 chrome99 / chrome100 / chrome120),跟着真实浏览器的版本走,保持指纹不过时。

Chrome 全系(chrome99 / 100 / 120…)

Edge

Safari

Firefox 全家桶

06

PART

爬虫党的隐藏搭配

PRO TIPS

前面的 Scrapling 自带 StealthyFetcher、Firecrawl 内置代理——把它们和 curl-impersonate 的思路结合,过 Cloudflare 这类硬骨头会顺很多。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 装好(选一个浏览器版本)
  • 像普通 curl 一样用,只是换个名字
  • 在代码里当库用(更爽)
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档