跳至主要內容
版本:23.11.1

Cookies

Puppeteer 提供方法,透過直接操作瀏覽器儲存來提前取得、設定和刪除 Cookie。如果您需要儲存和還原特定 Cookie 以進行測試,這會很有用。

取得 Cookie

以下範例示範如何取得瀏覽器預設 BrowserContext 中可用的 Cookie。

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();

const page = await browser.newPage();

await page.goto('https://example.com');

// In this example, we set a cookie using script evaluation.
// Cookies can be set by the page/server in various ways.
await page.evaluate(() => {
document.cookie = 'myCookie = MyCookieValue';
});

console.log(await browser.cookies()); // print available cookies.

設定 Cookie

Puppeteer 也可以直接將 Cookie 寫入瀏覽器的儲存中

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();

// Sets two cookies for the localhost domain.
await browser.setCookie(
{
name: 'cookie1',
value: '1',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
{
name: 'cookie2',
value: '2',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
);

console.log(await browser.cookies()); // print available cookies.

刪除 Cookie

Browser.deleteCookie() 方法允許從儲存中刪除 Cookie。

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch();

// Deletes two cookies for the localhost domain.
await browser.deleteCookie(
{
name: 'cookie1',
value: '1',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
{
name: 'cookie2',
value: '2',
domain: 'localhost',
path: '/',
sameParty: false,
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
);

console.log(await browser.cookies()); // print available cookies.

除了在預設瀏覽器上下文操作的 Browser 方法之外,相同的方法也可在 BrowserContext 類別中使用。