Экспорт куки в JSON с помощью C#?

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
134
Благодарностей
35
Баллы
28
Всем привет,

Я использую ZennoPoster для автоматизации некоторых задач и мне нужно экспортировать cookies сеанса браузера в файл JSON. Ранее я делал это вручную через GUI ZennoPoster, который создает файл JSON в правильном формате. Однако я хочу автоматизировать этот процесс с помощью кода C# в ZennoPoster.

Вот код C#, который я реализовал до сих пор:

C#:
// 

// Export Cookies to a File

// 1. Define the file path
string filePath = $@"C:\Path\To\Profile\{project.Variables["Account_Name"].Value}\cookies.json";

// 2. Ensure the directory exists, if not, create it
string directoryPath = Path.GetDirectoryName(filePath);
if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
}

// 3. Export cookies and convert them to JSON format
var cookieContainer = project.Profile.CookieContainer;
var cookies = cookieContainer.Get(""); // Get all cookies
var cookieList = cookies.Select(cookie => new
{
    domain = cookie.Host,
    expirationDate = cookie.Expiry == DateTime.MinValue ? (double?)null : new DateTimeOffset(cookie.Expiry).ToUnixTimeSeconds(),
    hostOnly = !cookie.IsDomain,
    httpOnly = cookie.IsHttpOnly,
    name = cookie.Name,
    path = cookie.Path,
    sameSite = cookie.SameSite.ToString(),
    secure = cookie.IsSecure,
    session = cookie.IsSession,
    storeId = (string)null,
    value = cookie.Value,
    id = cookie.GetHashCode() // Unique ID based on cookie hash
}).ToList();

// Serialize to JSON using System.Text.Json
string cookiesJson = JsonSerializer.Serialize(cookieList, new JsonSerializerOptions { WriteIndented = true });

// 4. Write the exported cookies to the file
File.WriteAllText(filePath, cookiesJson);

// 5. Log to confirm the export
project.SendToLog($"Cookies have been exported to the file: {filePath}", ZLog.Info, false, ZColor.Green);
Несмотря на мои усилия, созданный файл не соответствует ожидаемому формату JSON и содержит неструктурированный текст. Я также столкнулся с ошибками компиляции, связанными со ссылками на сборки.

Вот мои конкретные вопросы:
1. Как я могу достичь правильного формата JSON, как в GUI ZennoPoster?
2. Есть ли специфические методы или библиотеки, которые я должен использовать в ZennoPoster для этой задачи?
3. Есть ли у кого-нибудь рабочий пример кода C# для экспорта cookies в том же формате, что и GUI?

Я искал в документации, но не нашел решения. Если есть соответствующий раздел в документации, который я мог пропустить, буду признателен за ссылку на него.

Также прошу прощения за возможные ошибки в русском языке, так как это не мой родной язык, и я только начинаю изучать программирование.

Заранее спасибо за вашу помощь и предложения!

С уважением,
 

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
733
Благодарностей
485
Баллы
63
Всем привет,

Я использую ZennoPoster для автоматизации некоторых задач и мне нужно экспортировать cookies сеанса браузера в файл JSON. Ранее я делал это вручную через GUI ZennoPoster, который создает файл JSON в правильном формате. Однако я хочу автоматизировать этот процесс с помощью кода C# в ZennoPoster.

Вот код C#, который я реализовал до сих пор:

C#:
//

// Export Cookies to a File

// 1. Define the file path
string filePath = $@"C:\Path\To\Profile\{project.Variables["Account_Name"].Value}\cookies.json";


// 2. Ensure the directory exists, if not, create it
string directoryPath = Path.GetDirectoryName(filePath);
if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
}

// 3. Export cookies and convert them to JSON format
var cookieContainer = project.Profile.CookieContainer;
var cookies = cookieContainer.Get(""); // Get all cookies
var cookieList = cookies.Select(cookie => new
{
    domain = cookie.Host,
    expirationDate = cookie.Expiry == DateTime.MinValue ? (double?)null : new DateTimeOffset(cookie.Expiry).ToUnixTimeSeconds(),
    hostOnly = !cookie.IsDomain,
    httpOnly = cookie.IsHttpOnly,
    name = cookie.Name,
    path = cookie.Path,
    sameSite = cookie.SameSite.ToString(),
    secure = cookie.IsSecure,
    session = cookie.IsSession,
    storeId = (string)null,
    value = cookie.Value,
    id = cookie.GetHashCode() // Unique ID based on cookie hash
}).ToList();

