最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

playwright中處理cookie的幾種實現(xiàn)方法

 更新時間:2026年01月25日 09:56:09   作者:勤奮的碼農(nóng)007  
Playwright 提供了多種處理 Cookie 的方法,支持 JavaScript/TypeScript、Python 等語言,下面就來介紹一下如何使用,感興趣的可以了解一下

在 Playwright 中處理 Cookie 主要有以下幾種方式,這些方法適用于所有語言綁定(JavaScript/TypeScript、Python、C#、Java):

1.添加 Cookie

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  
  // 添加單個 Cookie
  await context.addCookies([{
    name: 'token',
    value: 'abc123',
    url: 'https://example.com', // 或使用 domain/path
    domain: 'example.com',
    path: '/',
    expires: Math.floor(Date.now() / 1000) + 86400, // 過期時間(Unix 時間戳)
    httpOnly: true,
    secure: true,
    sameSite: 'Lax' // 'Strict' | 'Lax' | 'None'
  }]);
})();

2.獲取 Cookie

// 獲取所有 Cookie
const cookies = await context.cookies();
console.log(cookies);

// 獲取特定 URL 的 Cookie
const siteCookies = await context.cookies(['https://example.com/login']);

3.清除 Cookie

// 清除所有 Cookie
await context.clearCookies();

// 清除特定 Cookie(通過名稱)
await context.addCookies([]); // 添加空數(shù)組無法清除,需手動過濾重置

4.保存/加載 Cookie 狀態(tài)(會話復用)

保存狀態(tài)到文件

await context.storageState({ path: 'auth.json' });

文件內(nèi)容包含 cookies 和 localStorage。

加載狀態(tài)創(chuàng)建新上下文

const context = await browser.newContext({
  storageState: 'auth.json'
});

5.自動處理 Cookie(通過路由攔截)

await context.route('**/*', route => {
  const headers = route.request().headers();
  headers['Cookie'] = 'my_cookie=value'; // 手動添加 Cookie 到請求
  route.continue({ headers });
});

6.在頁面中操作 Cookie(通過 evaluate)

const cookieValue = await page.evaluate(() => {
  return document.cookie; // 讀取全部 Cookie
});

await page.evaluate(() => {
  document.cookie = 'user=john; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';
});

關(guān)鍵注意事項

  1. 域名要求
    addCookies() 必須指定 urldomain+path,且當前上下文需在該域名下(可通過 page.goto() 先訪問目標域)。

  2. HTTP Only Cookie
    無法通過 page.evaluate() 讀取/修改 HTTP-Only Cookie,需使用 context.cookies()

  3. 跨域限制
    Cookie 遵循同源策略,不可直接訪問其他域的 Cookie。

  4. 瀏覽器上下文隔離
    每個 BrowserContext 有獨立的 Cookie 存儲,復用狀態(tài)需使用 storageState。

典型場景示例:登錄狀態(tài)保持

// 首次登錄并保存狀態(tài)
const context = await browser.newContext();
await context.addInitScript(() => {
  localStorage.setItem('theme', 'dark');
});
await page.goto('https://example.com/login');
await page.fill('#username', 'user');
await page.fill('#password', 'pass');
await page.click('#login');
await context.storageState({ path: 'auth.json' });

// 后續(xù)測試直接加載狀態(tài)
const newContext = await browser.newContext({ storageState: 'auth.json' });
const newPage = await newContext.newPage();
await newPage.goto('https://example.com/dashboard'); // 已登錄狀態(tài)

通過上述方法,可以靈活管理 Cookie,實現(xiàn)身份驗證、會話保持等關(guān)鍵功能。

到此這篇關(guān)于playwright中處理cookie的幾種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)playwright處理cookie內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

宝兴县| 湘潭县| 宜阳县| 阿拉善右旗| 犍为县| 宁津县| 会昌县| 绥阳县| 海门市| 玉屏| 永福县| 苍南县| 霍林郭勒市| 巩义市| 屏东县| 二连浩特市| 天长市| 德州市| 云南省| 石林| 遂昌县| 滕州市| 雅安市| 湖北省| 射洪县| 南川市| 竹山县| 丹阳市| 侯马市| 通渭县| 白朗县| 驻马店市| 万州区| 隆子县| 鹤山市| 林州市| 南靖县| 八宿县| 通道| 青州市| 军事|