Получить куки с браузера

Yurka

Client
Регистрация
27.05.2021
Сообщения
16
Благодарностей
1
Баллы
3
Долгое время использовал метод из этого топика. Но набросал себе конвертор куки, который дергал в минуту тысячу профилей зенки в безбраузерном режиме и сохранял с них куки в JSON строку. Код из топика не подошел, так как в нем JS с требованием браузерного режима, а в таком режиме в минуту грузит максимум 20 профилей а не тысячу. А родной кубик зенки оказывается часто невалидный формат куки экспортирует и в итоге они не импортируются плагинами типа Cookiebro. В итоге покурил форум и с кусков кода сделал решение на C#, но оно требует библиотеку Newtonsoft.Json. кому сложно ее найти то вот другой пример шаблона с уже подлеченной и файл DLL. А вот код для работы с куки:
C#:
//Парсим JsonToNetscape-куки с активного профиля (или с переменной грузите):
string NetscapeCookie = instance.GetCookie("", false);
//если шаблон безбраузерный, то только с переменной берите, а в переменную суйте кубиком "Экспорт>Переменная>NetScape".
//Добавляем наши строки с JsonToNetscape-куки в список:
var temp_list = new List<string>();
string[] lines = NetscapeCookie.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
temp_list.AddRange(lines);
temp_list.RemoveAll(x => x == string.Empty);
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
// Создаем Json масив (пока пустой):
JArray Json_Cookie = new JArray();
// в цикле пробегаемся по списку с куки и каждую строку разбиваем на мелкие части и добавляем в наш массив:
for (int i=0; i < temp_list.Count; i++){
    string[] NetscapeCookie_Site_i = Regex.Split(temp_list[i], "\t").ToArray();
    JObject JCookie_Site_i = new JObject();
    project.SendInfoToLog(i.ToString() + ", домен: " + NetscapeCookie_Site_i[0], false);
    JCookie_Site_i["domain"] = NetscapeCookie_Site_i[0];
    JCookie_Site_i["httpOnly"] = Convert.ToBoolean(NetscapeCookie_Site_i[1]);
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    JCookie_Site_i["secure"] = Convert.ToBoolean(NetscapeCookie_Site_i[3]);
    // парсим есть ли дата в куки и переводим ее в UNIX TIME:
    if (NetscapeCookie_Site_i[4].Length>5) {    
        DateTime date = Convert.ToDateTime(NetscapeCookie_Site_i[4], new System.Globalization.CultureInfo("en-EN"));
        int unix_Seconds = (int)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
        JCookie_Site_i["expirationDate"] = unix_Seconds;
    }
    else {
        // если даты нет, то не добавляем ее. Либо можете какую-то левую дату вставлять, хз как лучше.
    }
    JCookie_Site_i["name"] = NetscapeCookie_Site_i[5];
    JCookie_Site_i["value"] = NetscapeCookie_Site_i[6];
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    //все это добро с мелких кук добавляем в один JSON-блок:
    Json_Cookie.Add(JCookie_Site_i);
}
//вернет результат в формате JSON в 1 строку:
return JsonConvert.SerializeObject(Json_Cookie);
//если надо красиво в столбик то используйте: return Json_Cookie.ToString();
Подскажите как правильно кубик использовать, дополнительные dll закинул. В коде нужно что-то править? Если запускаю как есть, выдает ошибку.
93535
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Подскажите как правильно кубик использовать, дополнительные dll закинул. В коде нужно что-то править? Если запускаю как есть, выдает ошибку.
Посмотреть вложение 93535
Выглядит будто DLL не подключены или файл не туда скинули. Если использовали тот мой шаблон из примера, значит скорее всего второй вариант.
 

Yurka

