AginxBrowser 是一个从底层为 AI 智能体构建的浏览器,而非将人类浏览器简单改造为自动化工具。它以单个 Rust 二进制文件交付,内置 V8 引擎,无需 Chromium、Puppeteer、Playwright 或 Docker,通过 HTTP API 作为完整接口,智能体可直接接入使用。
用途
AginxBrowser 面向智能体的实时检索与交互需求:智能体带着问题访问页面、读取内容、执行操作并保留状态。它明确不是爬虫工具,没有爬取端点或链接递归跟随,每次页面加载都由智能体主动请求触发。
主要能力
- 分层渲染:静态页面通过普通 HTTP 获取(约 100ms);仅在需要 JS 渲染时启动 V8(约 1-2 秒)。每个响应通过
tier字段报告实际使用的路径。 - 多引擎元搜索:覆盖通用网页(百度、必应、搜狗、微信、DuckDuckGo、Wikipedia、Hacker News)、新闻、代码(Stack Overflow、GitHub、MDN)、包(npm、PyPI、RubyGems)、学术(arXiv、OpenAlex)、AI 模型(Hugging Face)等 20 个引擎、7 个类别,并发查询、合并去重。
- 交互式会话:支持持久浏览器会话,提供
state/click/input/scroll/eval等索引化交互;session_export可将操作导出为可运行的 curl 重放脚本或 JSON 流程文档;session_viewport模拟设备视口,session_wait等待选择器或谓词,session_screenshot渲染实时状态,session_console回放控制台,session_storage导出/恢复 cookies 与 localStorage。 - TLS 指纹伪装:stealth 模式通过 BoringSSL 模拟 Chrome145 / Firefox133 / Safari / Edge 的完整 TLS 握手,可按请求切换;自动等待 Cloudflare Turnstile 挑战的
cf_clearance。 - 状态化会话:登录状态可注入和导出(
session_create(cookies=...)↔session_cookies),支持分页和多步流程;persistent: true可跨空闲驱逐和服务器重启保持同一会话 ID 登录状态。 - 截图渲染:
/screenshot端点(需--features screenshot)使用 diting 渲染引擎将 JS 渲染后的 DOM 绘制为 PNG,纯 CPU、无 Chromium,为智能体提供视觉输入。 - 时间线视频:
/video将页面动画时间线渲染为 MP4,页面脚本在window.__timelines注册 GSAP 风格时间线,逐帧定位并绘制视口,帧数据通过 ffmpeg 输出 H.264/yuv420p,确定性可复现。 - 页面集导出:
/pdf将渲染页面切分为页并打包,支持打印模式(默认 A4 @96dpi)和幻灯片模式;可导出为基于图像的 PDF、PPTX、DOCX,均为手写实现、字节确定性、零新增依赖。 - 本地缓存:每次抓取/搜索存入 SQLite(FTS5)于
~/.aginxbrowser/cache.db,TTL 内重新抓取直接返回已读内容,支持 CJK 子串匹配、[§ heading]分节感知片段、按 URL 内容哈希检测漂移、按会话作用域隔离。 - 验证码处理:类型检测、自动等待 Cloudflare 挑战,可选 2captcha 集成。
- JS 数据提取:
js_extract从 SPA 中提取window.__INITIAL_STATE__等结构化数据。 - 文档生成:
POST /render_markdown将 markdown 转为确定性、自包含的 HTML 制品,支持 archify 代码块生成内联 SVG 图表,主题和预设可选,quality: "showcase"作为交付门禁。 - 播放链接嗅探:
session_network(filter=media)提取页面播放器实际请求的 m3u8/mp4/dash URL;GET /session/{id}/har导出 HAR 1.2 流量。 - 文件下载:流式写入磁盘、SHA-256 完整性校验、断点续传。
- Firecrawl 兼容:
/v1/scrape端点,现有 Firecrawl 客户端只需更改 base URL 即可迁移。 - DNS 重绑定防护:内置 SSRF 防护与解析后 IP 验证。
使用方式
AginxBrowser 以单个 Rust 二进制运行,所有能力通过 HTTP 端点提供,无需 SDK。主要端点包括 /fetch、/search、/screenshot、/video、/pdf、/download、/render_markdown、/v1/scrape、/flow/run、/doctor 以及会话相关端点。完整请求/响应字段见 docs/API.md。
安装要求:Rust 1.78+;V8 静态库在首次构建时自动下载。stealth 功能额外需要 go、cmake 和 C++ 编译器。screenshot 功能内置 CJK 字体子集(GB2312 + 常用符号),无需系统字体即可正确渲染中文。若网络无法访问 rusty_v8 CDN,可预先将对应版本的 librusty_v8.a.gz 放入 ~/.cache/rusty_v8 并解压,构建脚本将跳过下载。
可通过 skills.sh 安装技能触发面,或直接将安装块交给 AI 智能体自行设置。
适用场景
- 在管理控制台(AWS / App Store Connect / Google Play)中逐层操作,仅在需要授权时返回。
- 登录后的批量操作:填充购物车、查询订单历史、访问仅登录可见的页面,注入 cookies 操作后导出复用。
- 穿越反机器人墙:Cloudflare 防护、Turnstile 挑战、TLS 指纹检查。
- 中文互联网:百度/搜狗/微信等 5 引擎元搜索,正确渲染中文页面。
- 即时脚本:智能体读取页面、编写 JS 并执行,生成高亮对比表、重排内容、按隐藏参数过滤商品。
- 多模态视觉:截图作为视觉输入,用于选座、识别布局、验证渲染等判断流程。
限制
- 不是爬虫工具:无爬取端点、无链接递归跟随;内置预算为每域名 20 页/分钟、每交互会话 200 页,可通过环境变量调整(0 表示禁用)。
- robots.txt 默认不强制遵守,需设置
AGINXBROWSER_HONOR_ROBOTS=1启用 RFC 9309 检查。 - 托管实例(browser.aginx.net)运行更严格的预算,所有用户共享一个出口 IP。
- 视频渲染需要 ffmpeg 在 PATH 中。
- 截图功能需在构建时启用
--features screenshot。 - 部分功能(如 stealth、screenshot)有额外构建依赖。
定位
在计算机使用栈中,AginxBrowser 属于引擎层浏览器:GUI 层栈驱动整个机器(截图输入、鼠标键盘事件输出、每会话一个 VM 或容器),而引擎层浏览器跳过桌面,页面本身就是机器。AginxBrowser 是引擎层实现,Apache-2.0 开源,单二进制自托管,无云锁定。