跳到正文

价格与流量

托管浏览器按流量计费,每 GB 从预付余额中扣费。包含哪些内容、哪些算作流量,以及如何少用流量。

价格

  • 每 GB €1.00,含住宅代理。默认情况下,每个会话都通过住宅 IP 访问互联网:来自普通家用宽带运营商的真实家庭连接,而不是数据中心或主机托管地址。€1.00 买的就是这部分流量;代理不另外收费。
  • 流量按浏览器与互联网之间的传输量计算,上传和下载合并计(1 GB = 109 字节)。参见哪些算作流量。
  • 时长、会话数和 CDP 消息均不收费。
  • 使用我们密钥的验证求解服务(不使用则不开启):每个已解出的验证按求解服务自身的价格 × 1.5 从你的余额中扣费。
  • 预付费:在仪表盘中充值。启动一个浏览器至少需要 €0.50 的余额;每个会话的上限是启动时余额所能支付的额度,由你正在运行的所有浏览器共同分摊(如果你自己设置的 maxGb 更低,则以它为准)。余额归零时,正在运行的浏览器会被停止(用量大约每 15 秒上报一次,因此最后一次上报可能让余额略低于零)。

哪些算作流量

浏览器发往网站或从网站接收的每一个字节都按线路上的实际传输量计算,与代理服务商的计量方式相同。对一个典型页面来说,这意味着:

  • 计入:页面本身及其加载的所有内容:脚本、样式表、图片、字体、视频、API 调用、广告和跟踪器、WebSocket,以及请求头、cookie 和每个连接的加密(TLS)开销。你等待期间页面仍在持续加载,所以后台轮询和统计分析也会计入。
  • 不计入:你的代码与浏览器之间的 CDP 连接(命令、返回结果、截图、PDF、你读取的页面内容)、仪表盘中的实时画面,以及浏览器根本没有去获取的内容(你拦截的请求、它直接从自身缓存读取的文件)。

粗略来说,一个轻量的纯文本页面远不到 1 MB,一个典型的新闻或电商页面为 2 到 5 MB,而重型单页应用或任何带视频的页面则在 10 MB 以上。按每 GB €1.00 计算,1,000 个 3 MB 的页面约为 3 GB。你自己的会话会显示真实数据:仪表盘列出每个会话的流量及按字节数排名前 20 的站点,而 maxGb 可以为会话设定上限,防止失控的页面耗光你的余额。

减少流量

页面的大部分体积通常都是脚本用不到的东西。按节省幅度从大到小排列:

  1. 拦截图片、媒体和字体。它们往往占页面的一半甚至更多。在浏览器内按 URL 模式拦截,这些请求就根本不会发出,也就不会计费——而且浏览器会保留缓存:
javascript
// Playwright: block by URL pattern over CDP (keeps the browser cache on)
const cdp = await context.newCDPSession(page);
await cdp.send("Network.enable");
await cdp.send("Network.setBlockedURLs", {
  urls: ["*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.svg", "*.woff", "*.woff2", "*.ttf", "*.mp4", "*.webm"],
});

// Puppeteer: the same, through its CDP session
const client = await page.createCDPSession();
await client.send("Network.enable");
await client.send("Network.setBlockedURLs", { urls: ["*.png", "*.jpg", "*.jpeg", "*.gif", "*.webp", "*.woff2"] });

不要仅仅为了丢弃请求而使用 page.route() / context.route() 或 Puppeteer 的请求拦截:它们会关闭浏览器缓存,导致每个页面都要重新下载脚本和样式,花费比省下的图片还多。只有在需要修改请求时才使用它们。adblock 选项也能替你拦截广告和跟踪器。

  1. 拦截广告、统计分析和跟踪器。中止发往你不需要的第三方域名的请求。仪表盘中该会话的热门站点列表会告诉你哪些站点花费最多。
  2. 不要多等。waitUntil: "networkidle" 会等待页面加载的所有内容,包括广告。优先使用 "domcontentloaded",然后只等待你真正需要的那一个元素。
  3. 用完立即关闭浏览器。打开的页面会在后台持续轮询。调低 idleTimeoutSec,让被遗忘的会话自动关闭。
  4. 复用一个浏览器访问多个页面。有了缓存,同一站点各页面共用的脚本和样式只需下载一次,而不是每个页面都下载一遍。请在同一个会话中导航,而不是为每个 URL 新开一个会话。
  5. 能调站点的 API 就调 API。浏览器建立起可用的会话后,在页面内用 fetch() 获取你需要的 JSON,数据量只是重新加载页面的一小部分。
  6. 设置上限。为每个会话设置 maxGb,这样意外过重的页面会被停止,而不会耗光你的余额。

拦截对大多数站点都有效,但少数站点会检查图片或字体是否真的加载了。如果某个站点在开启拦截后表现异常,就针对该站点重新放行这类资源。

想先看看实际效果?Playground 让你直接在仪表盘里用云端浏览器运行脚本,实时画面、控制台输出和截图并排显示。