Alhimik
Понял, это то, что я хотел услышать. Спасибо
Кстати, ещё можешь посмотреть есть ли у browser событие error. Я точно не помню есть ли он там.
🦋noteee
Кстати, ещё можешь посмотреть есть ли у browser событие error. Я точно не помню есть ли он там.
В плане слушателя .on Ты предлагаешь его ловить и закрывать браузер ?
Alhimik
В плане слушателя .on Ты предлагаешь его ловить и закрывать браузер ?
Ну такие события для этого и предназначены обычно. )
Slava
Фрейм там один (это чатрулетка). Селектор такой: 'div.main__portals div.app-portal:nth-child(1) div.app-modal-grid__footer div.app-modal-button-group__item:nth-child(2) button'. В консоли по querySelectorAll находится. К моменту клика времени проходит достаточно (headless: false). Просьба посмотреть и выяснить.
Slava
Напомни чёрез пару часов, посмотрю
Ну давай, заранее спасибо.
Slava
Напомни чёрез пару часов, посмотрю
Вопрос снимается, получилось.
🦋noteee
Error: net::ERR_HTTP2_PROTOCOL_ERROR at https://lolz.guru/threads/3800215 Падает данная ошибка на Ubuntu 20.04 (Без интерфейса) На Windows 10 все нормально. Подскажите пожалуйста
🦋noteee
Error: net::ERR_HTTP2_PROTOCOL_ERROR at https://lolz.guru/threads/3800215 Падает данная ошибка на Ubuntu 20.04 (Без интерфейса) На Windows 10 все нормально. Подскажите пожалуйста
@shad0w64 попробовал прежде чем тебя тегнуть, в интернете поискать. Там отсутствует такая проблема с puppeteer
🦋noteee
Это происходит только в безголовом режиме в линуксе?
headless: true В режиме false попробовать не могу, потому что у меня дебиан без интерфейса. Только терминал
🦋noteee
А другие сайты с HTTP2 работают?
Можешь отправить пример сайта пожалуйста? Попробую
Alhimik
Можешь отправить пример сайта пожалуйста? Попробую
Я уже попробовал. В хэдфул режиме ошибок нету. В хэдлес режиме так же выдаёт ошибку. Как только ставишь нормальный юзерагент то ошибки нет.
Alhimik
Вероятно они таким способом блочат хэдлес браузеры.
🦋noteee
+
Угу, это помогло. Спасибо, ты с экономил мне очень много времени. А почему под Windows все было нормально, а под Linux проблемы. Сайт как то определил без user agent, что это Linux и начал ругаться на ддос ?
🦋noteee
Alhimik
Не знаю тогда. Если хэдлес режим запускать без указания юзерагента, то по дефолту в юзерагенте написано что это хэдлес хром. На сервере видят запрос от такого браузера и блокируют его таким топорным способом, похоже.
Виктор
Подскажите, где то видел у playwright функцию сохранения/загрузки что то похожего на профиль, теперь ни как не могу найти
Виктор
и это не user-data-dir, так как работа идет с телефонами
Виктор
все нашел сам. context().storageState({ path: 'adminStorageState.json' });
Vishwas
Hey hi community. 😊
Vishwas
Hope you can help me with English
Vishwas
I am using puppeteer for scrapping Dapp. There is a scenario where I have to copy referral link and paste in the navigation bar of new tab. I am facing difficulty in performing this operation. Tried $eval method , but didn't worked. This will be very kind of you if you can help ne out to solve this scenario.
Vlad Vaviloff
In77
всем привет, обходил ли кто защиту Dynatrace ?
Shivam
this.page.goto(url)
Shivam
Ii have much experience in puppeteer since 2 years I'm scrapping LinkedIn, Craigslist, Fiverr gigs, upwork profiles, leads Facebook groups etc
Shivam
According changing and making stable DOM
Pavel
Привет. По puppeteer'у есть вопрос небольшой. Я открываю страничку с данимическим html. Как им можно полностью ее загрузить, чтобы парсить ноды, которые сразу не подгружаются?
Nik
Динамический html в смысле присутствует пажинация или ленивая загрузка какая-то? Или имеешь ввиду просто дождаться подгрузки html насколько возможно при начальном положении страницы?
In77
Или ajax ?
Pavel
Динамический html в смысле присутствует пажинация или ленивая загрузка какая-то? Или имеешь ввиду просто дождаться подгрузки html насколько возможно при начальном положении страницы?
При загрузке страницы проверил через page.content(), что не весь html считывается. Вложенностью до 3 или 4 блока только ограничивается
Pavel
Но решение нашлось. Если блок не найден таким образом, просто дождаться его загрузи через page.waitForSelector() и все работает
In77
Да все верно
Pavel
Сам нашёл как-то)
In77
WaitForXpath ещё есть
Pavel
WaitForXpath ещё есть
Да, тоже можно. Вообще xPath прям больше нравится
In77
В консоли хрома можешь через $x('xpath') проверить
In77
Да лучше через него, проще и фукциональнее
Pavel
В консоли хрома можешь через $x('xpath') проверить
Да, уже разобрался. Через copy xpath вообще сам собирается. Только индексы почистить и все ок
Pavel
Ни разу не тестировщик, использую только для разработки
In77
И я не тестировщик
Pavel
Вообще puppeteer - очень мощная штука, все действия пользователя как на ладони
In77
Просто через копи там грязи много
Pavel
Ну разве что индексы и идшники
Pavel
Вообще сегодня залогинил бота через пользователя 😀
In77
Ну изменилась немного верстка и уже беда
Pavel
Self-боты в любой системе могут работать теперь)
In77
Есть сайты для которых puppeteer надо готовить, а то блочат
Pavel
Есть сайты для которых puppeteer надо готовить, а то блочат
А как узнают? Можно же тайминги выставить чтобы уж мгновенных кликов не было
In77
Тайминг не причем
In77
Посмотри fingerprint браузера
Назар
всем привет. Как вернуть из метода еvaluate обьект с цикличискими зависимостями? Я так понял из evaluate папитир делает JSON.stringify JSON.parse?
Alhimik
всем привет. Как вернуть из метода еvaluate обьект с цикличискими зависимостями? Я так понял из evaluate папитир делает JSON.stringify JSON.parse?
Никак не вернуть такой объект. Нужно убирать циклические ссылки. Да, там обычная JSON-сериализация.
Назар
Ну циклички я убрал. Но как понял что и get/set и методы тоже нельзя вернуть. Обидно
Alhimik
Ну циклички я убрал. Но как понял что и get/set и методы тоже нельзя вернуть. Обидно
Вообще странная задача. Если тебе нужно запомнить какой-то объект и потом в другом evaluate использовать его, то можно поместить его в хэшмапу и уникальный id вернуть. А так, чтобы "живой" объект с методами возвращать не представляю для чего нужно.
Alhimik
Может тебе нужна exposeFunction()?
Bogdan
всем привет, когда в headless моде делаю скриншот страницы которая содержит iFrame то фрейм просто белым фоном закрашивается и не попадает в скрин. в headfull все работает коректно. как можно пофиксить?
Bogdan
Возможно это поможет https://t.me/puppeteer_ru/6308. Но я не проверял.
эта опция у меня включена. Без нее помню вообще да не грузились фреймы. При этом похоже это произошло после апдейта, у меня была 5 версия пупитира, и там вроде скринилось как надо, щас попробую откатится посмотреть.
Bogdan
Попробуй ещё в playwright, там из коробки обычно всё хорошо. Если будет работать, смотри отличия в опциях запуска.
да давно кстати хотел playwright попробовать, там функционал такой же как и у пупитира?
Alhimik
да давно кстати хотел playwright попробовать, там функционал такой же как и у пупитира?
Возможности такие же и даже больше в некоторых моментах (например селекторы работают прозрачно с Shadow DOM).
Alhimik
апи такойже или прийдется переписывать что-то, чтобы мигрировать?
Конечно придётся переписывать. Там переработан и улучшен API. Плюс там контексты добавлены, селекторы универсальные и т.д.
Alhimik
https://playwright.dev/docs/intro
Alhimik
Есть тулзы для автоматического конвертирования (пример), но я их не пробовал. Проще для новых проектов пробовать playwright, как мне кажется. Может и не понравится вовсе.
Bogdan
апи да поприятнее выглядит, просто у пупитера ништяков много есть кластеры, стелсы и другие экстры. Тут я так понимаю этого всего пока-что нету.
Anton
Подскажите, плз, в чем преимущество кластера перед работой с несколькими вкладками? Кто-нибудь работал с этой фишкой? Я сравнивал оба варианта, у меня получилось, что кластер медленнее работает. Массив ссылок быстрее перебрать на нескольких вкладках, чем через кластер. Из преимуществ в голову приходит только отказоустойчивость - кластер обработает повторно проблемную страницу.
Bogdan
при этом тебе никто не мешает вроде как грузить несколько вкладок и при этом запускать кластер
Anton
стейт - это куки, локалсторейдж и т.п.?
Bogdan
стейт - это куки, локалсторейдж и т.п.?
да браузер в целом, если будет ошибка на одной вкладке то все остальные тоже закроются.