Bogdan
Понял. Ну можно ее решить фоном тогда.
Slava
Понял. Ну можно ее решить фоном тогда.
Конечно я изучаю джаваскрипт в первую очередь на основе изучения puppeteer... А что мне погуглить, скажи, пожалуйста, мне?
Bogdan
Тебе нужно создать рекурсию. Асинхронную. В ней чекер появилась ли капча или нет. Если появилась то решаешь, если нет то делаешь рекурсионный вызов(функция вызывает сама себя). Когда вызываешь эту рекурсию из главного модуля то нужно убрать await и вызов идёт с самого верха скрипта.
Bogdan
https://ramdajs.com/repl/ - сюда код закинь я посмотрю
Bogdan
я так не понимаю
Slava
https://ramdajs.com/repl/ - сюда код закинь я посмотрю
Не получилось там расшерить, на пастебин закинул: https://pastebin.com/yZ6iHG6P
Bogdan
```const script = (page) => { // Run recursion without await, when this will fetch the captcha it will solve this in background. captchaSolverBackground(page) // Put the rest of the code here. } const delay = (min, max) => { const maybeRandom = max ? generateRandom(min, max) : min; return new Promise((resolve) => setTimeout(resolve, maybeRandom)); }; const captchaSolverBackground = async (page) => { if (page) { if (await isCaptchaAppear(page)) { await vkSolveCaptcha(page); } else { await delay(125, 175); return await captchaSolverBackground(page); } } }; ```
Bogdan
тебе нужно вообщем в эту рекурсию встроить captchaSolverBackground и запустить ее вначале пайплайна
Bogdan
и между этапами обязательно таймаут ставь такой чтобы хватило на решение капчи
Bogdan
если она появится
Slava
это я на всяких случай засейвлю
Shokhboz
Привет ребята, хотел бы узнать как воспользовать и чему нужен этот плагин в pptr - puppeteer-extra-plugin-user-data-dir? Если у кого то есть опыт)
Британец
Британец
Может что-то сохранять
Shokhboz
Могу ли я например перед запуском puppeteer изменить Cookie и тд Chrome/Default?
Shokhboz
То есть с puppeteer-extra-plugin-user-data-dir
Karen
Привет! Пытаюсь парсить страницу с помощью puppeteer const moving_averages = await page.$eval("#techStudiesInnerWrap > div:nth-child(2) > span.redFont.bold", el => el.innerText); Проблема в том, что в span.redFont.bold слово «redFont» может меняться каждый раз и если не redFont будет, то выдаст undefined Можете сказать, что могу сделать?
Bogdan
И дальше el.innerText || el.textContent
Ростислав ✚
Всем привет. Есть необходимость в создании для себя бота. Его задача заключается в авторизации на сайте https://searchads.apple.com/ Проблема возникает в запоминании устройства, там при авторизации с нового браузера нужно вводить TFA код, а так как авторизация слетает каждый день то это становиться очень неудобно, нажатия ботом кнопки "Запомнить это устройство" игнорируются. Я пробовал сохранять куки после успешной авторизации и загружать их на следующий день перед очередным запуском и авторизации, пробовал вообще не закрывать браузер кукловода сутки и когда выкидывает с аккаунта сразу заходить, всё равно просит TFA код, не помогает и то что в качестве браузера я указываю свой гугл хром а не дефолтный хромиум. Также я использую puppeteer-extra-plugin-stealth для сокрытия. При всём этом если в ручную зайти в гугл хром инкогнито, авторизоваться с запоминанием и оставить открытым на сутки а потом снова авторизоваться то код не требует. Количество куки в инкогнито и в кукловоде совпадает и они одного типа. Что ещё может быть не так, может я что-то упускаю?
Anton
Приветствую, коллеги! Кто-нибудь знает каких куков может не хватать Google для успешной авторизации? Сохраняю отдельно cookie, localstorege, fingerprint. Для яндекса хватает данных, чтобы авторизация не слетала. А гугл вынуждает заново авторизоваться. Может кто-нибудь сталкивался и сможет подсказать?
Bogdan
а IP меняется скорее всего
Bogdan
либо IP очень замызганый плохого кчества
Anton
а IP меняется скорее всего
ip тот же - мобильный.
Bogdan
почту покупал?
Bogdan
gmail
Anton
почту покупал?
Нет. Сам создал
Anton
и на том же IP вхожу
Bogdan
ну просто если бы куки не было бы то он бы вообще не выдал это сообщение
Bogdan
он подозревает похоже что-то либо девайс другой либо IP плохой
Bogdan
если куки он просто заного попросил бы залогиниться
Bogdan
а не подтвердить
Bogdan
Всем привет. Есть необходимость в создании для себя бота. Его задача заключается в авторизации на сайте https://searchads.apple.com/ Проблема возникает в запоминании устройства, там при авторизации с нового браузера нужно вводить TFA код, а так как авторизация слетает каждый день то это становиться очень неудобно, нажатия ботом кнопки "Запомнить это устройство" игнорируются. Я пробовал сохранять куки после успешной авторизации и загружать их на следующий день перед очередным запуском и авторизации, пробовал вообще не закрывать браузер кукловода сутки и когда выкидывает с аккаунта сразу заходить, всё равно просит TFA код, не помогает и то что в качестве браузера я указываю свой гугл хром а не дефолтный хромиум. Также я использую puppeteer-extra-plugin-stealth для сокрытия. При всём этом если в ручную зайти в гугл хром инкогнито, авторизоваться с запоминанием и оставить открытым на сутки а потом снова авторизоваться то код не требует. Количество куки в инкогнито и в кукловоде совпадает и они одного типа. Что ещё может быть не так, может я что-то упускаю?
в иногнито разве куки можно?
Ростислав ✚
в иногнито разве куки можно?
Да, они временно хранятся пока окно не закрыто, как закрыть то удаляются, я его просто не трогал сутки и все ок перезашло без кода
Anton
он подозревает похоже что-то либо девайс другой либо IP плохой
Я думаю проблема не в IP. Есть на то причины которые долго объяснять. Есть подозрение что не хватает чего-то аналогичному local storage
Anton
и поэтому он палит девайс, а куки да, подгружаются
Bogdan
антидетект браузер какой-нибудь попробуй
Anton
антидетект браузер какой-нибудь попробуй
а можете что-то посоветовать?
Bogdan
gologin, octobrowser, multilogin
Bogdan
а можете что-то посоветовать?
вроде все они работают с puppeter
Bogdan
я с антидетектом тоже к слову встречал такую проблему описаную выше, но я акки не сам регал, а покупал, и IP динамик был.
Bogdan
но очень сильно сомневаюсь что это в кукис проблема
Bogdan
может он скрипт ловит как-то автоматизации еще хз
Anton
я с антидетектом тоже к слову встречал такую проблему описаную выше, но я акки не сам регал, а покупал, и IP динамик был.
у меня тоже по сути динамик. Мобильные прокси. Возможно вы правы. А отлежка играет роль после реги?
Bogdan
думаю нет. Если IP все же часто меняется то проблема в этом скорее всего.
Bogdan
как я изначально предпологал
Bogdan
что очень логично, так как аккаунты часто угоняют через кукис
Bogdan
и там пароль не требуется))вот чтобы предотвратить они и спрашивают пароль
Anton
и там пароль не требуется))вот чтобы предотвратить они и спрашивают пароль
потом спрашивают смс. Короче видимо что-то палится антибот системой
Anton
но не думаю что статичные прокси безопаснее мобильных использовать
Bogdan
либо рекавери эмейл
Anton
либо рекавери эмейл
рекавери тоже привязывал, но его почему-то не спрашивает. Рекавери нужно было подтверждать по почте?
Bogdan
ну мобильные прокси с десктоп устройства это подозрительно
Anton
если телефон подтвержден то он телефон спрашивает
так без телефона не дает вообще создать аккаунт)
Bogdan
не заюзанное если берешь с крутым рейтом то он пропускает без телефона
Anton
если хорошее прокси то можно
у меня 5% без телефона регнулось.
Anton
Но по сути должен спрашивать как подтвердить по рекавери или телефону, а он сразу телефон просит. Странно
Anton
возможно в настройках безопасности есть флаожок какой-то
кстати возможно. спасибо за идею, поищу. И попробую еще с других проксей позаходить в акки. Может поможет)
User
Разъясните подробно процесс, как и что работает: ReCaptcha v3 c Callback-функцией для отправки токена на сайт. Не совсем понятен механизм и как всё это дело отловить, чтобы решить капчу. Без Callback без проблем решается капча, sitekey отправляется и после решения токен вставляется на страницу, а с Callback, что-то не понятен механизм.
Sergey
Привет всем! Есть, кто монетизирует свои парсеры уже некоторое время или продает как услугу? Справляется дли nodejs, когда нужно парсить тысячи страниц в реал-тайме и регулярно?
Bogdan
Привет всем! Есть, кто монетизирует свои парсеры уже некоторое время или продает как услугу? Справляется дли nodejs, когда нужно парсить тысячи страниц в реал-тайме и регулярно?
Когда нужно парсить много, то лучше использовать пупетер исключительно чтобы забрать html, то есть page.content() и этот html уже через очередь отправить на другой сервак, где будет происходить сам парсинг. А не парсить прям из инстанса пупитера. Таким образом можно наплоидить неограниченное кол-во puppeteer инстансов особенно если использовать puppeteer-cluster, и пыль даже вытирать не потребуется.
Bogdan
ну и в докер а дальше k8s или лучше docker-swarm (он легче и функционала для этой задачи за глаза) это все закинуть.
Bogdan
у меня на Elixir такой кравлер написан лично, он и с headless работает и с http
Bogdan
просто в Elixir с конкурентностью все хорошо. На Go тоже наверное можно собрать монстра.
Bogdan
нода хорошо начинает но потом у нее колпак течет в определенный момент https://stressgrid.com/blog/benchmarking_go_vs_node_vs_elixir/
Bogdan
хотя если через docker-swarm наклепать инстансов и подрубить к кролику то это решит проблему