概述
/browser 端点支持 JavaScript 渲染的抓取。与 /fetch(返回原始 HTTP 响应)不同,/browser 会等待动态内容加载并返回完全渲染的页面。
何时使用 /browser 而非 /fetch:
- 页面需要 JavaScript 才能加载内容(SPA、动态网站)
- 您需要所有 Cookie,包括客户端脚本设置的 Cookie
- 您想执行自定义 JavaScript 提取数据
- 您需要渲染页面的截图
/fetch 相同(meta、raw、raw_json),并额外包含 Cookie、截图和 JS 执行结果。
端点
/fetch 用法一致 — 所有参数通过请求头传递。
请求头
| Header | Required | Default | Description |
|---|---|---|---|
X-API-Key | 是 | — | API 密钥 |
X-Target-URL | 是 | — | 要渲染的目标 URL |
X-Wait-Strategy | 否 | load | load、networkidle 或 selector(详情) |
X-Wait-Selector | 否 | — | 要等待的 CSS 选择器(配合 selector 策略) |
X-Timeout | 否 | 30 | 超时时间,秒(最大 120) |
X-JS-Expression | 否 | — | 页面就绪后执行的 JavaScript |
X-Screenshot | 否 | false | 捕获截图(1 或 true) |
X-Expect-Selector | 否 | — | 必须存在的 CSS 选择器 — 缺失时在不同节点重试 |
X-Expect-Contains | 否 | — | 必须存在于内容中的子字符串 — 缺失时重试 |
X-Proxy | 否 | — | 通过代理路由(http:// 或 socks5://) |
X-Block-Resources | 否 | — | 逗号分隔的阻止资源类型:image,font,stylesheet,media |
X-Geo | 否 | — | 节点国家过滤器(如 US、DE,AT) |
X-Agent | 否 | — | 固定到特定节点(如 de1、us3) |
Cookie | 否 | — | 注入 Cookie(name=value; name2=value2) |
X-Cookies | 否 | — | Cookie JSON 数组,用于完整控制(格式) |
等待策略
| Strategy | Description |
|---|---|
load | 等待 DOMContentLoaded 事件(最快) |
networkidle | 等待直到不超过 2 个网络连接持续 500ms(最适合 SPA) |
selector | 等待 X-Wait-Selector 出现在 DOM 中 |
Cookies
简单 Cookie — 使用标准Cookie 请求头:
X-Cookies 请求头,需要域名、路径等控制时:
资源阻止
响应
| Field | Description |
|---|---|
meta | 与 /fetch 相同 — 状态码、最终 URL、响应头、耗时、节点 ID |
raw | 渲染后的页面文本。如果是有效 JSON 则为 null |
raw_json | 解析后的 JSON 对象,否则为 null |
cookies | 渲染期间设置的所有 Cookie,包括 httpOnly |
screenshot | 全页 Base64 PNG(未请求时为 null) |
js_result | X-JS-Expression 的返回值(未提供时为 null) |
响应验证
使用X-Expect-Selector 和 X-Expect-Contains 验证内容。验证失败时 API 自动在不同节点重试。
示例
渲染 JavaScript 页面
等待特定内容
使用 JavaScript 提取数据
截图
带 Cookie
Python
Browser Stream(SSE)
对于长时间的实时会话,使用/browser/stream。浏览器保持打开状态,通过 SSE 实时流式传输事件。
使用场景:
- 捕获页面接收的 WebSocket 帧(实时数据流)
- 监控页面发出的网络 API 调用(XHR/Fetch 响应)
- 监视 DOM 元素变化(价格更新、内容变化)
端点
请求头
与/browser 相同,另加:
| Header | Default | Description |
|---|---|---|
X-Capture | network,ws,console | 逗号分隔的事件类型 |
X-DOM-Selector | — | 监视 DOM 变化的 CSS 选择器 |
X-Network-Filter | — | 网络 URL 正则过滤器 |
X-WS-Filter | — | WebSocket URL 正则过滤器 |
X-JS-After-Load | — | 页面加载后执行的 JavaScript |
SSE 事件
| Event | Description |
|---|---|
connected | 浏览器已加载,开始流式传输 |
network | 捕获的 HTTP 响应(XHR/Fetch) |
ws_open | 页面打开了 WebSocket 连接 |
ws_message | 页面接收到 WebSocket 帧 |
ws_close | 页面 WebSocket 已关闭 |
dom | 监视选择器的 DOM 变化 |
console | 控制台输出 |
error | 错误,流结束 |
done | 会话结束 |
示例:捕获页面 WebSocket 数据
Python
后续步骤
HTTP Fetch
对于不需要 JavaScript 渲染的页面,使用更快的
/fetch 端点。Error handling
状态码、封锁检测和重试策略。