Anonymous
Можно еще сделать такое:https://stackoverflow.com/questions/59233115/using-regex-in-text-based-value-search-in-the-page-using-puppeteer Начинаешь искать по "a", а потом сравниваешь его, совпадает ли или нет. Если совпадает, значит берешь ссылку и делаешь чо то
Alhimik
Anonymous
@riseupnetwork @erostrn @shad0w64 Спасибо, парни! В итоге решил сам вот так: const googleLink = await page.$$eval('a', anchors => anchors.map(a => a.href).filter(href => href.includes('google.com/maps/'))); И оттуда уже взял googleLink[0] (Она единственная на странице, так что ОК, можно было походу даже без .filter в данном случае)
Anonymous
Помогите взять название класса частично, вот так не работает: const textContent1 = await page.$eval(".BlueStoreDetailsPage__StoreName[.*] h1", el => el.textContent); const textContent2 = await page.evaluate(() => document.querySelector('.BlueStoreDetailsPage__StoreName[.*]').textContent);
🦋noteee
Заказ на 500₽ При входе в TikTok иногда бывает капча. Нужно её решать через сервис анти-капчи. Кто то сможет сделать?
Кирилл
Всем привет, может кто сталкивался с чем похожим? Кейс такой: используем инкогнитон + пуппитер, при локальном запуске все гуд, при старте инкогнитона на сервере, пока подключён по рдп все тоже отлично работает, но как только отключаешься от сервака тайминги становятся дикими. Например, ожидание селектора занимает более 3 минут, при том что таймаут ожидания установлен в 45 сёк.
Riclud
Добрый день, почему может не искать ? элемент существует 100% с такими параметрами, через document.querySelector ищется без проблем
Alex*
const selectorElement = 'button[value="any"]'; await page.waitForSelector(selectorElement) const elementHandle = (await page.$(selectorElement)); await elementHandle.click()
r
Hello, anyone can help me regarding taking screenshot of using puppeteer
Alex11
hello guys. I need help
Alex11
can someone help me about puppeteer please
E
А можно как-то в Jest сделать чтобы пупетир тест проверялся, но в статистику покрытия не засчитывал эти файлы?
Андрей
Привет, ребят. Может немного не в тему, заюзал Athlon1600/php-proxy для хождения по закрытым сайтам, но проблемка - не работает джаваскрипт. Есть некий инструмент в ноде, который может проксировать переходы по страницам и сохранять джаваскрипт в рабочем состоянии?
Андрей
Единственный косяк - это джаваскрипт не совсем корректно работает
Андрей
При нажатии на вход должны были появиться вместо пориска - 2 поля - логин и пароль, но перезагрузилась страница
Alhimik
Единственный косяк - это джаваскрипт не совсем корректно работает
Скорей всего либа не обрабатывает фрагменты (якоря) в ссылках типа site/forum/index.php#. И пытается "перейти" по ссылке.
Андрей
Якорь там видимо есть, но к элементу джэс прикручен, который не работает в свою очередь
Alhimik
Вообще странно такой инструмент использовать. Мне кажется большинство сайтов он не сможет спарсить.
Alhimik
Согласен, вот ищу получше
Puppeteer/playwright/selenium. Думаю альтернатив нету. А либы, делающие простые http-запросы для большинства сайтов уже не актуальны.
Андрей
Puppeteer/playwright/selenium. Думаю альтернатив нету. А либы, делающие простые http-запросы для большинства сайтов уже не актуальны.
Это разве не для парсинга и скраппинга? Мне надо, чтобы живые люди заходили на условно запрещенный рутрекер или другой заблоченный сайт через подставные страницы моего сайта
Alhimik
Это разве не для парсинга и скраппинга? Мне надо, чтобы живые люди заходили на условно запрещенный рутрекер или другой заблоченный сайт через подставные страницы моего сайта
Не так понял значит задачу. Сложно такое сделать или даже не возможно. Много завязано на JS, внутри бывают айфрэймы, некоторые сайты вообще SPA. И ради безопасности браузеры используют множество техник, которые не позволят так просто провернуть такое. Даже не знаю, есть ли такие инструменты.
Alhimik
100% Есть реализации, проблема в конкретике - как правильно загуглить, чтобы прокси подразумевалось не для запроса а как бы для присутствия.
У сайта есть множество способов проверить из JS что он загружен не с того домена, к примеру. И не выводить клиенту контент или выводить какой-то нестандартный контент. В общем случае ты такое не обойдёшь. Нужно с каждым сайтом отдельно разбираться. Чтобы такой прокси работал на любых сайтах, он должен полностью разбирать JS, вырезать/подменять проверки. И это речь не о какой-то преднамеренной защите, там всё ещё хуже. Слишком много работы. 🙈
Родион
Здравствуйте, можете помочь? Мне нужно запустить скрипт(Puppeteer) по нажатию кнопки, который запускается при вызове в консоле node main.js
Родион
Родион
Alhimik
Здравствуйте, можете помочь? Мне нужно запустить скрипт(Puppeteer) по нажатию кнопки, который запускается при вызове в консоле node main.js
Puppeteer работает в Node.js среде (на бэкэнде), кнопка находится на странице в браузере (на фронтэнде). Тебе для начала нужно связать фронтэнд и бэкэнд. Например, написать простой API. И далее, при нажатии на кнопку посылать запрос на API и там уже выполнять заданный код. Напрямую выполнить код для puppeteer-а из браузера не получится.
Pavel
Новые фичи продают playwrite, добавили распараллеливание https://youtu.be/6RwzsDeEj7Y
Alex*
Добрый день! Получиться кукльником такую каптчу пройти? Еще не пробовал, редко появляется.
Alex*
WEB
11
WEB
Бл. Разбаньте пожалуйста FREE WEB/ Это моя страница, основная, я не увидел вопрос бота чтобы ответить
Anonymous
8
Anonymous
8
Anonymous
вот что хотел спросить, можно ли сразу запустить 3-4 браузера через бота?
Anonymous
ой, господи, puppeteer
Anonymous
и как мне убрать метку, что это бот, и есть какие-нибудь способы анонимно чтоб открывал браузер?
Anonymous
Ибо я рассматриваю Peppeteer - как хороший инструмент для разработки бота, который сможет автоматизировать мне процесс накрутки на одном сайте
Anonymous
ну и я сам умею в ts/js и немного node
Anonymous
поэтому, puppeteer - идеально
artem
здарова мужики
artem
помогите пожалуйста загрузить в пупетир браузерные расширения
artem
что должно быть в load-extensions?
Alhimik
что должно быть в load-extensions?
Путь к расширению.
artem
Путь к расширению.
О тень, привет!
artem
Еще один вопросик подскажите как такие куки превратить в
artem
Такие
Alhimik
Еще один вопросик подскажите как такие куки превратить в
В цикле пройдись по всем элементам массива и создай новый массив объектов с новыми ключами.
artem
В цикле пройдись по всем элементам массива и создай новый массив объектов с новыми ключами.
а что именно должно быть в куке чтобы его мог прочитать puppetteer в плане какие поля, на стак оверфлов вроде писали только имя и ключ надо
artem
в плане value
artem
и что делать если я хочу прочитать Netscape формат
artem
прогнал netscape через сайт получил json вроде но puppeteer опять не может его использовать
Alhimik
Покажи как устанавливаешь куки.
artem
artem
artem
Alhimik
Вместо expirationDate должно быть expires. Но это вряд ли ошибку должно вызвать и это поле не обязательно.
artem
Вместо expirationDate должно быть expires. Но это вряд ли ошибку должно вызвать и это поле не обязательно.
если просто скопировать с терминала это и вставить в вс код то ошибок нет
Alhimik
Скопируй сюда текстом один объект для примера.
artem
{ domain: '.sundaysky.com', expirationDate: 1684253597, httpOnly: true, name: 'sskyCreationTime', path: '/', secure: false, value: '1592984123519' },
artem
а здесь content raw это мое value?
Alhimik
{ domain: '.sundaysky.com', expirationDate: 1684253597, httpOnly: true, name: 'sskyCreationTime', path: '/', secure: false, value: '1592984123519' },
Нормально принимает такой формат pptr. Возможно у тебя в другом месте проблема. Хотя, судя по ошибке ему не нравятся именно поля у кук.
Alhimik
а здесь content raw это мое value?
Похоже на то. А откуда у тебя такой формат кук?
artem
прямой экспорт из браузера через cookie manager
artem
это вроде их естественный вид
artem
но мне надо под netscape адаптировать
artem
поэтому буду пробовать сейчас все что можно, спасибо тень!
Alhimik
а здесь content raw это мое value?
Кстати, то что у тебя там сырые данные, в этом может быть как раз проблема. Какие-нибудь символы могут быть невалидными возможно. Попробуй все куки поотдельности поставить и увидишь на каком именно значении он ошибку выдаёт.
Alhimik
Ну или попробуй каждое value закодировать через encodeURIComponent().
Alhimik
да буду щас проверять, их там много(
for (const cookie of cookies) { try { await page.setCookie(cookie); } catch (err) { console.log(cookie); console.error(err); } }