Browserless 启动 URL:别把 launch 参数编码两次
使用自托管端点的 launch 接口;托管服务的 externalProxyServer 是另一项功能。
const endpoint = new URL(browserlessWebSocketEndpoint);
endpoint.searchParams.set('token', browserlessToken);
endpoint.searchParams.set('launch', JSON.stringify({
args: ['--proxy-server=http://proxy.example:8080'],
}));
const browser = await puppeteer.connect({
browserWSEndpoint: endpoint.toString(),
});使用部署方提供的 ws/wss 端点和 token。浏览器所在主机必须能连上 HTTP 监听器;这个 token 认证的是控制连接。进行获准的公共网页浏览时,可以从 HTTP 代理列表 选取候选,填入不带认证的启动参数。
JSON.stringify 先把 launch 对象序列化,再由 URLSearchParams 为 URL 编码。如果先用 encodeURIComponent 编码文本再交给 searchParams,其中的百分号会被再次编码。
这个不带认证的参数不会传递 Chromium 用户名和密码凭据。需要认证时,使用受支持的认证质询处理方式。
托管服务的 externalProxyServer 集成,并不代表每个自托管镜像的 launch 对象都有同名字段。排查账号之前,先核对部署方式、镜像版本和所选 API。