Puppeteer:从网站获取 localStorage

kur*_*tko 12 javascript local-storage node.js web-scraping puppeteer

我需要使用 Puppeteer 获取网站保存的所有数据:cookies 和 localStorage(例如登录后)。我已阅读所有 Puppeteer 文档,但找不到有关 localStorage 的任何信息。

在此处输入图片说明

我可以获取 cookie,但我不知道如何获取 localStorage。例如:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://www.twitter.com/')

  //
  // code for login
  //

  const returnedCookie = await page.cookies();  
  console.log(returnedCookie)
  // const localStorage = ??
  // console.log(localStorage)

  await browser.close()
})()
Run Code Online (Sandbox Code Playgroud)

kur*_*tko 10

我找到了方法:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://www.twitter.com/')

  //
  // code for login
  //

  const returnedCookie = await page.cookies();  
  console.log(returnedCookie)

  await page.waitFor( 10000 );
  const localStorageData = await page.evaluate(() => {
    let json = {};
    for (let i = 0; i < localStorage.length; i++) {
      const key = localStorage.key(i);
      json[key] = localStorage.getItem(key);
    }
    return json;
  });

  console.log(localStorageData)

  await browser.close()
})()
Run Code Online (Sandbox Code Playgroud)


Gui*_*oli 10

对我有用的更简单的方法

const localStorage = await page.evaluate(() => Object.assign({}, window.localStorage));

  • 效果很好!如果有人想检查,`await page.evaluate(() =&gt; window.localStorage);` 将不起作用:-) (3认同)