首页 > 解决方案 > PuppeteerSharp 错误 No connection could be made because the target machine主动拒绝它 127.0.0.1:Port

问题描述

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

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

我收到错误这个错误

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

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

标签: c#puppeteer-sharp

解决方案


在阅读了这个问题之后,似乎我们应该使用绝对路径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 浏览器,因此可能需要进行一些更改才能仅关闭当前浏览器。


推荐阅读