超过 70% 的现代网站依赖 JavaScript 渲染内容。标准 HTTP request 只能获取初始 HTML 外壳。实际数据在 JavaScript 执行后才会加载,这就是传统抓取工具返回空页面的原因。
FourA 浏览器任务通过为每个 request 运行真实的 headless Chrome 实例来解决此问题。
工作原理
当你发送带有 type: "browser" 的任务时,FourA 会:
- 启动 headless Chrome 浏览器
- 访问目标 URL
- 等待 JavaScript 执行并等待 DOM 稳定
- (可选)等待特定 CSS selector 出现
- 返回完整渲染的 HTML
整个过程都在 FourA 的基础设施上运行。你无需安装浏览器、配置 Puppeteer 或管理 Chrome 更新,即可直接获取干净的 HTML。
何时使用浏览器任务
在以下情况下使用浏览器任务:
- 单页面应用(React、Vue、Angular)
- 包含懒加载内容的页面(无限滚动、“加载更多”按钮)
- 需要 cookie 授权或初始 JS 设置的站点
- 位于客户端身份验证流程之后的内容
在以下情况下继续使用 single 任务:
- 服务端渲染的 HTML 页面(新闻网站、博客、Wiki)
- 直接返回 JSON 的 REST API
- 速度优先的场景(浏览器任务耗时 2 到 10 秒,而单一任务耗时不到 1 秒)
示例:抓取 React 应用
curl -X POST https://eu.api.foura.ai/api/v1/tasks \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/dashboard",
"type": "browser",
"options": {
"waitFor": ".dashboard-content",
"timeout": 15000
}
}'
waitFor selector 会通知 FourA 等待 .dashboard-content 出现在 DOM 中后再捕获页面。这可确保所有异步数据均已加载完毕。
性能建议
- 始终将
waitFor与特定 selector 结合使用,而不是依赖超时等待。这种方式更快且更可靠。 - 设置合理的超时时间。 15 秒足以覆盖大多数 SPA。仅在后端响应确实缓慢时增加该值。
- 默认使用
single,仅在 response 中缺少内容时才切换为browser。
后续计划
我们正在开发更多浏览器功能,包括截图捕获、PDF 生成以及多步导航(点击、滚动、填写表单)。即使没有这些扩展功能,浏览器任务也已经解决了最常见的痛点:从 JavaScript 渲染的页面中获取真实内容,而非空白外壳。
请查看 文档 获取完整的任务类型对比。