Назар
Нашел stealth plugin, помогло
он хороший очень кстати
Ислам
ребят, у кого ни будь есть актуальные данные сколько один браузер (одна вкладка) запущенная в headless на 30 секунд ест ОЗУ?
Gambit501
Смотря какой сайт
Ислам
понятно, спасибо
Ислам
там на фронте не тяжелый js
Ислам
какой-то проприетарный фреймворк с SSR на java
DeniskaAb
Нашел stealth plugin, помогло
От клоудфаре помогает?
Cenator 🐈
Akhmed
Пацаны, подскажите плииз
Akhmed
const text = await page.evaluate(() => document.querySelector('.sprite32 sprite32-theory').textContent); console.log(text);
Akhmed
у меня почему то не ищет по классу, при это класс есть. в чем может быть проблема
Назар
Cenator 🐈
это все одно название класса
Через точку перечисление и без пробела
Назар
это все одно название класса
это все это что? через пробел название класса?
Назар
class="sprite32 sprite32-theory"
тогда селектор будет sprite32.sprite32-theory
Назар
class= это не название класса, а список классов через пробел.
Akhmed
тогда селектор будет sprite32.sprite32-theory
ошибка ушла, но теперь возвращает пустоту
Cenator 🐈
ошибка ушла, но теперь возвращает пустоту
querySelector('[class="sprite32 sprite32-theory"]')
Akhmed
ооооо, спасибо всем, я понял свою ошибку
Pavel
Я только сейчас попробовал обновить, у меня запинена версия.
Pavel
Второго разраба подключили от гугла, потихоньку начали разгребать issues
Назар
а я хотел бота своего переключить на 3 на firefox
Назар
походу рано
Pavel
Похоже зависит от проекта, и даже от CI
Pavel
а не, открыл Github Actions там тоже феил.
Pavel
кек, false positive
Pavel
а я хотел бота своего переключить на 3 на firefox
Можешь попробовать playwright, если проект не замороченный. https://github.com/microsoft/playwright
Назар
Можешь попробовать playwright, если проект не замороченный. https://github.com/microsoft/playwright
да не, там норм все, но было бы неплохо пдф вместо скриншотов делать, и смотреть видео. Но не обязательно.
Назар
можно подключить реальный хром, но хотелось бы чтоб папитир свой использовал. Хромиум не умеет в это, думаю что з firefox получится
Pavel
Примеры: https://github.com/checkly/puppeteer-examples Recorder: https://github.com/checkly/puppeteer-recorder Owesome Puppeteer: https://github.com/transitive-bullshit/awesome-puppeteer/blob/master/readme.md Chrome CDP API: https://chromedevtools.github.io/devtools-protocol/ Playwright: https://github.com/microsoft/playwright
Назар
как заставить папитир firefox установить себе?
Назар
https://github.com/puppeteer/puppeteer/blob/master/examples/cross-browser.js
Назар
взял этот код, написал в консоль PUPPETEER_PRODUCT=firefox npm install, но не работает
Назар
а, все. Нужно удалить нод модули
Akhmed
Пацаны, а как получить доступ к iframe, который находится в iframe.
Akhmed
я вроде бы объявил первыый фрейм, пытаюсь объявить 2 фрейм, но чет не хочет он
Akhmed
const frame1 = await page.frames(); const tryItFrame1 = await frame1.find(f => f.url() === 'https://apps-583587699049242.apps.fbsbx.com/instant-bundle/2807803729278177/3611730432175412/index.html?version=142&gcgs=1&source=fbinstant-583587699049242&entry_point=www_app_bookmark&IsMobileWeb=0'); await tryItFrame1.waitForSelector('#game_iframe'); const frame2 = await tryItFrame1.frames();
Akhmed
точнее, он ругается, что нет функции frames() для фрейма, хотя мне кто-то говорил, что с frame надо работать как с page
Akhmed
Спасибо
Akhmed
Подскажите плииз, почему через раз выдает ошибку того, что frame не найден ?
Akhmed
console.log('Waiting for first frame'); page.waitForSelector('#quicksilver_player > div > div > iframe'); const frame1 = page.frames(); const tryItFrame1 = frame1.find(f => f.url() === 'https://apps-583587699049242.apps.fbsbx.com/instant-bundle/2807803729278177/3611730432175412/index.html?version=142&gcgs=1&source=fbinstant-583587699049242&entry_point=www_app_bookmark&IsMobileWeb=0'); console.log('First frame is found'); console.log('Waiting for second frame'); // tryItFrame1.waitForNavigation(); tryItFrame1.waitForSelector('#game_iframe'); const frame2 = tryItFrame1.childFrames(); const tryItFrame2 = frame2.find(f => f.id() === 'game_iframe'); console.log('Second frame is found'); tryItFrame2.click('#wnd_tt_warn_agree');
Akhmed
Andrey
await tryItFrame1.waitForSelector...
Akhmed
я убрал асинхрон, почему он может позже появляеться
Akhmed
await tryItFrame1.waitForSelector...
у меня с await тоже самое было
Akhmed
я везде убрал await, page.waitForSelector('#quicksilver_player > div > div > iframe'); ждет фрейма, который присваивается к tryItFrame1
Pavel
Сегодня вышел Node.js 14. На medium был опубликован пост с описанием основных изменений — "Node.js version 14 available now". Node.js 14 переходит на текущую ветку поддержки "Current", вытесняя оттуда Node.js 13. По плану через 6 месяцев (октябрь 2020) 14-ая версия перейдёт в фазу LTS. Node.js 12 будет поддерживаться до апреля 2022 года, Node.js 10 — до апреля 2021 года. В Node.js 14 стабилизирован Diagnostic Report. Это API позволяет получить много полезной информации для локализации утечек памяти, причин падений и проблем производительности. В канале было несколько постов про эту фичу, их можно почитать тут и тут. В новой версии доступен экспериментальный Async Local Storage API (есть бэкпорт для Node.js 13.10). Благодаря ему в Node.js появляется готовый инструмент для сохранения данных на время жизни http-запросов и любых других асинхронных процессов. Были сделаны мажорные исправления в Streams API для улучшения согласованности и устранения неоднозначности. Например, http.OutgoingMessage теперь подобен stream.Writable, а net.Socket ведёт себя точно также как stream.Duplex. Ещё одно заметное изменение — включение по умолчанию опции autoDestroy. Появилась экспериментальная поддержка Web Assembly System Interface (WASI), цель которого упростить работу с нативными модулями в Node.js. Про WASI также был пост в канале ранее, его можно найти тут. Движок V8 обновлён до v8.1. Новая версия приносит улучшения производительности и поддержку новых спецификаций: Optional Chaining, Nullish Coalescing, Intl.DisplayNames, Intl.DateTimeFormat ( calendar, numberingSystem ). В Node.js 13 ECMAScript modules стали доступны без явной передачи флага --experimental-modules. В 14-ой версии сделан следующий значимый шаг — убрано предупреждение при использовании ESM ExperimentalWarning: The ESM module loader is experimental. Тем не менее формально ESM остаётся экспериментальной фичей, поэтому в будущем могут быть мажорные изменения. #nodejs #release https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e
Nikola
Добрый вечер. Подскажите пожалуйста, как сделать разрыв страницы в определенном месте? page-break-after: always; не работает...
Yuri
Всем привет. Кто-нибудь сталкивался с такой проблемой, при использовании puppeteer-extra на macos: "Could not find browser revision 737027. Run "npm install" or "yarn install" to download a browser binary." ??? В проекте использовался puppeteer, потом возникла необходимость использовать плагины, для чего был установлен puppeteer-extra, но работать он не хочет. Пробовал удалять обычный puppeteer и оставлять только puppeteer-extra.
Andrey
extra это расширение над puppeteer, без него он не работает
Yuri
без чего?
Andrey
puppeteer либо puppeteer-core
Yuri
я так понял puppeteer-extra - это расширенная версия puppeteer
Andrey
нет, это расширение уже установленного puppeteer
Yuri
а, то есть для работы puppeteer-extra надо еще установить puppeteer-core?
Andrey
для плагинов еще поставишь и puppeteer-extra-plugin
Andrey
ты плагины то какие собираешься ставить?
Andrey
это не браузерные плагины
Andrey
это как бы расширения на уровне puppeteer
Yuri
У меня был установлен puppeteer, потом я установил puppeteer-extra. Потом заменить require('puppeteer') на require('puppeteer-extra')
Yuri
просто вот тут написано, что надо просто установить puppeteer-extra и импорт обычного заменить на расширенный https://www.npmjs.com/package/puppeteer-extra
Yuri
про core ничего там не нашел
Nikola
Добрый вечер. Подскажите пожалуйста, как сделать разрыв страницы в определенном месте? page-break-after: always; не работает...
В общем проблема была в том, что контейнер был флексом, и потому в нем не работали разрывы.
Yuri
puppeteer либо puppeteer-core
в итоге что надо устанавливать?
Andrey
ты разницу между ними понимаешь?
Yuri
я смысл вопроса не очень понимаю))
Andrey
https://github.com/puppeteer/puppeteer/blob/master/docs/api.md#puppeteer-vs-puppeteer-core
Yuri
расширенная версия для использования плагинов типа stealth и т.д
Andrey
не расширенная версия, а расширение. Типа плагинной система для pupeeter
Andrey
так, и?
че и) читай)
Yuri
ру комьюнити)))))
Andrey
домашку за тебя делать не будут)
Yuri
ЕЩЕ РАЗ был установлен puppeteer, потом дополнительно был установлен puppeteer-extra, потом (как в нпм написано) импорт обычного был заменен на puppeteer-extra и в итоге НЕ РАБОТАЕТ. причем тут то, что ты скинул?))