Работа с cookies (куками): взять из браузера и использовать в GET/POST [Дон шампиньон]

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
На этот раз совсем короткая заметка по поводу работы с куками в Зенно Постере. У меня есть такие кейсы, что я в первый запуск шаблона авторизуюсь в браузере и кладу куки в файл, а при следующих запусках этого же проекта - всё работает под этими же куками (без использования профиля). Для таких финтов есть специальные удобные методы в ZennoPoster.

Код:
var cookies = instance.GetCookie("site.com", false);
cookies += instance.GetCookie("another-site.com", false);
return cookies;
С помощью такого тривиального кода можно взять из браузера зенки куки сразу для двух сайтов и передать результат в переменную. Это очень удобно, но естественно, что не обязательно использовать куки от двух и более сайтов. Чтобы прочитать из браузера куки только для одного сайта - просто удалите из вышеупомянутого кода вторую строку.

Далее я записываю содержимое кукисов в файл, но также их можно использовать и в GET/POST кубике. Для этого нужно вставить переменную (в которую передали результат выполнения предыдущего сниппета) в поле "Cookies" во вкладке "Дополнительно" в GET/POST кубике. И всё, можно точно так же выполнять все действия с сайтом из под уже известных cookies. Офигенно :-)

А вот чтобы прочитать куки из файла и использовать их в браузере - нужно передать имя файла с кукисами с помощью переменной cookies_file в следующий C# код:

Код:
instance.LoadCookie(project.Variables["cookies_file"].Value);
После такой манипуляции куки из файла читаются и записываются в браузер. Это ещё более удобно, не обязательно хранить весь профиль, когда можно использовать только куки для сайта (если он тупенький и не разлогинит вас из-за не соответствия UA и других параметров).

PS: в зенке 5.10.0.0 добавился метод instance.SetCookie(String) - с помощью его можно загружать куки из строки в браузер, а не из файла в браузер. Это иногда удобнее, но не стоит забывать, что если вы делаете шаблоны для массового использования, то у кого-то может стоять версия ниже 5.10. Поэтому, имхо, лучше использовать старый добрый метод instance.LoadCookie.
 

ya-maker

Client
Регистрация
17.04.2012
Сообщения
111
Благодарностей
58
Баллы
28
Чтобы получить все куки, а не для конкретного домена можно использовать GetCookie без параметров.

Код:
instance.GetCookie();
 
  • Спасибо
Реакции: Metrix

ParfeniyAnton

Client
Регистрация
24.08.2014
Сообщения
300
Благодарностей
49
Баллы
28
Это используется только для того чтобы не залогиниваться каждый раз или это положительно влияет на доверие к аккаунту?
Я так понимаю, что многие сайты могут посчитать подозрительным когда пользователь логинится каждый раз с чистых кук?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Это используется только для того чтобы не залогиниваться каждый раз или это положительно влияет на доверие к аккаунту?
Я так понимаю, что многие сайты могут посчитать подозрительным когда пользователь логинится каждый раз с чистых кук?
Зависит от сайта на самом деле. Если думаешь в сторону того, чтоб не чистые куки были - смотри в сторону профилей в зенке, но там баги есть, смотри подпись у меня с описанием проблем и решением.
 

neo

Client
Регистрация
12.09.2011
Сообщения
58
Благодарностей
8
Баллы
8
Привет, можете накидать образец? никак не могу понять куда и как вставить сохраненные куки.
Захожу регаюсь или авторизуюсь, беру куки сохраняю, а далее ничего не получается сделать чтобы страница открывалась с куками без авторизации...
 

rosnordic

Client
Регистрация
18.08.2016
Сообщения
143
Благодарностей
28
Баллы
28
Шампиньон, спасибо огромное, провозился весь вечер в попытках авторизоваться посредством POST, а тут такое простое решение o_O
 

vovain

Client
Регистрация
31.07.2015
Сообщения
183
Благодарностей
2
Баллы
18
instance.SetCookie(String) как его вызвать?
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
270
Баллы
63
Вот, можно для старых версий использовать метод сохранения куки
Код:
instance.SaveCookie("путь_для_сохранения_куки");
@Lord_Alfred , a для того чтобы в POST/GET запросах эти куки использовать, надо распарсивать каждую и через точку с запятой вставлять как обычно или можно прям в таком же виде как взял использовать?
 
Последнее редактирование:

миро

Новичок
Регистрация
30.11.2017
Сообщения
9
Благодарностей
1
Баллы
3
А как вы записываете полученные скриптом куки в файл ? При использовании GET кубика с установкой в поле "Cookies" во вкладке "Дополнительно" в GET кубике {-Variable.cookies-} ничего "адекватного " не происходит
 

миро

Новичок
Регистрация
30.11.2017
Сообщения
9
Благодарностей
1
Баллы
3

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
А как вы записываете полученные скриптом куки в файл ? При использовании GET кубика с установкой в поле "Cookies" во вкладке "Дополнительно" в GET кубике {-Variable.cookies-} ничего "адекватного " не происходит
Используйте метод.
Код:
// save cookie
instance.SaveCookie("path");
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43

udder

Client
Регистрация
28.03.2017
Сообщения
595
Благодарностей
118
Баллы
43
Код:
var cookies = instance.GetCookie("yandex.ru", false);
return cookies;
Создал C# код, результат отправил в переменную Cookie, очистил в браузере кеш и куки чтобы проверить.

Создал С# код и указал имя переменной
Код:
instance.LoadCookie(project.Variables["Cookie"].Value);
Успешно выполнил, но на сайте авторзиация не произошла, что я не так сделал?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 790
Благодарностей
1 264
Баллы
113
Скорее всего формат кук не корректный.
 
  • Спасибо
Реакции: udder

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Успешно выполнил, но на сайте авторзиация не произошла, что я не так сделал?
Скорее всего формат кук не корректный.
Не могу точно сказать, но скорее всего - да. Или IP сменился и сайт из-за этого не авторизовал, например.
Формат кук меняется 2 параметром в методе GetCookie. Там true надо поставить. Какой именно нужен LoadCookie - хоть убей, не помню. А тестировать сейчас некогда.
 
  • Спасибо
Реакции: udder

maks_sim

Client
Регистрация
26.03.2015
Сообщения
182
Благодарностей
12
Баллы
18
Подскажите где взять или как выдирнуть куки, в запросе они есть как только подгружаются элементы сайта, а в ответе нету , мучаюсь уже 3 дня , что бы скинуть в переменную, эти куки постоянно меняются мне для регистрации.
 

Вложения

GREXA

Client
Регистрация
16.09.2017
Сообщения
276
Благодарностей
103
Баллы
43
Подскажите где взять или как выдирнуть куки, в запросе они есть как только подгружаются элементы сайта, а в ответе нету , мучаюсь уже 3 дня , что бы скинуть в переменную, эти куки постоянно меняются мне для регистрации.
такая же сейчас проблема
 

rosnordic

Client
Регистрация
18.08.2016
Сообщения
143
Благодарностей
28
Баллы
28
Подскажите где взять или как выдирнуть куки, в запросе они есть как только подгружаются элементы сайта, а в ответе нету , мучаюсь уже 3 дня , что бы скинуть в переменную, эти куки постоянно меняются мне для регистрации.
Куки аналитики вообще не надо передавать (_ga и проч). А так попробуйте отправлять запрос через кубик c#, подробнее можно изучить в курсе по Zennoposter от Rostonix
 

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