`curl-impersonate` 是一个特殊的 `curl` 版本,能够进行模拟主流浏览器(Chrome、Edge、Safari、Firefox)的 TLS 和 HTTP 握手,从而绕过指纹识别技术。它通过修改 `curl` 以使用浏览器特定的 TLS 库(Firefox 使用 NSS,Chrome 使用 BoringSSL),配置 TLS 扩展以及调整 HTTP/2 设置来实现这一点。
它可以用作命令行工具或库,提供 `curl_easy_impersonate` 函数来设置类似浏览器的选项。每个浏览器都存在包装脚本,提供预配置的标头和标志,但这些都是可以自定义的。预编译的二进制文件和 Docker 镜像可用,但需要 `nss` 和 `ca-certificates` 等依赖项。
该工具支持模拟特定版本的浏览器,其配置存储在 `browsers.json` 中。其主要用例是允许以编程方式访问那些通过检测 TLS 和 HTTP/2 握手差异来积极阻止非浏览器客户端的网站。