- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 867
- Баллы
- 113
На этот раз совсем короткая заметка по поводу работы с куками в Зенно Постере. У меня есть такие кейсы, что я в первый запуск шаблона авторизуюсь в браузере и кладу куки в файл, а при следующих запусках этого же проекта - всё работает под этими же куками (без использования профиля). Для таких финтов есть специальные удобные методы в ZennoPoster.
С помощью такого тривиального кода можно взять из браузера зенки куки сразу для двух сайтов и передать результат в переменную. Это очень удобно, но естественно, что не обязательно использовать куки от двух и более сайтов. Чтобы прочитать из браузера куки только для одного сайта - просто удалите из вышеупомянутого кода вторую строку.
Далее я записываю содержимое кукисов в файл, но также их можно использовать и в GET/POST кубике. Для этого нужно вставить переменную (в которую передали результат выполнения предыдущего сниппета) в поле "Cookies" во вкладке "Дополнительно" в GET/POST кубике. И всё, можно точно так же выполнять все действия с сайтом из под уже известных cookies. Офигенно
А вот чтобы прочитать куки из файла и использовать их в браузере - нужно передать имя файла с кукисами с помощью переменной cookies_file в следующий C# код:
После такой манипуляции куки из файла читаются и записываются в браузер. Это ещё более удобно, не обязательно хранить весь профиль, когда можно использовать только куки для сайта (если он тупенький и не разлогинит вас из-за не соответствия UA и других параметров).
PS: в зенке 5.10.0.0 добавился метод instance.SetCookie(String) - с помощью его можно загружать куки из строки в браузер, а не из файла в браузер. Это иногда удобнее, но не стоит забывать, что если вы делаете шаблоны для массового использования, то у кого-то может стоять версия ниже 5.10. Поэтому, имхо, лучше использовать старый добрый метод instance.LoadCookie.
Код:
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);
PS: в зенке 5.10.0.0 добавился метод instance.SetCookie(String) - с помощью его можно загружать куки из строки в браузер, а не из файла в браузер. Это иногда удобнее, но не стоит забывать, что если вы делаете шаблоны для массового использования, то у кого-то может стоять версия ниже 5.10. Поэтому, имхо, лучше использовать старый добрый метод instance.LoadCookie.