Как установить cookie в Puppetteer-Sharp? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь установить cookie в Puppetteer-Sharp, зайти на страницу и прочитать innerHtml элемента на странице, однако, похоже, что cookie никогда не устанавливается. Как правильно установить cookie в Puppetteer-Sharp?

public async Task<string> RenderPage(string baseUrl, string url, string cookieName, string cookieValue)
    {
      await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
      using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false }))      
      {
        using (var page = await browser.NewPageAsync())
        {
          await page.SetCookieAsync(new CookieParam { 
            Name = cookieName, 
            Value = cookieValue, 
            Domain = baseUrl, 
            Url = baseUrl + url 
          });
          await page.GoToAsync(baseUrl + url);
          await page.WaitForSelectorAsync("table.summary-table");
          var cookies = await page.GetCookiesAsync(baseUrl + url);
          var element = await page.QuerySelectorAsync("html");
          var text = await (await element.GetPropertyAsync("innerHTML")).JsonValueAsync<string>();
          Console.WriteLine(text);
          return text;
        }
      }
    }

В консоли разработчика Chromium видно, что для домена нет файлов cookie: no cookies

Из визуального отладчика студии видно, что Puppeteer считает, что на странице не установлены файлы cookie:

no cookies on the page

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Вы должны быть осторожны с вашей domain собственностью. Если он не действителен, он будет проигнорирован. За то, что я вижу там. Возможно, вы устанавливаете что-то вроде http://www.yourdomain.com, когда ожидается yourdomain.com.

0 голосов
/ 14 июня 2019

Мне удалось запустить cookie, выполнив следующие действия:

public async Task<string> RenderPage(string baseUrl, string url, string cookieName, string cookieValue)
    {
      await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
      using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = false }))      
      {
        using (var page = await browser.NewPageAsync())
        {
          await page.GoToAsync(baseUrl);
          await page.SetCookieAsync(new CookieParam { 
            Name = cookieName, 
            Value = cookieValue, 
          });
          await page.GoToAsync(baseUrl + url);
          await page.WaitForSelectorAsync("table.summary-table");
          var cookies = await page.GetCookiesAsync(baseUrl + url);
          var element = await page.QuerySelectorAsync("html");
          var text = await (await element.GetPropertyAsync("innerHTML")).JsonValueAsync<string>();
          Console.WriteLine(text);
          return text;
        }
      }
    }

Не уверен, почему мой код выше не работает, хотя ...

...