Client
Регистрация
27.05.2021
Сообщения
16
Благодарностей
1
Баллы
3
Выглядит будто DLL не подключены или файл не туда скинули. Если использовали тот мой шаблон из примера, значит скорее всего второй вариант.
Да вроде туда
93537
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Подскажите как правильно кубик использовать, дополнительные dll закинул. В коде нужно что-то править? Если запускаю как есть, выдает ошибку.
Посмотреть вложение 93535
Если речь о коде, который на предыдущей страничке, нужно прописать полностью путь к Global.ZennoLab.Json.Linq - и тогда не нужно будет никакие библиотеки использовать отдельно (Зенно уже содержит эти библиотеки в себе).
Пример:
C#:
//Парсим JsonToNetscape-куки с активного профиля (или с переменной грузите):
string NetscapeCookie = instance.GetCookie("", false);
//если шаблон безбраузерный, то только с переменной берите, а в переменную суйте кубиком "Экспорт>Переменная>NetScape".
//Добавляем наши строки с JsonToNetscape-куки в список:
var temp_list = new List<string>();
string[] lines = NetscapeCookie.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
temp_list.AddRange(lines);
temp_list.RemoveAll(x => x == string.Empty);
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
// Создаем Json масив (пока пустой):
var Json_Cookie = new Global.ZennoLab.Json.Linq.JArray();
// в цикле пробегаемся по списку с куки и каждую строку разбиваем на мелкие части и добавляем в наш массив:
for (int i=0; i < temp_list.Count; i++){
    string[] NetscapeCookie_Site_i = Regex.Split(temp_list[i], "\t").ToArray();
    var JCookie_Site_i = new Global.ZennoLab.Json.Linq.JObject();
    project.SendInfoToLog(i.ToString() + ", домен: " + NetscapeCookie_Site_i[0], false);
    JCookie_Site_i["domain"] = NetscapeCookie_Site_i[0];
    JCookie_Site_i["httpOnly"] = Convert.ToBoolean(NetscapeCookie_Site_i[1]);
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    JCookie_Site_i["secure"] = Convert.ToBoolean(NetscapeCookie_Site_i[3]);
    // парсим есть ли дата в куки и переводим ее в UNIX TIME:
    if (NetscapeCookie_Site_i[4].Length>5) {    
        DateTime date = Convert.ToDateTime(NetscapeCookie_Site_i[4], new System.Globalization.CultureInfo("en-EN"));
        int unix_Seconds = (int)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
        JCookie_Site_i["expirationDate"] = unix_Seconds;
    }
    else {
        // если даты нет, то не добавляем ее. Либо можете какую-то левую дату вставлять, хз как лучше.
    }
    JCookie_Site_i["name"] = NetscapeCookie_Site_i[5];
    JCookie_Site_i["value"] = NetscapeCookie_Site_i[6];
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    //все это добро с мелких кук добавляем в один JSON-блок:
    Json_Cookie.Add(JCookie_Site_i);
}
//вернет результат в формате JSON в 1 строку:
return Global.ZennoLab.Json.JsonConvert.SerializeObject(Json_Cookie);
//если надо красиво в столбик то используйте: return Json_Cookie.ToString();
 
Последнее редактирование:
  • Спасибо
Реакции: todayer и orka13

Yurka

Client
Регистрация
27.05.2021
Сообщения
16
Благодарностей
1
Баллы
3
Если речь о коде, который на предыдущей страничке, нужно прописать полностью путь к Global.ZennoLab.Json.Linq - и тогда не нужно будет никакие библиотеки использовать отдельно (Зенно уже содержит эти библиотеки в себе).
Пример:
C#:
//Парсим JsonToNetscape-куки с активного профиля (или с переменной грузите):
string NetscapeCookie = instance.GetCookie("", false);
//если шаблон безбраузерный, то только с переменной берите, а в переменную суйте кубиком "Экспорт>Переменная>NetScape".
//Добавляем наши строки с JsonToNetscape-куки в список:
var temp_list = new List<string>();
string[] lines = NetscapeCookie.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
temp_list.AddRange(lines);
temp_list.RemoveAll(x => x == string.Empty);
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
// Создаем Json масив (пока пустой):
var Json_Cookie = new Global.ZennoLab.Json.Linq.JArray();
// в цикле пробегаемся по списку с куки и каждую строку разбиваем на мелкие части и добавляем в наш массив:
for (int i=0; i < temp_list.Count; i++){
    string[] NetscapeCookie_Site_i = Regex.Split(temp_list[i], "\t").ToArray();
    var JCookie_Site_i = new Global.ZennoLab.Json.Linq.JObject();
    project.SendInfoToLog(i.ToString() + ", домен: " + NetscapeCookie_Site_i[0], false);
    JCookie_Site_i["domain"] = NetscapeCookie_Site_i[0];
    JCookie_Site_i["httpOnly"] = Convert.ToBoolean(NetscapeCookie_Site_i[1]);
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    JCookie_Site_i["secure"] = Convert.ToBoolean(NetscapeCookie_Site_i[3]);
    // парсим есть ли дата в куки и переводим ее в UNIX TIME:
    if (NetscapeCookie_Site_i[4].Length>5) {    
        DateTime date = Convert.ToDateTime(NetscapeCookie_Site_i[4], new System.Globalization.CultureInfo("en-EN"));
        int unix_Seconds = (int)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
        JCookie_Site_i["expirationDate"] = unix_Seconds;
    }
    else {
        // если даты нет, то не добавляем ее. Либо можете какую-то левую дату вставлять, хз как лучше.
    }
    JCookie_Site_i["name"] = NetscapeCookie_Site_i[5];
    JCookie_Site_i["value"] = NetscapeCookie_Site_i[6];
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    //все это добро с мелких кук добавляем в один JSON-блок:
    Json_Cookie.Add(JCookie_Site_i);
}
//вернет результат в формате JSON в 1 строку:
return Global.ZennoLab.Json.JsonConvert.SerializeObject(Json_Cookie);
//если надо красиво в столбик то используйте: return Json_Cookie.ToString();
Если не сложно, носом тыкните куда писать)
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Если не сложно, носом тыкните куда писать)
Сравните код, который я использовал в предыдущем сообщении, и код на предыдущей страничке.
Строки 12, 16, 38.
В своем варианте я уже добавил рекомендуемый вариант исправления и проверил на работоспособность.
 
  • Спасибо
