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

如何使用Selenium和C#将Cookie保存为字符串?

问题

我原本通过以下代码获取网站全部Cookie并保存到文件:

var cookies = driver.Manage().Cookies.AllCookies;

// write full path txt file
using (StreamWriter fs = new StreamWriter(@"demo.txt", true))
{
    foreach (var cookie in cookies)
    {
        fs.WriteLine(cookie.ToString());
    }
}

但尝试用以下代码读取文件内容并添加Cookie时无法正常工作:

var lines = File.ReadAllLines(@"C:\Users\flame\Desktop\demo.txt");
foreach (var line in lines)
{
    driver.Manage().Cookies.AddCookie(line);
    MessageBox.Show(line.ToString());
}

我的真实需求是:不将Cookie保存到文件,而是把目标网站的全部Cookie转为单个字符串,再通过该字符串批量添加所有Cookie,且不能使用data-dir方案。

解决方案

直接使用Cookie.ToString()得到的字符串无法被Selenium的AddCookie方法解析,因为它只是Cookie的简单字符串表示,不是可反序列化的结构化数据。正确的做法是将Cookie序列化为JSON格式的字符串,恢复时再反序列化回Cookie对象批量添加。

1. 将所有Cookie序列化为单个字符串

使用Newtonsoft.Json(需安装对应NuGet包)序列化Cookie集合:

using Newtonsoft.Json;
using OpenQA.Selenium;

// 获取当前网站所有Cookie
var cookies = driver.Manage().Cookies.AllCookies;

// 序列化为单个JSON字符串
string cookieString = JsonConvert.SerializeObject(cookies);

如果使用.NET Core/.NET 5+,也可以用内置的System.Text.Json替代:

using System.Text.Json;

string cookieString = JsonSerializer.Serialize(cookies);

2. 从字符串批量恢复并添加Cookie

将保存的字符串反序列化为Cookie集合,再逐个添加:

using Newtonsoft.Json;
using OpenQA.Selenium;

// 假设cookieString是之前保存的Cookie序列化字符串
var cookies = JsonConvert.DeserializeObject<List<Cookie>>(cookieString);

// 必须先访问目标网站的域名(Selenium不允许跨域添加Cookie)
driver.Navigate().GoToUrl("https://你的目标网站域名.com");

// 批量添加所有Cookie
foreach (var cookie in cookies)
{
    driver.Manage().Cookies.AddCookie(cookie);
}

// 刷新页面使Cookie生效
driver.Navigate().Refresh();

对应System.Text.Json的反序列化代码:

using System.Text.Json;

var cookies = JsonSerializer.Deserialize<List<Cookie>>(cookieString);

注意事项

  • 添加Cookie前必须先访问目标网站的域名,否则Selenium会抛出跨域错误
  • 序列化会完整保留Cookie的所有属性(名称、值、域名、路径、过期时间等),确保恢复后的Cookie和原Cookie一致
  • 若使用Newtonsoft.Json,需在项目中安装Newtonsoft.Json NuGet包;若用System.Text.Json,无需额外安装(.NET Core 3.0+内置)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:40:27