SH
Привет подскажите пожалуйста создаю page и делают setCookie, потом внутри через evaluate делаю через fetch post запрос, он не будет в себе куки содержать от страницы?
SH
Будет, если домены совпадают.
Вот блин, а я же могу при переключении таба на странице определить пост запрос и изменить в нем пост дата? У меня проблема с получением инстаграм рилсов, раньше все работало через фетч
SH
Подскажите пожалуйста, я с помощью интерсептора перехватываю запроса, мне в ответе приходит вот это
SH
Но в page.on response приходит совершенно другое
SH
В чем проблема? по факту приходит status 200, ответ тоже в браузере в network правильный, но в page.on response, как мне получить именно ответ который отдается выше на скрине ?
SH
Что-нибудь из этого: await res.body() await res.text() await res.json()
хмм странно, res.text и res.json возвращают тоже самое, а res.body нет
Alhimik
хмм странно, res.text и res.json возвращают тоже самое, а res.body нет
body возвращает буфер, тебе его нужно к строке привести, если нужно. А как у тебя res.json возвращает ответ? У тебя же там невалидный json приходит (что-то вроде защиты в начале).
SH
body возвращает буфер, тебе его нужно к строке привести, если нужно. А как у тебя res.json возвращает ответ? У тебя же там невалидный json приходит (что-то вроде защиты в начале).
да приходит неправильный, но должен же приходить нормальный ответ?) что-то я запутался. даже если я из буфера привожу в текст возращает вот этот ответ который выше
Alhimik
да приходит неправильный, но должен же приходить нормальный ответ?) что-то я запутался. даже если я из буфера привожу в текст возращает вот этот ответ который выше
Это защита от того чтобы JSON не подгружали как JS. Если ты его как JS попробуешь подключить, то выполнится бесконечный цикл. Если тебе из него JSON нужно получить, то просто сделай слайс и обрежь этот цикл. А потом уже распарсить можно будет как json.
Alhimik
а понял, json я сделал валидным, но к сожалению там все равно не та информация, должен возвращаться массив постов
Значит не то что-то перехватываешь. Ответ должен быть тот же что ты видишь в консоли разработчика.
Anonymous
Всем привет
Влад
Парни, а почему у меня в attributs нету ключя со ссылкой на мою картинку ?. Я просто в своем проекте при обращении через api к модели получаю все атрибуты кроми картинки, почему там ? я чтото делаю не правельно ?
Влад
вот как выглядят эти атрибуты в консоле (которые я получаю)
Влад
а вот как получаю атрибуты из api
Влад
Вопрос в том - почему у меня не отображаеться атрибут "ImgHeader" со ссылкой на картинку ?
Влад
охрана - отмена. Я уже нашол решения на свой вопрос. При запросе к api в GET параметре нужно добавить "?populate=*"
Влад
😎
Black_Yuzia
Всем привет. Есть норм способ сохранять все куки и прочее (localstorage и тд.) после перезапуска puppeteer? Нашел это - https://stackoverflow.com/questions/56514877/how-to-save-cookies-and-load-it-in-another-puppeteer-session Но это не то что мне надо. Тут как минимум на 1 страницу сохраняют. А мне надо все страницы.
Black_Yuzia
У меня указана userDataDir: "./puppeteer-userdata" Но я чет не вижу чтобы это влияло на куки
🦋noteee
Подскажите, пожалуйста, в чем проблема. Устанавливаю userDataDir, далее прохожу авторизацию на сайте. Данные авторизации 100% хранятся в cookies. Сразу, после прохождения авторизации, закрываю браузер и пробую открыть его снова. Авторизацию просит повторно. Если сохранять cookies отдельно, и каждый раз устанавливать их вручную — авторизация сохраняется.
🦋noteee
папка userDataDir выглядит вот так после авторизации
🦋noteee
Возможно то, что userDataDir не сохраняет cookies или какие то другие данные?
Andrey
нужно писать свою реализацию для сохранения кук куда либо
🦋noteee
Andrey
да
🦋noteee
да
Интересный момент, о котором нигде не сказано. Имеются ли ещё такие моменты, которые не захватывает userDataDir?
Andrey
потому что это хромиум, браузеры на его основе могут хранить их по своемк
🦋noteee
Сюрпризы в дальнейшем не особо нужны)
Black_Yuzia
А где
ибо судя по тому что находится, хранится как раз таки в юзер дате
Black_Yuzia
ибо судя по тому что находится, хранится как раз таки в юзер дате
Кстати. Судя по всему он все таки сохраняет их в userdata. Только я не понял пока КАК именно. Т.е. при изменении их или как... ибо я вручную редактировал куки. Они сохранились. А те что выдаются сайтом - нет.
Black_Yuzia
папка userDataDir выглядит вот так после авторизации
Нашел кстати плагин https://github.com/clouedoc/puppeteer-extra-plugin-session Тут вроде как можно хранить сразу куки (или локалстор и тд.) сразу со всех сайтов. Но не разбирался пока. Может то что нам надо. А может и нет 👀
🦋noteee
Нашел кстати плагин https://github.com/clouedoc/puppeteer-extra-plugin-session Тут вроде как можно хранить сразу куки (или локалстор и тд.) сразу со всех сайтов. Но не разбирался пока. Может то что нам надо. А может и нет 👀
Впервые вижу пока. Да сохранять куки отдельно — вообще не проблема. Проблема в том, что таких заведомо скрытых сюрпризов вполне вероятно может быть несколько
Black_Yuzia
Ну, кстати странно что в userdata почему-то не хранятся все куки. Надо посмотреть документацию. Почему и какого хрена
Black_Yuzia
Ну, кстати странно что в userdata почему-то не хранятся все куки. Надо посмотреть документацию. Почему и какого хрена
Хмм. Хмм. Я не знаю почему. Но теперь у меня хранит логи даже после перезапуска puppeteer.
Black_Yuzia
тфю, куки
Black_Yuzia
Хмм. Вроде сохраняются при перезапуске.
Black_Yuzia
Логи или куки
А у тебя они не сохраняются нигде?
🦋noteee
А у тебя они не сохраняются нигде?
Неа. Отдельно сохраняю
Black_Yuzia
Неа. Отдельно сохраняю
а у тебя приложение где запускается? в докере или нет?
🦋noteee
Если ты в докере запускаешь тебе ещё нужно будет прокинуть volume до папки с кэшем
Black_Yuzia
Кстати. Интересный момент. У меня на проде (линукс - докер) почему-то архитектура папок не совпадает с локальной (на винде) А нет, это я лох. Забыл что в Default зайти надо еще А НЕТ. Лох не я. Я внутри Default но архитектура папок разная 👀 Ладно. Потом гляну почему так
Alhimik
Подскажите, пожалуйста, в чем проблема. Устанавливаю userDataDir, далее прохожу авторизацию на сайте. Данные авторизации 100% хранятся в cookies. Сразу, после прохождения авторизации, закрываю браузер и пробую открыть его снова. Авторизацию просит повторно. Если сохранять cookies отдельно, и каждый раз устанавливать их вручную — авторизация сохраняется.
Есть постоянные куки, которые хранятся до даты, указанной в Expires. А есть сессионные куки, которые хранятся на время сессии, при закрытии браузера они не сохраняются. Вероятно у тебя Session. А так в userDataDir сохраняется всё тоже самое что и при классическом использовании браузера.
Alhimik
Сессионные куки нужно сохранять и устанавливать вручную, разумеется.
🦋noteee
Сессионные куки нужно сохранять и устанавливать вручную, разумеется.
А в обычном браузере сессионные куки тоже обновляются при закрытии браузера?
Alhimik
А в обычном браузере сессионные куки тоже обновляются при закрытии браузера?
Это и есть "обычный браузер". Никаких отличий нет в этом плане. Сессионные куки вообще могут на диск не сохраняться, а храниться только в памяти. Хотя, вроде видел где-то в обсуждениях, что некоторые браузеры нарушают этот принцип и хранят сессионные куки между перезапусками.
🦋noteee
Для начала проверь, сессионные там куки или нет.
Добро. Завтра дам ответ. Спасибо.
🅰️nimeCoder
А в чем проблема просто получить, сериализовать и сохранить куки, а потом когда надо перейти с goto сделать setcookie и переазгрузить страницу)))
🦋noteee
А в чем проблема просто получить, сериализовать и сохранить куки, а потом когда надо перейти с goto сделать setcookie и переазгрузить страницу)))
Половина авторизованных данных хранится вообще неизвестно где (вероятнее local storage) и если использовать только куки, сессия умирает спустя пару часов
🅰️nimeCoder
Можно в принципе и его сохранить) Явно взять стащить и сохранить, там же обычный key value
🦋noteee
Добро. Завтра дам ответ. Спасибо.
Alhimik — ответ по вчерашнему вопросу. 1. Cookie не Session. В этом плане все нормально. 2. Сразу после авторизации закрывать браузер нельзя) Не все cookie успевают подтягиваться. Проблема была в том, что страница после авторизации не успевала загрузиться до конца, видимо ещё не все куки сформировались, поэтому после перезапуска браузера авторизация слетала. Решение: Ждать завершения загрузки страницы, по окончанию авторизации, а только затем закрывать браузер. Большое спасибо! Приятно видеть, что библиотеку поддерживают.
Umidjon
У меня есть e2e-тесты, которые успешно проходят при запуске через gulp. Однако, когда я пытаюсь получить покрытие кода через gulp, я получаю непредвиденную ошибку "Error: Evaluation failed: ReferenceError: cov_2os11p00jv is not defined at pptr://puppeteer_evaluation_script:1:16". Как я могу решить эту проблему? Nodejs - 18.14.0 npm - 9.3.1 puppeteer -19.7.2
🦋noteee
Подскажите, пожалуйста, в чем проблема?
🦋noteee
Roman
После обновления папетира до последней версии столкнулся с такой проблемой. Из решений использую указание пути к хрому, в конфиге. То есть можно попробовать добавить в launch конфиг executablePath: “path/to/Google Chrome”
Harish
Can someone help me to drag and drop cards using puppeteer js
P
тут можно искать испольнителя на выполнение задачи?
Meharana
Hi Puppeteer recorder is deprecated Can anyone tell me the alternate solution to record puppeteer script
Meharana
Instead chrome extension
Meharana
I need to select current year from drop-down list
Meharana
I'm using this code but its not working
Roman
I'm using this code but its not working
You could catch current year after dropdown is expanded const listItem = await page.waitForXPath(`//*[contains(@id, "basic_year")]//*[contains(text(), "${currentYear}”)]`); await listItem.click()
Meharana
No its not working
Meharana
Meharana
How to use title method which contains current year
Roman
How to use title method which contains current year
could you define class for whole list? It will be parent selector and allow to catch child - list item with current year