c# - 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 时,它运行没有任何问题。当我用谷歌搜索错误消息时,大多数解决方案都提到了防火墙,所以我关闭了防火墙,但没有任何改变。
解决方案
在阅读了这个问题之后,似乎我们应该使用绝对路径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 浏览器,因此可能需要进行一些更改才能仅关闭当前浏览器。
推荐阅读
- npm - SvelteKit 不起作用 - src\app.html 不存在问题
- flutter-getx - Flutter getx 在更改语言翻译时正在更改 var 状态,这是不应该做的
- reactjs - 如何使用函数构造函数将类组件转换为函数式?
- c# - 如何在没有事件/委托回调的情况下在 Unity 中创建 MessageBox?
- electron - 电子锻造不使用图标
- javascript - 如何在反应中编写正确的表单验证?
- node.js - 从 nodejs 上的弹性搜索中获取新添加的文档
- python - fpdf设置页边距在python中不起作用
- javascript - 无法从对象数组中获取数据 | React.js - openweatherAPI
- python - Python从另一个函数内部退出线程函数