ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 Puppeteer 连接到已在运行的浏览器实例

如何用 Puppeteer 连接到已在运行的浏览器实例 如何用 Puppeteer 连接到已在运行的浏览器实例【免费下载链接】puppeteerJavaScript API for Chrome and Firefox项目地址: https://gitcode.com/GitHub_Trending/puppeteer1/puppeteer当浏览器已经由 Puppeteer 之外的方式启动手动运行、其他进程或另一个自动化脚本你不需要再launch一个新浏览器而是可以用puppeteer.connect()把 Puppeteer 附加到这个已存在的浏览器实例上对它已有的页面和后续新建的页面执行自动化操作。PuppeteerNode.connect() 的方法签名接受一个ConnectOptions对象返回PromiseBrowser即一个可以直接调用newPage()、pages()等方法的浏览器实例。本文的操作路径是先拿到目标浏览器的 WebSocket 端点地址再用puppeteer.connect()建立连接最后验证连接并断开。如何获取浏览器的 WebSocket 端点连接的前提是拿到一个 WebSocket 端点 URL。浏览器管理指南 中的说法是Usually, you can grab a WebSocket endpoint URL from the browser output.即通常从浏览器的输出信息中获取。此外Browser.wsEndpoint() 的文档 给出了另一种获取方式调试器地址webSocketDebuggerUrl可以从http://HOST:PORT/json/version查到其中HOST:PORT替换为浏览器调试端口实际监机的地址。端点 URL 的固定格式为ws://HOST:PORT/devtools/browser/id指南示例中使用的端点形式为ws://127.0.0.1:9222/...文档示例实际值以你浏览器输出或/json/version返回的webSocketDebuggerUrl为准。拿到后填入browserWSEndpoint即可不需要再启动任何浏览器进程。使用 connect() 建立连接在 browser-management.md 给出的主路径代码如下把端点地址替换为你实际查到的值import puppeteer from puppeteer; const browser await puppeteer.connect({ browserWSEndpoint: ws://127.0.0.1:9222/..., // 替换为实际的 webSocketDebuggerUrl }); const page await browser.newPage(); browser.disconnect();如果浏览器本来就是外部启动的、你只是需要一个库来连接也可以安装不下载 Chrome 的 puppeteer-corenpm i puppeteer-core用法相同从puppeteer-core导入即可。ConnectOptions中与连接相关的常用项详见 ConnectOptions 文档属性说明browserWSEndpointWebSocket 端点地址本文主路径使用browserURL可选的浏览器地址字符串wsOptionsWebSocket 连接选项仅 Node.js 环境可用浏览器构建没有 ping frame APIkeep-alive 选项会被忽略protocol连接时默认按运行时判定为cdpChrome 启动也是cdpFirefox 启动为webDriverBiDidefaultViewport设置每个页面的视口默认{width: 800, height: 600}headers已废弃改为通过wsOptions.headers传递两者同时设置时以wsOptions.headers为准验证连接是否成功连接成功后拿到的是完整的Browser对象可以直接对其做操作。仓库中的 puppeteer-in-browser 示例 展示了典型的验证方式连接后用browser.pages()列出已有页面并输出数量然后断开const wsUrl document.querySelector(#ws).value; // 示例中从页面表单读取实际使用你的端点变量 const browser await puppeteer.connect({ browserWSEndpoint: wsUrl, }); alert(Browser has (await browser.pages()).length pages); browser.disconnect();在 Node.js 脚本中同样的写法是把alert换成console.log(await browser.pages()).length返回页面数能正常返回并成功执行browser.newPage()说明连接已建立。断开连接与关闭浏览器的区别操作完成后用browser.disconnect()结束连接。Browser.disconnect() 文档 明确说明它只是把 Puppeteer 从浏览器上断开浏览器进程会继续运行指南也强调browser.disconnect()与browser.close()不同——它不会关闭浏览器也不会关闭任何页面。也就是说断开连接后你之前外部启动的浏览器及其所有页面原样保留后续仍可再次connect。参考资料浏览器管理指南Connecting to a running browserPuppeteerNode.connect()ConnectOptions 选项Browser.wsEndpoint()Browser.disconnect()puppeteer-in-browser 连接示例【免费下载链接】puppeteerJavaScript API for Chrome and Firefox项目地址: https://gitcode.com/GitHub_Trending/puppeteer1/puppeteer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表