surf

让 Go 请求伪装成真实浏览器,绕过反爬检测

surf 是一个用 Go 编写的高级 HTTP 客户端,核心目标是让程序化请求在网络层看起来像真实浏览器。它支持模拟 Chrome 和 Firefox 的浏览器指纹,包括 JA3/JA4 TLS 指纹仿真、HTTP/3 与 QUIC 指纹、请求头顺序与默认值等,从而绕过常见反爬与风控检测。相比标准 net/http,surf 把浏览器行为抽象成可配置的客户端,开发者只需少量代码即可发起带浏览器特征的请求,适合网页抓取、自动化测试、API 探测等场景。项目还提供代理、Cookie、重定向、超时等常规能力,并针对 Cloudflare 等防护做了适配。作为纯 Go 实现,它便于集成到现有 Go 服务中,无需依赖外部浏览器进程,性能和部署成本更可控。

开源 free 自动化工作流
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1836
维护状态 较活跃
是否开源 是
定价模式 free

项目预览

项目数据

分类自动化工作流
开发团队enetx
所属国家
官网地址https://enetx.surf
定价模式free
价格说明开源 Go 库,免费使用
访问状态
是否开源是
开源协议MIT
主要语言Go
技术栈/模型
GitHub 星标★ 1836
30天Star增速
HF 下载量
上线时间2025-08-30 00:00:00
代码更新—
仓库体积—
本站数据更新—
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-10-08
浏览次数0

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

技术标签

使用教程

—

难度:入门 约 10 分钟 部署方式:库/依赖 6 步

环境要求

  • Go 1.27 或更高版本(README 明确要求)
  • 可访问 GitHub 与 Go module 代理(能执行 go get)
  • 具备基础 Go 项目结构与编码知识
  • 如需 HTTP/3/QUIC,网络环境需允许 UDP 出站

安装与启动步骤

  1. 1确认 Go 版本

    先在终端查看当前 Go 版本,低于 1.27 需先升级,否则无法安装使用 surf。

    go version
  2. 2安装 surf 依赖

    在已有的 Go 模块目录中执行 go get 拉取库,会自动写入 go.mod 依赖。

    go get -u github.com/enetx/surf
  3. 3创建带指纹客户端

    用 Builder 链式构造客户端,HTTP3Settings().Grease() 开启 TLS 指纹混淆,再 Build 并 Unwrap 取回客户端。

    client := surf.NewClient().
        Builder().
        HTTP3Settings().Grease().Set().
        Build().
        Unwrap()
  4. 4调整 HTTP/2 参数

    如需 HTTP/2 指纹更像浏览器,可设置头表大小、窗口大小、最大头列表等参数后再 Build。

    client := surf.NewClient().
        Builder().
        HTTP2Settings().
        HeaderTableSize(65536).
        EnablePush(0).
        InitialWindowSize(6291456).
        MaxHeaderListSize(262144).
        ConnectionFlow(15663105).
        Set().
        Build().
        Unwrap()
  5. 5配置代理

    通过 Proxy 传入 HTTP/HTTPS/SOCKS 代理地址;README 示例为单代理写法,替换成自己的地址即可。

    client := surf.NewClient().
        Builder().
        Proxy("http://proxy.example.com:8080").
        Build().
        Unwrap()
  6. 6配置自动重试

    Retry 第一个参数为最大重试次数,第二个参数为每次重试的等待时间,按需调整。

    client := surf.NewClient().
        Builder().
        Retry(3, 2*time.Second).
        Build().
        Unwrap()

关键配置

配置项必填说明示例
HTTP3Settings().Grease()否开启 HTTP/3 指纹混淆,降低被识别概率HTTP3Settings().Grease().Set()
HTTP2Settings().HeaderTableSize()否设置 HTTP/2 头表大小,模拟浏览器指纹HeaderTableSize(65536)
HTTP2Settings().InitialWindowSize()否设置 HTTP/2 初始窗口大小InitialWindowSize(6291456)
Proxy()否指定 HTTP/HTTPS/SOCKS4/SOCKS5 代理地址http://proxy.example.com:8080
Retry()否设置最大重试次数与重试间隔时间Retry(3, 2*time.Second)

