Chr*_*sco 0 google-chrome docker puppeteer
我让 Puppeteer 在一个容器中工作,它有自己的无头 Chrome/Chromium,它将连接到我在不同容器上运行的网络应用程序。一切正常。
我希望容器内的 Puppeteer 使用我的主机 Google Chrome(或 Chromium,没关系)运行我的网络应用程序。我一直在寻找类似的东西,但没有找到关于此事的文档。
我怎样才能做到这一点?
告诉 puppeteer 连接到本地机器上的 chrome 实例而不是 docker 容器中的无头版本
通过/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222在终端上运行以调试模式运行 chrome/chromium 。这应该会给你一个 Websocket 调试 url。这应该是这样的:ws://host.docker.internal:9222/devtools/browser/d7db2629-0930-4741-a6ca-78ff70863c20。
在您的 docker dev 设置中,告诉 docker 公开 port 9222。这是我们指定的chrome的调试端口。在运行 puppeteer 的服务的 yml 部分中:
service-name:
build: "..."
volumes:
- ....
- ....
ports:
- 3010:3010
- 9222:9222 <--- Add this
Run Code Online (Sandbox Code Playgroud)
然后重新初始化/重启docker容器
docker-compose down
docker-compose up
Run Code Online (Sandbox Code Playgroud)
service-name:
build: "..."
volumes:
- ....
- ....
ports:
- 3010:3010
- 9222:9222 <--- Add this
Run Code Online (Sandbox Code Playgroud)
到
docker-compose down
docker-compose up
Run Code Online (Sandbox Code Playgroud)
现在 puppeteer 应该连接到您本地机器上的 chrome,您应该看到它实时执行所有操作!
PS:
或者如果您不想一次又一次地复制生成的网址。你可以做
const browser = await puppeteer.launch({ args });
Run Code Online (Sandbox Code Playgroud)
这可以从 chrome 获取调试 websocket url
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |