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