【问题标题】:How can I get cookies from Puppeteer chrome session C#?如何从 Puppeteer chrome session C# 获取 cookie?
【发布时间】:2020-09-26 10:19:11
【问题描述】:

我需要从 puppeteer chrome 会话中获取特定网站的 cookie,并将这些 cookie 添加到脚本中。这是我正在执行的获取 cookie 表单页面的代码:

page.GetCookiesAsync();

但它会返回:

Id = 7315,状态 = WaitingForActivation,方法 =“{null}”,结果 =“{尚未计算}”

我尝试过的其他方法:

page.Client.SendAsync("Network.getAllCookies");

这两种方法都不适合我。 我做错了什么?

【问题讨论】:

    标签: c# web-scraping puppeteer-sharp datascript


    【解决方案1】:

    GetCookiesAsync任务的执行需要等待,像这样:

    private async Task YourMethod()
    { 
        var result = await page.GetCookiesAsync();
    }
    

    您可能需要为此更改呼叫者。

    尝试阅读 C# 中的异步编程:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/


    所以你看到的是:

    Id = 7315,状态 = WaitingForActivation,方法 =“{null}”,结果 =“{尚未计算}”

    是尚未完成的异步任务。 GetCookiesAsync 立即返回。如果你想等待结果,你应该await它。

    【讨论】:

    • 你的意思是喜欢这个页面.Client.SendAsync("Network.getAllCookies").Wait();
    • 我试过这个代码:page.Client.SendAsync("Network.getAllCookies").Wait(); var ob = page.Client.SendAsync("Network.getAllCookies");
    • 如果你正在同步,你需要:Result
    • @Mobeen:尝试阅读 C# 中的 async/await 和 Tasks ......它将帮助您推进这些事情 ;-)
    • @Mobeen:提供的解决方案(带有.Result)并不是真正推荐的,因为它可能会导致问题。要使其正常工作,请使用我提供的链接。我将删除示例。
    猜你喜欢
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多