Реакции: Yurka

Yurka

Client
Регистрация
27.05.2021
Сообщения
16
Благодарностей
1
Баллы
3
Если речь о коде, который на предыдущей страничке, нужно прописать полностью путь к Global.ZennoLab.Json.Linq - и тогда не нужно будет никакие библиотеки использовать отдельно (Зенно уже содержит эти библиотеки в себе).
Пример:
C#:
//Парсим JsonToNetscape-куки с активного профиля (или с переменной грузите):
string NetscapeCookie = instance.GetCookie("", false);
//если шаблон безбраузерный, то только с переменной берите, а в переменную суйте кубиком "Экспорт>Переменная>NetScape".
//Добавляем наши строки с JsonToNetscape-куки в список:
var temp_list = new List<string>();
string[] lines = NetscapeCookie.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
temp_list.AddRange(lines);
temp_list.RemoveAll(x => x == string.Empty);
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
// Создаем Json масив (пока пустой):
var Json_Cookie = new Global.ZennoLab.Json.Linq.JArray();
// в цикле пробегаемся по списку с куки и каждую строку разбиваем на мелкие части и добавляем в наш массив:
for (int i=0; i < temp_list.Count; i++){
    string[] NetscapeCookie_Site_i = Regex.Split(temp_list[i], "\t").ToArray();
    var JCookie_Site_i = new Global.ZennoLab.Json.Linq.JObject();
    project.SendInfoToLog(i.ToString() + ", домен: " + NetscapeCookie_Site_i[0], false);
    JCookie_Site_i["domain"] = NetscapeCookie_Site_i[0];
    JCookie_Site_i["httpOnly"] = Convert.ToBoolean(NetscapeCookie_Site_i[1]);
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    JCookie_Site_i["secure"] = Convert.ToBoolean(NetscapeCookie_Site_i[3]);
    // парсим есть ли дата в куки и переводим ее в UNIX TIME:
    if (NetscapeCookie_Site_i[4].Length>5) {    
        DateTime date = Convert.ToDateTime(NetscapeCookie_Site_i[4], new System.Globalization.CultureInfo("en-EN"));
        int unix_Seconds = (int)(date.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
        JCookie_Site_i["expirationDate"] = unix_Seconds;
    }
    else {
        // если даты нет, то не добавляем ее. Либо можете какую-то левую дату вставлять, хз как лучше.
    }
    JCookie_Site_i["name"] = NetscapeCookie_Site_i[5];
    JCookie_Site_i["value"] = NetscapeCookie_Site_i[6];
    JCookie_Site_i["path"] = NetscapeCookie_Site_i[2];
    //все это добро с мелких кук добавляем в один JSON-блок:
    Json_Cookie.Add(JCookie_Site_i);
}
//вернет результат в формате JSON в 1 строку:
return Global.ZennoLab.Json.JsonConvert.SerializeObject(Json_Cookie);
//если надо красиво в столбик то используйте: return Json_Cookie.ToString();
Низкий поклон)) Благодарю!
 

Yurka

Client
Регистрация
27.05.2021
Сообщения
16
Благодарностей
1
Баллы
3
Сравните код, который я использовал в предыдущем сообщении, и код на предыдущей страничке.
Строки 12, 16, 38.
В своем варианте я уже добавил рекомендуемый вариант исправления и проверил на работоспособность.
А еще можете помочь вот с этим
"
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
"

Как сделать чтобы это обходил и собирал по умолчанию все куки, текущего инстанса.
Он сейчас собирает вроде все красиво, но при импорте этих кук, нечего не происходит. Логина нет
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
А еще можете помочь вот с этим
"
// выводим в лог количество кук в списке (на 1 сайт идет по несколько кук):
project.SendInfoToLog("Кук шт.: " + temp_list.Count.ToString(), false);
"

Как сделать чтобы это обходил и собирал по умолчанию все куки, текущего инстанса.
Он сейчас собирает вроде все красиво, но при импорте этих кук, нечего не происходит. Логина нет
Создайте новую тему.
Опишите что именно Вы делаете и на каком сайте.
Какие действия нужно сделать, чтобы воспроизвести Вашу ситуацию.
Какие данные подаете на вход, что хотите получить на выходе.
Кто-то думаю сможет помочь разобраться с этим.

К сожалению, я чуть-чуть разбираюсь в C#.
Из-за чего, когда увидел проблему, которую понял что смогу помочь решить - зашел и ответил.
Но, я не представляю зачем нужны куки в этом формате и как они в дальнейшем используются и тп.
А так, как, я не смогу никак воспроизвести Вашу ситуацию на своем компьютере, то в данном вопросе, по всей видимости, никак не смогу помочь.
 

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