Andrey
кому надо тот понял)))
🦋noteee
Было бы неплохо перефразировать на более понятную речь, для таких как я, с iq чуть более 2х
Andrey
молодец говорю ты, усидчивый)
🦋noteee
Понял, понял. Ну после того как я делал билд TDLib на windows 4 дня подрят по 8 часов я думаю меня уже ничего не сломает
🦋noteee
Так это ты с ним возился столько в группе https://t.me/telegraf_ru вроде? 😂
Возможно и я, но там много кто с ним возился. Мне потом помог человек души и счастья, и все заработало. Правда не на Windows
Alhimik
Понял, понял. Ну после того как я делал билд TDLib на windows 4 дня подрят по 8 часов я думаю меня уже ничего не сломает
Давно уже стоило понять что некоторые вещи с наскоку не получится решить. Лучше сначала подтянуть знания в нужной тебе сфере, а потом уже за задачи браться. Изначально может показаться что незачем тратить два часа на чтение документации или учебника, ведь я могу решить это за 10 минут без понимания того, как оно работает, но в итоге ты тратишь несколько дней пробуя всё что только можно, а понимания в итоге всё равно нет, даже если и получится задачу решить.
Alhimik
Возможно и я, но там много кто с ним возился. Мне потом помог человек души и счастья, и все заработало. Правда не на Windows
Так на линуксе он собирается элементарно, в оф доке же скрипт автоматически генерируется под любую ОС почти.
🦋noteee
А вот на Windows ужас какой-то
Alhimik
А вот на Windows ужас какой-то
А зачем он тебе на винде? Сервера дороже, возни с ними больше, решений гуглится меньше.
🦋noteee
А зачем он тебе на винде? Сервера дороже, возни с ними больше, решений гуглится меньше.
Я программирую на винде, поэтому думал, что мне так будет удобнее
🦋noteee
В итоге сделал себе wsl 2.0 😅
Eugene
Ребят, есть у кого решение для подмены реального фингерпринта на кастомный?
🦋noteee
shad0w64 (Без тега, что бы не беспокоить зря серьезного человека). В общем, теперь не лагает. Все супер. Спасибо большое.
Alhimik
Ребят, есть у кого решение для подмены реального фингерпринта на кастомный?
Сайт может вычислить даже если ты просто page.evaluate выполнишь или любой другой код внутри страницы. Чтобы этого избежать, нужно будет искать эти проверки и вырезать их, не повредив остальную логику скрипта. Универсального способа не существует. Нужно находить решение под конкретный сайт.
Семён
Ребят, есть у кого решение для подмены реального фингерпринта на кастомный?
Морочился с этим ближайшие пару дней. Нашёл сервис gologin, у них есть API под puppeteer. Предоставляют некий удалённый браузер если я правильно понял, там можно задать систему, видеокарту, процессор и т.п., но штука платная, 25$/месяц за 100 профилей. Собственно я и перёшел с playwright на puppeteer из-за необходимости обхода fingerprint-ов
Семён
Ещё существует более популярный multilogin, но там тариф с API стоит 200 баксов
Eugene
Но они все долго думают
Eugene
Старт браузера долгий
Eugene
Закрытие тоже
Eugene
Они синхронизируют данные с облаком
Семён
А чтобы прямо на машине работало я не видел, но было бы очень интересно
Eugene
Мне интересно на сколько сложно самому запилить эту эмуляцию
Sasha
Народ. Пните в нужную статью. Как реализовать загрузку iframe на странице через другую прокси. Чтоьы все содержимое шло get и post запросы чепез другую прокси
Azat
Подскажите пожалуйста как в ходе программы узнать сколько хромиумов открыто?
Alex*
Подскажите пожалуйста как в ходе программы узнать сколько хромиумов открыто?
const { snapshot } = require("process-list"); const regexp_pupp = /.*puppeteer.*/; const proc = await snapshot('pid', 'name', 'path', 'cmdline'); let pids_pupp = []; proc.forEach(prc => { if (regexp_pupp.test(prc.cmdline)) { pids_pupp.push(prc.pid); console.log(prc); } }); Я вот так искал и затем убивал зависшие процессы. Можно более точно поискать процесс определенного парсера.
Alex*
Alex*
должно выглядеть, как-то так
Alex*
Единственное, что мне не хватило, передать уникальный, свой идентификатор в командную строку, чтобы отличать определенный процесс
🦋noteee
Вот так у меня загружается страница
🦋noteee
Но бывает что вот так (Текст отсутствует)
🦋noteee
Как можно решить эту проблему? Я жду загрузку страницы 35 секунд
Promise.all([🥚, 🥚,
Привет, может кто сталкивался в последний период с таким? Я посмотрел множество Issue, но все они не про мою проблему. Оно просто возникает в случайный момент
Alhimik
Но бывает что вот так (Текст отсутствует)
Смотри в консоль, возможно там запрос какой-то оборвался по какой-то причине. Если да, то слушай событие page.on("requestfailed") и перезагружай страницу, например.
Promise.all([🥚, 🥚,
Смотри в консоль, возможно там запрос какой-то оборвался по какой-то причине. Если да, то слушай событие page.on("requestfailed") и перезагружай страницу, например.
Проблема в том, что страница не может фейлиться, потому что она локальная(но все равно добавлю слушатель для теста)
Promise.all([🥚, 🥚,
Еще вопрос, может кто знает: можно ли как-то вынуждать puppeteer выполнять скрипт при условии, что фокуса на вкладке нет?
Alhimik
Проблема в том, что страница не может фейлиться, потому что она локальная(но все равно добавлю слушатель для теста)
Я отвечал на другой вопрос. А на твой вопрос: при каких обстоятельствах происходит ошибка? В ишью есть способ решения - закрывать все страницы перед закрытием браузера. Пробовал?
Promise.all([🥚, 🥚,
Она происходит в принципе как будто не в контекте ноды, потому что я пытался консолить реджект
Promise.all([🥚, 🥚,
Даже стек вывести невозможно
Alhimik
Закинь минимальный код, который вызывает ошибку на гист/пастебин.
Александр
Всем привет) Кто-нибудь пробовал использовать puppeteer при этом быть авторизованным в яндексе? Прокидываю куки, хедеры, что в браузере и нифига. Не могу понять в чём может быть проблема
Александр
Хедеры добавляю все, что есть у меня в браузере следующим образом (скрин 1), куки добавляю тоже все, что у меня есть в браузере следующим образом (скрин 2)
Александр
Александр
Ну и потом скрипт идёт на страницу, открывается визуально браузер и я выгляжу как не авторизованный пользователь
Alhimik
Перед setCookie() забыл await.
Александр
Хмм, как-то вообще непонятно теперь, добавил await перед page.setCookie и визуально браузер вообще открывает пустую вкладку
Alhimik
Попробуй убери вообще замену хедеров, всё должно работать. Я у себя проверил. Установка кук, переход на сайт яндекса, я авторизован. Но у меня там все куки яндекса, а не одна, как у тебя.
Александр
1) Раскомментировал setRequestInterception 2) Убрал хедеры вообще 3) У меня кук довольно много разных в коде (скрин), других в браузере у меня нет (брал из Firefox'a). Какие куки у вас ещё добавлены? 4) Получается сам puppeteer в браузере показывает, что вы авторизованы?
Alhimik
1) Раскомментировал setRequestInterception 2) Убрал хедеры вообще 3) У меня кук довольно много разных в коде (скрин), других в браузере у меня нет (брал из Firefox'a). Какие куки у вас ещё добавлены? 4) Получается сам puppeteer в браузере показывает, что вы авторизованы?
3. Я из основного браузера экспортировал куки через расширение EditThisCookie. В Firefox думаю тоже есть через что экспортировать в нужный формат. 4. Конечно. Это такой же браузер, он и не должен себя вести по другому, если куки те же самые.
🦋noteee
🦋noteee
Добрый день. Как можно вытащить из headers то, что я выделил? Вообще возможно ли получить headers?
Alhimik
Добрый день. Как можно вытащить из headers то, что я выделил? Вообще возможно ли получить headers?
page.on("request", (req) => { console.log(`[request] ${req.url()}\n${JSON.stringify(req.headers())}\n\n`); }); page.on("response", (res) => { console.log(`[response] ${res.url()}\n${JSON.stringify(res.headers())}\n\n`); });
🦋noteee
Спасибо большое. А есть какой то вариант без .on, может какой то вызов API? Для меня так будет удобнее
Alhimik
Спасибо большое. А есть какой то вариант без .on, может какой то вызов API? Для меня так будет удобнее
Это событие, поэтому оно ловится через page.on(). Запросы происходят асинхронно, кроме как слушать событие ты их не поймаешь.
🦋noteee
Понял
Alhimik
Спасибо большое. А есть какой то вариант без .on, может какой то вызов API? Для меня так будет удобнее
Ты хочешь данные, полученные из заголовков, дальше использовать в коде и не знаешь как их достать из колбэка page.on()?
🦋noteee
Можно будет сделать глобальную переменную и данные из заголовка помещать туда
Alhimik
В принципе знаю, но не уверен. Ещё не пробовал
1. Создаёшь промис перед слушателем. 2. Вешаешь листенер на событие 3. Когда запрос выполнится зарезолвь промис 4. Дальше по коду просто дождись выполнения промиса
Alhimik
Можно будет сделать глобальную переменную и данные из заголовка помещать туда
Без промиса сложно будет делать что-то в том же потоке кода.
🦋noteee
Я бы не догадался
🦋noteee
А можно как то отловить капчу (от VK, скриншот прикрепил) Отправить эту капчу на сервис по разгадыванию капчи и вернуть назад в puppeteer?
🦋noteee
С такой капчей проблем особых нету. Появилась - сохранил картинку, решил капчу и ввёл ответ. Но вот как быть с recaptha? Там требуется кликать на картинки
Sasha
В рекапче идет ответ определенеым токеном. Отправляется токен получается ответ решение