maxOn
угу, понял, спс попробую. Вот только остается открытым вопрос зачем тогда есть такие методы как frame.content()
maxOn
может так берется хтмл который именно в этом фрейме, и только поле этого можно юзать события
maxOn
если будут идеи или примеры как реализовывать подобное - отпишите пожалуйста
Назар
что реализовать?
Alex
да, но возвращяет массив, а тут есть вот такие методы conten(), focus()
ну на странице же может быть много айфреймов, найди в массиве свой нужный
Alex
Понял, буду пробовать
https://pptr.dev/#?product=Puppeteer&version=v5.5.0&show=api-class-frame поидее когда найдешь свой Frame с ним можно работать как со страницей
Дима
подскажите плс, как в goto не ждать полной загрузки страницы. Переходит на страницу, но она грузится пару минут. Перепробовал варианты waituntil, не помогло. Мне нужно чтобы после минимальной загрузки, был клик
Дима
та самый стандартный
Alex
та самый стандартный
так оно всеравно будет долго грузить, ты ничего не изменил
Дима
та я поставил 10 сек задержку
Дима
page.setDefaultTimeout(10000);
Alex
page.setDefaultTimeout(10000);
есть лучше решение
Alex
та самый стандартный
тут ты просто проглатываешь ошибку, посмотри параметры goto функции - https://pptr.dev/#?product=Puppeteer&version=v5.5.0&show=api-pagegotourl-options
Alex
та самый стандартный
page.goto(‘http://test.com’, {timeout: 10000, waitUntil: ‘domcontentloaded’})
Дима
да уже перепробовал с документации, просто страница очень долго грузит, там какой-то js каждые пару секунд отправляет запросы, по этому выбивает ошибку timeout и завершает программу, но мне важен html
Дима
в моей ситуации try catch подходит)
Назар
не делай await goto, а сделать await waitForSelector
Дима
ок, попробую
Gambit501
Всем привет, пинка под зад. Тому кто придумал этот Shadow-DOM
Gambit501
Gambit501
Есть идеи как получить последующие элементы этого теневого дум?
Alex
closed shadow dom - никак
Alex
https://learn.javascript.ru/shadow-dom
Alex*
да уже перепробовал с документации, просто страница очень долго грузит, там какой-то js каждые пару секунд отправляет запросы, по этому выбивает ошибку timeout и завершает программу, но мне важен html
Ещё есть вариант, не грузить часть скриптов, если, конечно, их работа не влияет на необходимый тебе контент. Экономит ресурсы прилично в некоторых случаях.
Дима
Ещё есть вариант, не грузить часть скриптов, если, конечно, их работа не влияет на необходимый тебе контент. Экономит ресурсы прилично в некоторых случаях.
ну это нужно для каждого сайта подробно задавать. У меня планируется грузить около 100-200 штук. в headless збс все, быстро обрабатывается. Но оказывается сайт палит работу. Даже https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-stealth не помогает
Дима
да, так и делаю, но заметил, что некоторые страницы очень долго грузит, по этому приходится в try catch закидывать goto
Alex*
+xvfb, скажем
Я как-то весь Xfce на VPS разворачивал.
Дима
вот как-то палит если headless запускать, щас приходится false ставить, то вроде ок, но ресурсы системы ест
Alex*
Можно дальше пойти - вместо puppeter сделать расширение для браузера и полностью эмулировать работу пользователя.
Дима
Можно дальше пойти - вместо puppeter сделать расширение для браузера и полностью эмулировать работу пользователя.
я просто в js не прям хорош. Только азы знаю, вот документация очень нравится puppeter, легко на нем получается писать
Дима
да, пробивает почему-то 2 версии при запуске
Дима
на скрине видно, что вначале видит headless а потом норм версия
Sasha
Если не ошибаюсь то скрыть headless можно
Gambit501
Может это поможет
Gambit501
https://intoli.com/blog/not-possible-to-block-chrome-headless/
Дима
https://intoli.com/blog/not-possible-to-block-chrome-headless/
смотрел попробовал то что в начале, не помогло, нужно затестить остальное
Alexander
Может блочить загрузку скриптов или части из них, из-за выполнения которых страница тормозит? const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on('request', request => { if (request.resourceType() === 'script') request.abort(); else request.continue(); }); await page.goto('https://webkul.com'); await page.screenshot({path: 'webkul.png'}); await browser.close(); })();
Sasha
https://bot.sannysoft.com/ вот тут на тесте посмотри и сравни
Дима
https://bot.sannysoft.com/ вот тут на тесте посмотри и сравни
да его проходит, но нужный сайт палит, причем он показывает сразу 2 сессии, с headless и без него
Sasha
Пардон с сотового
Дима
что за сайт? у меня есть наработки против обнаружения, могу попробовать
Если не получится скину, щас тестирую. Просто самые поверхностные решения использовал
Alexey
вот как-то палит если headless запускать, щас приходится false ставить, то вроде ок, но ресурсы системы ест
чтобы не палиться, по идее должно быть достаточно задать userAgent, например так: page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36')
Sasha
и юзер и app
Sasha
Доброго дня. Не подскажите как можно вносить шум в canvas ?
Gambit501
Доброго дня. Не подскажите как можно вносить шум в canvas ?
https://stackoverflow.com/questions/57737610/puppeteer-fingerprint-simulation
Sasha
Ну тут не шум. Тут уникализация
Alex
https://habr.com/ru/post/539156/
Egor
Ребят, привет. Есть кто живой? Подскажите, puppeteer только с chromium'ом работает? Можно открывать сайты в опере, фаерфоксе и других?
Egor
Я делал просто генератор аккаунтов в инсте и потом у меня просто перестала кликаться кнопка Регистрации, хотя в других браузерах работает.
Назар
chromiuum chrome firefox
Egor
chromiuum chrome firefox
Это браузеры, которые поддерживает puppeteer?
Назар
да
Egor
да
А как в lauch передать нужный браузер? У меня стоит хром и хромиум, открывается всегда хромимум
Egor
Я в апи доки просто искал, не нашел
Назар
чтоб хром открыть нужно через executablePath в опциях передать путь к хрому. Для firefox. https://tutorial.tips/how-to-launch-the-firefox-browser-using-puppeteer/
Назар
но если нужно много браузеро и удобно с ними работать, то лучше playwright
Назар
это папитир, только который от майкрософт с поддержкой разных браузеров
Sasha
А чем хром не устраивает?
Egor
это папитир, только который от майкрософт с поддержкой разных браузеров
Ну папитир который дефолтный, он поддерживает же 3 браузера?
Egor
А чем хром не устраивает?
У перестала кликаться кнопка в инсте
Egor
Точнее не хром, а хромиум
Sasha
Юзай хром)
Egor
А еще подскажите, почему в хромиуме не могу установить расширение, пишет Нет доступа.
Egor
Там блокировки стоят походу, кто знает как разлочить?
Egor
А что здесь не то? Такая ошибка.
Egor
Назар
нужно везде \ заменить на \\