我正在尝试让 Playwright 连接到已打开的现有 Chrome 实例,这样我就可以避免每次登录。我曾多次尝试使用 StorageState 或 SetCookies,但它们根本不起作用,所以我已经放弃了。
不幸的是,我似乎永远无法连接它。它只是超时了,并没有说什么。
我尝试过的各种变体,都导致超时,尽管错误暗示它在断开连接之前已连接......:
_browser = await _playwright.Chromium.ConnectOverCDPAsync("ws://127.0.0.1:9222/devtools/browser/aec930b5-bd2b-4e6c-8b00-68f0a414ad77");
_browser = await _playwright.Chromium.ConnectOverCDPAsync("http://localhost:9222");
以下内容只是打开一个新的隐身窗口,而不是使用相同的现有会话,因此需要登录:
_browser = await _playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
ExecutablePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe",
});
我还确保在杀死所有 Chrome 实例后重新启动浏览器,并启用远程调试。我什至尝试过管理员模式来咯咯笑,但无济于事。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
我已确认 Chrome DevTools 协议 (CDP) 已启用,方法是:
http://127.0.0.1:9222/json/version
显示:
{
"Browser": "Chrome/122.0.6261.112",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
"V8-Version": "12.2.281.21",
"WebKit-Version": "537.36 (@9d4c1072da62b411b351a38b9ed6214ab236aa7b)",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/aec930b5-bd2b-4e6c-8b00-68f0a414ad77"
}
所以看起来它确实应该能够通过 CDP 连接,但无论如何都会超时。
使用已登录的自定义配置文件打开 Chrome 或 Firefox 的新实例也是一个合适的解决方案。到目前为止,我所能做的就是传统的打开“隐身”风格的浏览器。
不幸的是,在这种奇怪的情况下无法跳过登录,因此无需建议!
我将不胜感激你们能提供的任何指导。
很多时候 9222 端口不起作用,请尝试其他号码,例如 9214,9234 等
首先通过 cd 转到 chrome 位置安装
Cd C:\Program Files\Google\Chrome\Application
运行以下命令开始浏览端口可能不是9222因为我有时也遇到打不开的问题
chrome.exe --remote-debugging-port=9214 --no-first-run --no-default-browser-check --user-data-dir="C:\Users\gakhuran\AppData\Local\Google\Chrome\User Data
浏览器打开后,您可以登录 et 并执行先决条件
下面的代码应该有助于连接到已经打开的浏览器
IBrowser browser = await Playwright.Chromium.ConnectOverCDPAsync("http://localhost:9214");
var default_context = browser.Contexts[0];
var Page1 = default_context.Pages[0];
我一直在用这个。唯一的问题是端口有时休息一切正常