You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Playwright使用Cookies跳过登录报错求助

解决C# Playwright加载Cookies时的System.AggregateException问题

一、处理'JSON解析起始值无效'错误

  • 问题根源:userCookies.json格式不符合Playwright要求,要么文件为空、有语法错误,要么不是标准的Cookies数组结构。
  • 解决步骤:
    1. 验证文件格式:打开userCookies.json,确认是数组结构(开头[,结尾]),每个元素包含name、value、domain等必要字段,示例结构:
      [
        {"name": "session_id", "value": "abc123", "domain": ".your-site.com", "path": "/", "expires": 1720000000, "httpOnly": true, "secure": true}
      ]
      
    2. 检查文件编码:读取文件时用UTF-8编码,避免乱码导致解析失败,C#代码示例:
      var cookiesJson = File.ReadAllText("userCookies.json", Encoding.UTF8);
      
    3. 清理JS导出的冗余内容:如果是从JavaScript Playwright导出的文件,删掉可能存在的尾逗号(C# JSON序列化器不允许这种语法)。

二、处理'Microsoft.Playwright.IBrowser接口无法解析'错误

  • 问题根源:Playwright依赖未正确安装,或者初始化Browser的方式错误。
  • 解决步骤:
    1. 确认依赖安装:确保已安装Microsoft.Playwright NuGet包,并且运行过playwright install命令(安装浏览器驱动)。
    2. 正确初始化Browser:必须通过Playwright实例的浏览器类型(Chromium/Firefox/WebKit)启动,不能直接实例化IBrowser,示例代码:
      using var playwright = await Playwright.CreateAsync();
      await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
      {
          Headless = false
      });
      
    3. 依赖注入场景:如果用DI,先注册Playwright服务,再通过构造函数注入IPlaywright和IBrowserType来启动浏览器:
      // 注册服务
      services.AddPlaywright();
      // 构造函数注入
      public YourService(IPlaywright playwright, IBrowserType browserType)
      {
          _browser = await browserType.LaunchAsync();
      }
      

完整的加载Cookies示例代码

using Microsoft.Playwright;
using System.Text.Json;
using System.Text;

// 初始化Playwright与浏览器
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Headless = false
});

// 读取并解析Cookies文件
var cookiesJson = File.ReadAllText("userCookies.json", Encoding.UTF8);
var cookies = JsonSerializer.Deserialize<List<Cookie>>(cookiesJson);

// 创建上下文并加载Cookies
var context = await browser.NewContextAsync();
await context.AddCookiesAsync(cookies);

// 打开目标页面,已自动处于登录状态
var page = await context.NewPageAsync();
await page.GotoAsync("https://your-target-site.com");

内容的提问来源于stack exchange,提问作者ramiro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 18:55:29