Aleksandr
А если с другова боку подойти! Можно как-то перехватить запрос , подставить в него другие данные. И Отправить уже его. Для обновления страници? Обновляется не все страница, а только div id="content2"
𝑰𝒍𝒉𝒐𝒎
Чтобы избежать fingerprinting - https://amiunique.org/fp
𝑰𝒍𝒉𝒐𝒎
Чтобы избежать fingerprinting - https://amiunique.org/fp
есть ли возможность подделать список шрифтов на puppeteer?
𝑰𝒍𝒉𝒐𝒎
Спасибо за ответ. а как можно подделать?
Stripe
есть же плагин detector pupputerr можете там глянуть как реализовано
𝑰𝒍𝒉𝒐𝒎
Stripe
угу
𝑰𝒍𝒉𝒐𝒎
угу
Там не слово про шрифты
Stripe
ну так, кто говорит, что там будет про шрифты, исходники посмотреть.
Назар
fingerprint и обнаружение бота разные вещи
Stripe
fingerprint я и в паппутире затоклаю, какой мне нужно.
Stripe
https://www.npmjs.com/package/puppeteer-extra-plugin-stealth
𝑰𝒍𝒉𝒐𝒎
fingerprint и обнаружение бота разные вещи
Если все аккаунты будут на одинаковом fingerprint, то они обнаружат накрутку
𝑰𝒍𝒉𝒐𝒎
https://www.npmjs.com/package/puppeteer-extra-plugin-stealth
Оу. Я как раз этим и пользуюсь
Stripe
fingerprint можно собрать из разных шрифтов и параметров и установить иникальный хеш для каждого инстался браузера.
𝑰𝒍𝒉𝒐𝒎
ага, но ты с этим ничего не сделаешь
Ну 100 % защиты нет. Но я добываюсь того , чтобы было посложнее обнаружить
𝑰𝒍𝒉𝒐𝒎
Вижу только FontSize
Stripe
я себе как-то тоже обертку писал над fingerprint, я облазил все репы и смотрел исходники, чтобы знать от чего отталкиваться
Назар
Можно ли папитир засунуть в electron? Суть в том, что у меня есть приложения с папитир и сервер обычный на ноде. И мне нужен способ, что запускать его без лишних установок у пользователей на винде/мак/линкус. У которых нету ноды, докера и тд.
Tariq
Only way is to host the file yourself
John
Парни, мигрируем уже на playwright или кукловод навсегда?
Ислам
Я начал переходить)
Ислам
Самое удобное к чему быстро привыкаешь это более продуманные селекторы, обратно в puppeteer'е уже не хочется использовать разные методы для css/xpath запросов
Tariq
gotta check on git
Nikita
Господа, лёгкий вопрос. let cookie = await page.cookies(); /////// await page.setCookie(...cookie); и ошибка сразу. Protocol error (Network.deleteCookies): Invalid parameters name: string value expected
Nikita
почему так?)
Andrey
одну куку ждет, а ты массив кидаешь?
Nikita
да я содержимым массива вообще не рулю. Я в одном месте куки записываю, в другом пытаюсь передать
Nikita
Не, серьёзно, разве нельзя так сделать? Просто записать куки в переменную через await page.cookies() А потом эту переменную передать на новую страницу через await page.setCookie()
Andrey
page.cookies() - получить кукИ, page.setCookie() - установить кукУ
Nikita
Оу.
Andrey
в одном случае Array получаешь, во втором случае Object ждет
Nikita
Оу. Значит из массива нужно вычленить куку
Nikita
оки, ща буду пытаться
Nikita
Всё, я сделялъ. Если кому нужно будет: const cookie = await page.cookies(); JSON.stringify(cookie, null, 2); А потом через JSON.parse парсим и вставляем await page.setCookie(...cookie)
Nikita
И работает :)
Вячеслав Михайлов
Всем привет! Подскажите, а Puppeteer вообще может подключиться к selenium server/selonoid?
Google
Всем привет можете помочь с Node js puppeteer кусок кода не могу получить из html ( В браузере есть )
Google
const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch({ headless: false, slowMo: 250, }); const page = await browser.newPage(); await page.goto( "https://www.omegasirius.ru/bronirovanie?date=2020-06-27&nights=1&adults=1&children-age=" ); await page.waitFor(5000); const bodyHandle = await page.$("body"); const html = await page.evaluate((body) => body.innerHTML, bodyHandle); console.log(html); await bodyHandle.dispose(); })();
Google
можете помочь ?
Roman
Сначала в клиенте найди в консоле а потом через евал
Roman
в клиенте ?
Google
Google
вот puppeteer но когда в console выважу html там нету
Roman
Как ты в консоль выводишь?
Roman
Внутри евала консоль не выводит
Roman
Знаешь это?
Google
Знаешь это?
нет можешь подскозать
Google
пожалуйста можешь помочь ?
Roman
page.on('console', msg => { for (let i = 0; i < msg._args.length; ++i) console.log(`${i}: ${msg._args[i]}`); });
Roman
Вставляешь перед евалом
Google
так ?
Google
Roman
сверху
Roman
перед page.eval
Roman
Если ты внутри page.eval пишешь console.log() он не выводиться внутри
Roman
Нужно перекинуть
Google
Google
так ?
Roman
Да
Google
Google
Ошибка получаю
Roman
Ой
Roman
давай в дир
Google
но тут прописанно
Google
console.dir ?
Roman
в директ
Tariq
Just leave and join
maxOn
привет народ! Нужно спарсить со страницы текст, использую puppeteer и cheerio. Получаю страницу и пытаюсь взять текст вот так $('.tgme_widget_message_text.js-message_text.before_footer').map((i, el) => { const url = $(el).find('a').attr('href') const title = $(el).find('b').text(); const tgText = $(el).contents().map(function(){ if(this.type === 'text') return $(this).text().trim() }).get() Но это я беру весь текст, а вот стандартным методом не могу этого сделать аля $(el).find('.a').text()
maxOn
потому что вот так выглядет дерево. Может кто подскажет как его удобно доставать ?
maxOn
а это как? await page.$x(xpath)??
maxOn
как взять его напрямую ?
maxOn
ну а через что его искать? я имею в виду через class, xpath, selector Можно плз пример маленький ?
maxOn
https://github.com/puppeteer/puppeteer/blob/v1.10.0/docs/api.md#pageevaluatepagefunction-args в эту сторону копать?