// Serialize to JSON using System.Text.Json
string cookiesJson = JsonSerializer.Serialize(cookieList, new JsonSerializerOptions { WriteIndented = true });

// 4. Write the exported cookies to the file
File.WriteAllText(filePath, cookiesJson);

// 5. Log to confirm the export
project.SendToLog($"Cookies have been exported to the file: {filePath}", ZLog.Info, false, ZColor.Green);
Несмотря на мои усилия, созданный файл не соответствует ожидаемому формату JSON и содержит неструктурированный текст. Я также столкнулся с ошибками компиляции, связанными со ссылками на сборки.

Вот мои конкретные вопросы:
1. Как я могу достичь правильного формата JSON, как в GUI ZennoPoster?
2. Есть ли специфические методы или библиотеки, которые я должен использовать в ZennoPoster для этой задачи?
3. Есть ли у кого-нибудь рабочий пример кода C# для экспорта cookies в том же формате, что и GUI?

Я искал в документации, но не нашел решения. Если есть соответствующий раздел в документации, который я мог пропустить, буду признателен за ссылку на него.

Также прошу прощения за возможные ошибки в русском языке, так как это не мой родной язык, и я только начинаю изучать программирование.

Заранее спасибо за вашу помощь и предложения!

С уважением,
Попробуйте вот так:

C#:
//
// Export Cookies to a File

// 1. Define the file path
string filePath = $@"C:\Path\To\Profile\{project.Variables["Account_Name"].Value}\cookies.json";

// 2. Ensure the directory exists, if not, create it
string directoryPath = Path.GetDirectoryName(filePath);
if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
}

// 3. Export cookies and convert them to JSON format
var cookieContainer = project.Profile.CookieContainer;
var domains = cookieContainer.Domains;

foreach (var domain in domains)
{
    var cookies = cookieContainer.Get(domain);
    var cookieList = cookies.Select(cookie => new
                                    {
                                        domain = cookie.Host,
                                        expirationDate = cookie.Expiry == DateTime.MinValue ? (double?)null : new DateTimeOffset(cookie.Expiry).ToUnixTimeSeconds(),
                                        hostOnly = !cookie.IsDomain,
                                        httpOnly = cookie.IsHttpOnly,
                                        name = cookie.Name,
                                        path = cookie.Path,
                                        sameSite = cookie.SameSite.ToString(),
                                        secure = cookie.IsSecure,
                                        session = cookie.IsSession,
                                        storeId = (string)null,
                                        value = cookie.Value,
                                        id = cookie.GetHashCode() // Unique ID based on cookie hash
                                        }).ToList();

    // Serialize to JSON using System.Text.Json
    string cookiesJson = Global.ZennoLab.Json.JsonConvert.SerializeObject(cookies, Global.ZennoLab.Json.Formatting.Indented);

    // 4. Write the exported cookies to the file
    File.AppendAllText(filePath, cookiesJson);
}




// 5. Log to confirm the export
project.SendToLog($"Cookies have been exported to the file: {filePath}", ZennoLab.InterfacesLibrary.Enums.Log.LogType.Info, false, ZennoLab.InterfacesLibrary.Enums.Log.LogColor.Green);
 
Последнее редактирование:

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
134
Благодарностей
35
Баллы
28
спасибо большое ты лучший!
 

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
134
Благодарностей
35
Баллы
28
Я просматриваю вашу телеграмму, большое спасибо, это выглядит очень интересно, хотя, конечно, я немного ограничен, потому что мне приходится переводить все с помощью Google, но можно сказать наверняка, что для Зенона на русском языке доступно гораздо больше информации и ценности, чем На французском,)
 
  • Спасибо
Реакции: Dmitriy Ka

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)