go-rod / rod

A Chrome DevTools Protocol driver for web automation and scraping.
https://go-rod.github.io
MIT License
5k stars 328 forks source link

launcher docker 是否支持常驻且直接连接 #1069

Closed stevenyangecho closed 3 weeks ago

stevenyangecho commented 3 weeks ago

Rod Version: v0.116.0

launcher管理的 docker ,我的程序这样启动,进行一系列操作后,如果关闭程序,docker的 浏览器进程也要自动关闭.再次启动我的程序,docker 会另外开一个 浏览器进程. 我的需求是,我的程序关闭不影响docker里面浏览器进程,并且已经打开的浏览器返回一个标识,让我下次程序启动,可以接着这个浏览器的页面继续操作,能否支持我的需求呢,或者我应该怎么办比较好~~

    l := launcher.MustNewManaged("ws://127.0.0.1:7317")
    c := l.MustClient()
    browser := rod.New().Client(c)
ysmood commented 3 weeks ago

你需要自己写一个代理来处理这个再链接,cdp 协议不支持断开连接重连。类似于 tmux 的 attach

stevenyangecho commented 3 weeks ago

谢谢,我应该不需要完整的你那种意义的断开重连,我只需要不把页面关掉即可,然后通过browser.Pages() 取得页面,再操作就行了. 比如说目前手动应该可以实现我的需求

手动启动 浏览器 chrome.ee --remote-debugging-port=9222

然后程序里
rod.New().ControlURL("ws://127.0.0.1:9222")

这样,不管我程序如何重启,浏览器都不关闭,原来的tab都保留

只不过目前rod里launcher Manage 管理起来很先进方便 !看看有没有支持这种模式的~~

ysmood commented 3 weeks ago

manager 目前不支持这种,你可能需要自己改下 manager 的代码。我推荐还是走代理比较好,否则容易内存泄露。

stevenyangecho commented 3 weeks ago

好的,谢谢,那我再研究研究,希望以后官方增加这种管理模式~~