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

如何在C# Selenium中使用EditThisCookies导出的JSON Cookie

从EditThisCookies导出的JSON Cookie转换为Selenium C# Cookie对象的实现步骤

一、明确JSON字段与Selenium Cookie的对应关系

EditThisCookies导出的JSON每个Cookie条目,与Selenium的OpenQA.Selenium.Cookie类属性对应关系如下:

  • "name" → Cookie.Name(必填)
  • "value" → Cookie.Value(必填)
  • "domain" → Cookie.Domain(必填,格式如.example.com或example.com)
  • "path" → Cookie.Path(默认值为/)
  • "expirationDate" → Cookie.Expires(秒级Unix时间戳,需转换为DateTime;无此字段则为会话Cookie)
  • "secure" → Cookie.Secure(布尔值,标识是否仅通过HTTPS传输)
  • "httpOnly" → Cookie.HttpOnly(布尔值,标识是否禁止JS访问)

二、具体实现代码

1. 定义对应JSON结构的实体类

这里以System.Text.Json序列化为例,定义实体类匹配导出的JSON结构:

public class EditThisCookie
{
    public string name { get; set; }
    public string value { get; set; }
    public string domain { get; set; }
    public string path { get; set; } = "/";
    public double? expirationDate { get; set; }
    public bool secure { get; set; }
    public bool httpOnly { get; set; }
}

2. 读取TXT文件、转换并加载Cookie到Selenium

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Text.Json;

// 1. 读取存储Cookie的TXT文件内容
string cookieJsonContent = File.ReadAllText(@"C:\your-folder\cookies.txt");

// 2. 将JSON反序列化为自定义Cookie对象列表
List<EditThisCookie> rawCookies = JsonSerializer.Deserialize<List<EditThisCookie>>(cookieJsonContent);

// 3. 初始化ChromeDriver
var chromeOptions = new ChromeOptions();
// 可选:添加浏览器配置,如禁用通知弹窗等
using (IWebDriver driver = new ChromeDriver(chromeOptions))
{
    // 关键操作:必须先导航到目标站点的任意页面,否则Selenium不允许添加跨域Cookie
    driver.Navigate().GoToUrl("https://www.your-target-site.com");

    // 4. 逐个转换为Selenium Cookie并添加到会话
    foreach (var rawCookie in rawCookies)
    {
        DateTime? expires = null;
        if (rawCookie.expirationDate.HasValue)
        {
            // 将秒级Unix时间戳转换为DateTime
            expires = DateTimeOffset.FromUnixTimeSeconds((long)rawCookie.expirationDate.Value).DateTime;
        }

        var seleniumCookie = new Cookie(
            name: rawCookie.name,
            value: rawCookie.value,
            domain: rawCookie.domain,
            path: rawCookie.path,
            expires: expires,
            secure: rawCookie.secure,
            isHttpOnly: rawCookie.httpOnly
        );

        driver.Manage().Cookies.AddCookie(seleniumCookie);
    }

    // 5. 刷新页面,即可自动进入登录状态
    driver.Navigate().Refresh();
}

三、注意事项

  • 必须先访问目标站点:Selenium限制跨域Cookie添加,必须先导航到目标域名的页面后,才能添加对应Cookie。
  • 时间戳转换要准确:EditThisCookies导出的expirationDate是秒级时间戳,需用FromUnixTimeSeconds转换,不要误用毫秒级转换方法。
  • 域名格式兼容:导出的domain字段如果带前缀.(如.example.com),可直接传入Selenium,无需修改。
  • 会话Cookie处理:若JSON中无expirationDate字段,将expires设为null即可,Selenium会自动识别为会话Cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:55:16