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

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

 更新時(shí)間: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();
  
  // 添加單個(gè) 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, // 過期時(shí)間(Unix 時(shí)間戳)
    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ù)組無法清除,需手動(dòng)過濾重置

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

保存狀態(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.自動(dòng)處理 Cookie(通過路由攔截)

await context.route('**/*', route => {
  const headers = route.request().headers();
  headers['Cookie'] = 'my_cookie=value'; // 手動(dòng)添加 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)鍵注意事項(xiàng)

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

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

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

  4. 瀏覽器上下文隔離
    每個(gè) BrowserContext 有獨(dú)立的 Cookie 存儲,復(fù)用狀態(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,實(shí)現(xiàn)身份驗(yàn)證、會(huì)話保持等關(guān)鍵功能。

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

相關(guān)文章

最新評論

怀来县| 乐山市| 呼图壁县| 弥渡县| 衡山县| 和顺县| 崇阳县| 梁山县| 广丰县| 星座| 炎陵县| 吴江市| 安平县| 巫山县| 关岭| 绍兴市| 潞西市| 汝城县| 霸州市| 无棣县| 那曲县| 精河县| 清徐县| 兰坪| 永清县| 木里| 灵武市| 馆陶县| 外汇| 彰化市| 延庆县| 甘德县| 庆阳市| 麻江县| 马尔康县| 大新县| 建宁县| 宁武县| 广汉市| 无极县| 金门县|