Pavel
Овнер передал на меня эту группу, поэтому я зарекрутил @nazarkk как второго админа и добавил бота @shieldy_bot для предотвращение спама.
Alpenveg
Круто
Pavel
упала админка на меня, да)
Pavel
развивайте сообщество и пиарьте, например.
Pavel
я не особо активный так то, чуток написал штуку одну на пуппетере
Pavel
вот https://github.com/mrdoob/three.js/tree/dev/test/e2e
Alpenveg
Ссылки на сообщество вообще где-то есть? Я просто в телеге через поиск нашел
Pavel
вроде не делали.
John
Кому надо тот найдёт
John
Кто то ботоводит Али через кукловода?
Artem
Кто то ботоводит Али через кукловода?
Если получится, отпишись в личку)
alécio
Hey friends I'm creating a bot to enter the site. After opening the popup I have 2 fields, emailAddress and password. Both have random id and only name value. The emailAddress is not completing. But the password works normally(completing). Can someone help me?
Pavel
Видео кто нибудь писал в пуппетеере?
Pavel
эта штука живая? https://github.com/clipisode/puppeteer-recorder/blob/master/index.js
Назар
ага
Назар
на маке не работает практически. Вообще там суть в том, что оно делает скриншоты 60 раз в сек и клеит потом через ffmpeg в видео. Но на маек нельзя делать скрин чаще чем раз в пол секунды вроде. И вообще скрин делать долго в любом случае.
Pavel
ну надо переписывать и дожидаться походу.
Alexander
Ребят, привет! А кто-то может знает почему в некоторых ситуациях отваливаются по таймауту такие вещи: page.waitForNavigation({ waitUntil: 'networkidle0' })
Alexander
установи другой таймаут, timeout:10000
то есть page.waitForNavigation({ waitUntil: 'networkidle0', timeout:1005000 }) должно заставить это в любом случае заработать?
Alexander
установи другой таймаут, timeout:10000
просто у меня такое ощущение, что это событие никогда не наступает, как это проверить?
Alexander
Сложные вопросы) Есть еще внутренние таймауты
Ну если смотреть по доке то там есть: load, domcontentloaded, networkidle0, networkidle2 - Еще можно нескольких событий дожидаться page.goto('http://xx', { waitUntil:['domcontentloaded', 'networkidle0'] }) или можно еще так: await page.waitFor('*') - ждать пока все элементы на странице отрисуются. Ну вот допустим у меня страничка логина, я ввожу логин и пароль и отправляют форму на сервер. Как мне дожидаться события когда все вернулось и закончился весь джаваскрипт? и почму networkidle бывает никогда не наступают? А что за внутренние таймауты?
Alexander
Сложные вопросы) Есть еще внутренние таймауты
дело в том что я не просто чето-то там скриптую, а пытаюсь измерять перформанс фронтенда, всякие там лонг таски, UserTiming, количество объектов в памяти и все такое И хочется делать все это не методом тыка, а точно знать что когда происходит.
Pavel
вот https://github.com/mrdoob/three.js/tree/dev/test/e2e
Вот тут просто набор таймаутов, что бы дождаться когда раздуплится браузер в сложных сценах.
Pavel
дело в том что я не просто чето-то там скриптую, а пытаюсь измерять перформанс фронтенда, всякие там лонг таски, UserTiming, количество объектов в памяти и все такое И хочется делать все это не методом тыка, а точно знать что когда происходит.
Попробуйте к CDP напрямую подключится и вдохновляться лайтхаусом https://github.com/GoogleChrome/lighthouse Доку по CDP к прочтению обязательно в таких задачах. Так как пуппетер лишь обертка над ней.
Pavel
CDP сессию из пуппетера довольно просто создавать и дергать апи.
Alexander
удаляются сообщения
Pavel
чего мну банит за ссылки-то?)
Похоже бот плохо настроен
Alexander
в общем, есть интересная либка гитхаб /treosh/uxm
Pavel
а что вообще эта штука измеряет?
Да просто скрины, но для webgl
Alexander
https://github.com/treosh/uxm
Pavel
/restrict
Shieldy
/restrict
Great! Now all newcomers will be able to send any type of content to this chat.
Pavel
чего мну банит за ссылки-то?)
Настроил бота норм.
Alexander
Настроил бота норм.
да, кажется работает ок.
Pavel
https://github.com/treosh/uxm
Да, тебе упороться надо с девтулзами для этого.
Pavel
Пуппетер больше для стандартных задач и у него есть уже наработки, так как популярен более менее.
Pavel
Глянь еще playwright, может тебе другие браузеры нужны. Впрочем апи очень сильно похоже, миграция возможна.
Alexander
Пуппетер больше для стандартных задач и у него есть уже наработки, так как популярен более менее.
ну он же позволяет как раз с девтулз работать и дергать там все что захочешь, правда доков ничерта нормальных нет, даже что page.metrics() возвращает не до конца понятно. ток такое минимальное описание https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagemetrics
Pavel
я так понимаю что он так же устроен как puppeteer?
Это обобщение над 3 браузерами
Pavel
Я тока ливать хотел, хотя был единственным живым админом)
Тебя сделать админом? Ты же не активен совсем был)
倫太郎
Тебя сделать админом? Ты же не активен совсем был)
Ну так и 1 сообщения в неделю было 🤷‍♂
倫太郎
А шилди я добавить и так не мог
Pavel
А шилди я добавить и так не мог
Вообщем я настроил, спама больше нет.
倫太郎
👌
Alexander
а вот кстати, не знаете где можно почитать какое-то вменяемое описание chrome trace файлов? вот этой вот всей чепухи
Alexander
я вот нашел статью, там чел замеряет сколько cpu тратится на какие-то отдельные реактовские компоненты https://calendar.perfplanet.com/2019/javascript-component-level-cpu-costs/ хочу подробнее разобраться что хром в трейс файлы пишет
DeniskaAb
А как сохранять файлы из кеша?
Alexander
Это обобщение над 3 браузерами
но кажется в нем нету такой штуки как в puppeteer, вот этих как раз page.metrics() https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagemetrics
Pavel
но кажется в нем нету такой штуки как в puppeteer, вот этих как раз page.metrics() https://github.com/puppeteer/puppeteer/blob/main/docs/api.md#pagemetrics
Я тоже остался просто в хроме, обобщить их можно, но пересечение фич будет меньше.
Alexander
А как сохранять файлы из кеша?
ну можно задать чето const browser = await puppeteer.launch({ userDataDir: './data', }); или нужно програмно к кешу обращаться?
DeniskaAb
ну можно задать чето const browser = await puppeteer.launch({ userDataDir: './data', }); или нужно програмно к кешу обращаться?
Нужно сохранить все файлы, потом очистить, перейти по ссылке и снова сохранить. И так много раз
DeniskaAb
Ещё нужно как то узнать что все файлы запрошенные страницей загрузились
Назар
Нужно сохранить все файлы, потом очистить, перейти по ссылке и снова сохранить. И так много раз
ну скорее всего можно через fs их куда то скопировать и очистить папку userDataDir
DeniskaAb
Если там скрипты подгружают?
Alexander
Так то да, а как понять что все загружено
page.waitForNavigation({ waitUntil: 'networkidle0' }) наверное
Alexander
Так то да, а как понять что все загружено
Соединений нет, значит скрипты все уже загрузили
Alexander
Кстати, никто не пробовал puppeteer использовать из дарта?)
Назар
Кстати, никто не пробовал puppeteer использовать из дарта?)
я пробовал. Там есть порт. Удобно, но вряд ли ео часто обновляют и для меня там не было нужных плагинов, а с нуля писать не хотелось.
Назар
весь папитир то пусть и тот же, но использовать другие библиотеки из npm не получиться, а аналогов нет.
John
у меня как то было) никак не мог отловить когда загружается страница.. потом нашёл что внешне хоть и загружено всё, а запрос xhr еще идет.. так что юзаю сейчас https://www.npmjs.com/package/pending-xhr-puppeteer
John
вопрос такой. есть авторизация на сайте, где могу зайти на сайт, выполнить любой запрос XHR. отливить его, дальше я этот запрос редактирую и через axios вместе с токенами и прочей шляпой посылаю. на данный момент как только токен просрочился мой запрос не рабочий становится и я не могу его менять, можно ли как то запускать кукловода, заходить на сайт, сохранять токен или передавать его в ахios и закрывать кукловода, на этом его миссия закончена будет)
John
вообщем если кому интересно вот так куки получают; const cookies = (await page.cookies()).map((cookie) => { return ${cookie.name}=${cookie.value}; }).join('; '); но как оказалось сайт к которому я обращался ему вообще пофиг на куки и на авторизацию, если знаешь какой запрос кинуть, он его проглотит, остальное вообще все равно... вот.. остаются до сих пор такие сайты.. печаль
John
Ты все АлиЭкспресс пытаешь?)
Нет. Идея Али отложена до времён пока не найду много свободных ip адресов
Alexander
а кто-нить пробовал лайтхаус из puppeteera запускать?
1
Подскажите, как правильно щёлкнуть по данному полю? Щёлкаю так, но не срабатывает selector = '#app_date' await page.waitForSelector(selector); await page.click(selector);
John
Добавил паузу длиннее 3 сек и сработало, была пауза 2 сек.
Но это же не выход.. сайт тормознет и будет 4 секунды нужная пауза