PuppeteerSharp 错误无法建立连接,因为目标机器主动拒绝它 127.0.0.1:Port

PuppeteerSharp error No connection could be made because the target machine actively refused it 127.0.0.1:Port

我有 PuppeteerSharp 项目,我需要保存 cookie,所以我使用以下代码:

browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
        Headless = true,
        UserDataDir = Path.Combine(".", "user-data-dir"),
});

我得到这个错误

No connection could be made because the target machine actively refused it 127.0.0.1:PortNumber

但是当我将 Headless 设置为 false 时,它​​ 运行 没有任何问题。当我用谷歌搜索错误消息时,大多数解决方案都是关于防火墙的,所以我关闭了防火墙但没有任何变化。

看完这篇issue,看来我们应该用UserDataDir的绝对路径,所以这个工作正常:

browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    UserDataDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ".local-chromium", "Win64-884014", "chrome-win", "UserData").Replace(@"\", @"\")
});

但是另一个问题出现了,因为浏览器没有保存任何cookie。 同样,github 上的一些问题表示应该关闭浏览器以保存 cookie。我试过这个:

await page.CloseAsync();
await browser.CloseAsync();

但它没有按预期工作,因为浏览器仍在后台 运行。我的最终解决方案是:

var chromes = System.Diagnostics.Process.GetProcesses().Where(x => x.ProcessName == "chrome").ToList();

foreach (var ch in chromes)
{
    try
    {
        ch.Kill();
    }
    catch
    {
    }
}

以上代码将关闭所有 chrome 浏览器,因此可能需要进行一些更改才能仅关闭当前浏览器。