创建浏览器会话,或获取同名的已有会话
会话是一个运行节点上对应 kind 浏览器镜像的沙箱(镜像由 --browser-images 指定,生产环境中按摘要指定),规格固定为 1 vCPU 和 2 GiB,与任何沙箱一样在 region 指定的地方创建,并在控制平面自己的表中被标记为浏览器会话:从不通过元数据标记,客户无法借元数据把普通沙箱变成会话 (reserved_metadata)。会话的 id 就是其沙箱的 id:/v1/sandboxes/{id}/… 的所有调用都适用于它,DELETE /v1/sandboxes/{id} 会结束它。cdp_url 是其 9222 端口的签名地址,任何 CDP 客户端(Playwright 的 connectOverCDP、Puppeteer 的 connect)都可以使用。只要有客户端连接着它的浏览器(或有头会话的屏幕),无论页面在做什么,它都保持运行;最后一个连接关闭 sleep_after_seconds 秒后,它连同页面一起进入休眠;connection_idle_seconds 内没有任何数据的连接会被节点关闭(见其沙箱的 awake_ports 和 connection_idle_seconds)。它的出站流量永远到达不了 25、465、587 端口以及矿池监听的端口(其规则的 deny_ports,规则怎么修改都会保留)。如果项目中已有该 name 的会话,就返回那个会话,休眠的会被唤醒 (200);如果该名称属于普通沙箱,则被拒绝 (409 name_taken)。在免费版上,会话与任何沙箱一样受免费版每日 CPU 时间和内存配额的限制 (429 quota_used_up)。同时运行的数量受套餐对运行中资源的上限限制(免费版为 5 个:5 个沙箱,10 GiB)。如果会话所在节点上没有该镜像的现成模板,节点会为它构建一个(该镜像在那里的第一个会话),构建完成且浏览器运行后才返回,附带 ws_url:所需时间可能与构建一样长。支持 Idempotency-Key。所需权限范围:write。带 profile 时,会在返回之前把配置文件的某个版本(最新的,或 version 指定的)加载到会话中:浏览器基于它重新启动,保持原来的登录状态(以 save: true 创建的会话在删除时会保存配置文件)。kind 为 lightpanda 的是 Lightpanda 会话(镜像 browser-lightpanda),这种浏览器运行页面脚本、维护 DOM,但不做任何布局和绘制:其创建、定价和规则与其他会话相同,带有 cdp_url 和 ws_url;它没有 live_url,也不保存配置文件 (kind_unsupported);它没有布局引擎,因此通过 CDP 截取的截图和 PDF 只包含页面文本(chromium-headless 给出的是绘制后的页面),录屏它无从提供,会被拒绝,错误中会指明 chromium-headless。
https://api.glac.ai/v1/browsers授权
请求头参数
请求体JSON可选
- proxyoptionalobject | null
你自己的代理 (BR11),需要付费套餐:
{"url": ...};null 或不给出:没有。会话发往 80 和 443 端口的 TCP 连接,经由其节点的中继从代理出去:中继位于执行其出站规则的那一层,会读出每个连接的去向(TLS 握手的服务器名称、HTTP 请求的 Host),并请代理建立通往那里的隧道(CONNECT,凭据使用 Basic 方式)。浏览器并不知情,客户机中也没有任何东西持有凭据;凭据由节点保管,不出现在任何响应中。发往 443 端口的 UDP (QUIC) 会被拒绝,因此浏览器使用基于 TCP 的 HTTP;发往其他端口的连接照常进行。经由代理的流量双向计数 (usage.proxy_bytes),属于普通的出站流量。代理不为其建立隧道的连接会得到通知:HTTP 请求返回 502proxy_failed,TLS 握手收到告警。免费版返回 403proxy_not_on_plan;不是有效的代理时返回 400invalid_proxy(param为proxy.url;错误信息从不显示该 URL);带有url以外的字段时返回 400unknown_field。
Returns
200
项目中已有的同名会话:休眠的会被唤醒。
- ws_urlstring | nullrequired
浏览器自己的 WebSocket 地址 (
wss://9222-<id>-<signature>.<preview domain>/devtools/browser/<browser id>),供只接受这种地址的客户端使用(Puppeteer 的browserWSEndpoint、chromedp 的远程分配器):即会话模板构建时其节点记录的浏览器路径(沙箱的devtools),加在cdp_url上,并带有其凭据。cdp_url为 null,或节点没有记录浏览器时为 null。cdp_url可以为每个请求/json/version的 CDP 客户端提供服务。
201
会话,已创建。
- ws_urlstring | nullrequired
浏览器自己的 WebSocket 地址 (
wss://9222-<id>-<signature>.<preview domain>/devtools/browser/<browser id>),供只接受这种地址的客户端使用(Puppeteer 的browserWSEndpoint、chromedp 的远程分配器):即会话模板构建时其节点记录的浏览器路径(沙箱的devtools),加在cdp_url上,并带有其凭据。cdp_url为 null,或节点没有记录浏览器时为 null。cdp_url可以为每个请求/json/version的 CDP 客户端提供服务。