如何确认成功

执行 go build ./... 编译无报错,程序能成功构造出 surf 客户端实例。

常见问题

Q:Go 版本低于 1.27 能装吗?

A:README 要求 Go 1.27+,建议先升级 Go 工具链再执行 go get,否则可能编译失败或依赖无法解析。

Q:如何模拟 Chrome 或 Firefox 指纹?

A:surf 内置浏览器指纹模拟能力,支持 Chrome v152 与 Firefox v148,并可选择 Windows、macOS、Linux、Android、iOS 平台,具体调用方式请查阅仓库更多示例。

Q:代码片段不完整怎么用?

A:README 只给出 Builder 链式片段,你需要把它放进自己的 Go 模块和函数中,并自行补上后续发起请求的逻辑。

Q:能否自定义 JA3/JA4?

A:可以,通过 HelloID 与 HelloSpec 配置精确的 TLS 指纹,实现更细粒度的仿真与隐私控制。

Q:支持 HTTP/3 代理吗?

A:支持,代理配置包含 HTTP、HTTPS、SOCKS4、SOCKS5,并为 HTTP/3 提供 UDP 支持。

注意事项

  • README 未提供完整可运行的 main 示例,需自行补全请求发送与结果处理代码。
  • 不要随意使用示例里的 proxy.example.com,请替换为自己的真实代理地址。
  • HTTP/3 over QUIC 依赖 UDP 出站,受限网络中可能不可用。
  • 引入后请保持 Go 版本与 go.mod 中的依赖一致,避免版本冲突。

核心亮点

  • 支持 JA3/JA4 TLS 指纹与 HTTP/3 QUIC 指纹仿真,覆盖主流浏览器特征
  • 纯 Go 实现,无需启动 Chrome/Firefox 进程,部署轻量、性能好
  • 内置 Chrome/Firefox 请求头顺序与默认值,开箱即用适配常见反爬

不足之处

  • 浏览器版本更新快,指纹库需持续跟进,否则易被识别
  • 文档与示例相对有限,复杂场景需阅读源码

适用场景

  • Go 爬虫项目需要绕过 Cloudflare 等反爬检测
  • 自动化测试中模拟真实浏览器网络行为
  • API 采集与风控对抗场景下的请求伪装

替代项目

curl-impersonate、cycletls

项目介绍

surf 是自动化工作流领域的开源项目,由 enetx 开发,2025 年首次发布。

在全站 13,916 个收录项目中,它的 GitHub 星标数(1,836)位列前 30%,在自动化工作流分类中处于中上游。

项目保持着较活跃的维护节奏,最近一次代码更新于 2026-09-10。开源 Go 库,免费使用。

它主要面向的使用场景是:Go爬虫项目需要绕过Cloudflare等反爬检测。同类可对比的替代方案包括 curl-impersonate、cycletls。

上一篇:doma

下一篇:pilo

同类项目推荐

n8n 开源

拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。

Fair-code workflow automation platform with native AI capabilities. Combine visual b···

★ 206818 2026-08-10
EasyCLIProxyAPI 开源

图形界面一键配好 AI 代理,省去手写配置文件

A desktop GUI for CLIProxyAPI and a tool for automatically configuring popular AI ag···

★ 2726 2026-09-22
feishu-docx 开源

让 AI 代理轻松读写飞书文档,双向转换 Markdown

Feishu/Lark Docs、Sheet、Bitable <-> Markdown | AI Agent-friendly knowledge base exp···

★ 267 2026-08-09
puppeteer 开源

用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。

JavaScript API for Chrome and Firefox

★ 95668 2026-08-10