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

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Реакции
3 883
Баллы
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.
 
Чтобы получить все куки, а не для конкретного домена можно использовать GetCookie без параметров.

Код:
Развернуть Свернуть Копировать
instance.GetCookie();
 
  • Спасибо
Реакции: Metrix
Это используется только для того чтобы не залогиниваться каждый раз или это положительно влияет на доверие к аккаунту?
Я так понимаю, что многие сайты могут посчитать подозрительным когда пользователь логинится каждый раз с чистых кук?
 
Это используется только для того чтобы не залогиниваться каждый раз или это положительно влияет на доверие к аккаунту?
Я так понимаю, что многие сайты могут посчитать подозрительным когда пользователь логинится каждый раз с чистых кук?
Зависит от сайта на самом деле. Если думаешь в сторону того, чтоб не чистые куки были - смотри в сторону профилей в зенке, но там баги есть, смотри подпись у меня с описанием проблем и решением.
 
Привет, можете накидать образец? никак не могу понять куда и как вставить сохраненные куки.
Захожу регаюсь или авторизуюсь, беру куки сохраняю, а далее ничего не получается сделать чтобы страница открывалась с куками без авторизации...
 
Шампиньон, спасибо огромное, провозился весь вечер в попытках авторизоваться посредством POST, а тут такое простое решение o_O
 
instance.SetCookie(String) как его вызвать?
 
Вот, можно для старых версий использовать метод сохранения куки
Код:
Развернуть Свернуть Копировать
instance.SaveCookie("путь_для_сохранения_куки");
@Lord_Alfred , a для того чтобы в POST/GET запросах эти куки использовать, надо распарсивать каждую и через точку с запятой вставлять как обычно или можно прям в таком же виде как взял использовать?
 
Последнее редактирование:
А как вы записываете полученные скриптом куки в файл ? При использовании GET кубика с установкой в поле "Cookies" во вкладке "Дополнительно" в GET кубике {-Variable.cookies-} ничего "адекватного " не происходит
LOVAp-Tm3RRL2R
RtDOXqz43RRLXS
 
А как вы записываете полученные скриптом куки в файл ? При использовании GET кубика с установкой в поле "Cookies" во вкладке "Дополнительно" в GET кубике {-Variable.cookies-} ничего "адекватного " не происходит
LOVAp-Tm3RRL2R
RtDOXqz43RRLXS
Используйте метод.
Код:
Развернуть Свернуть Копировать
// save cookie
instance.SaveCookie("path");
 
Код:
Развернуть Свернуть Копировать
var cookies = instance.GetCookie("yandex.ru", false);
return cookies;
Создал C# код, результат отправил в переменную Cookie, очистил в браузере кеш и куки чтобы проверить.

Создал С# код и указал имя переменной
Код:
Развернуть Свернуть Копировать
instance.LoadCookie(project.Variables["Cookie"].Value);

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

Вложения

  • kapcha.png
    kapcha.png
    17,5 KB · Просмотры: 191
Подскажите где взять или как выдирнуть куки, в запросе они есть как только подгружаются элементы сайта, а в ответе нету , мучаюсь уже 3 дня , что бы скинуть в переменную, эти куки постоянно меняются мне для регистрации.
такая же сейчас проблема
 
Подскажите где взять или как выдирнуть куки, в запросе они есть как только подгружаются элементы сайта, а в ответе нету , мучаюсь уже 3 дня , что бы скинуть в переменную, эти куки постоянно меняются мне для регистрации.
Куки аналитики вообще не надо передавать (_ga и проч). А так попробуйте отправлять запрос через кубик c#, подробнее можно изучить в курсе по Zennoposter от Rostonix
 

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