Андрей
https://chromedevtools.github.io/devtools-protocol/
Это выходит, как свой кукловод написать? Я правильно понял?
I I
Здравствуйте! Недавно прошла обучение по теме ИИ осталось много полезных материалов: видео, конспекты, инструменты. Могу поделиться просто так, вдруг кому-то пригодится. Если интересно, дайте знать, отправлю 😊
Null
Это выходит, как свой кукловод написать? Я правильно понял?
Да. Но только в большинстве случаев достаточно небольшого количества возможностей (поиск элементов, перехват запросов/ответов, курсор и клавиатура).
Null
А может есть где-то примеры, чтобы велосипед не изобретать:)
Суть как раз в том чтобы понять как работает протокол и начать писать свой велосипед, тогда ты будешь знать где какие утечки, какие техники опознаются антибот-системами и т.п. А иначе придётся постоянно надеяться что очередной апдейт существующих либ не сломает что-нибудь. А большинство из них созданы для тестирования, они не заинтересованы в какой-либо маскировке.
Null
https://github.com/aslushnikov/getting-started-with-cdp
Null
https://github.com/ChromeDevTools/awesome-chrome-devtools
Null
Возможно это поможет, множество проектов использует CDP, можно у них смотреть подходы.
Sektor
А какие там подходы? Цепляешься к вебсокету, шлешь команды, ловишь ответы
Null
А какие там подходы? Цепляешься к вебсокету, шлешь команды, ловишь ответы
Это да, я к тому что там довольно много возможностей. Вопрос в том какие из них ему нужны (зачастую достаточно минимума). Но самому не всегда понятно как что перехватывать и т.д. Например с iframe зачастую у людей проблемы возникают.
Raso
hello who need to bypass cloudflare ?
Raso
dm
Андрей
Возможно это поможет, множество проектов использует CDP, можно у них смотреть подходы.
Привет, все это пересмотрел и доку перечитал, не могу понять как сделать клик мышкой? Или это уже через Js делается?
OnlineProxy
Привет, все это пересмотрел и доку перечитал, не могу понять как сделать клик мышкой? Или это уже через Js делается?
Через JS — самый простой вариант, но если антибот мониторит нативные события, то Input.dispatchMouseEvent надежнее.
OnlineProxy
А playwright , какой способ использует?
Тот же CDP, но с кучей доработок. Если включен slowmo или stealth - клик будет максимально человекообразным: Сам клик - это три CDP-события mouseMoved → mousePressed → mouseReleased
Sektor
у меня идентичный скрипт был, на домашнем ноуте все ок проходило клаудфлейр капчу
Sektor
а на серверах нет
Андрей
а на серверах нет
Может дело в отпечатке было
Sektor
Может дело в отпечатке было
неа, 1 поток, 1 браузер (нативный хром)
Андрей
неа, 1 поток, 1 браузер (нативный хром)
Ну отпечаток то серверный
Sektor
Ну отпечаток то серверный
Руками то кликается и проходится
Андрей
Руками то кликается и проходится
У меня такая же проблема, но просто на компе.
Андрей
но к сожалению иногда палится этот клик
driver.execute_cdp_cmd("Input.dispatchMouseEvent", {"type":"mousePressed", "x":x, "y":y, "button":"left", "clickCount":1}) driver.execute_cdp_cmd("Input.dispatchMouseEvent", {"type":"mouseReleased", "x":x, "y":y, "button":"left", "clickCount":1}) driver.execute_cdp_cmd("Input.dispatchMouseEvent", {"type":"mouseMoved", "x":x, "y":y, "button":"left", "clickCount":1})
Sektor
Спасибо
Sektor
Знакомы?
Raso
hi please dm for puppeteer projects. im expert
Kila
Знакомы?
Знакомы
I I
Здравствуйте! Недавно прошла обучение по теме ИИ осталось много полезных материалов: видео, конспекты, инструменты. Могу поделиться просто так, вдруг кому-то пригодится. Если интересно, дайте знать, отправлю 😊
Raso
Hi everyone do you need bypass cloudflare? Please dm im expert. join my server: https://t.me/+-ymZ5mvsp_EwYTA0
I I
Здравствуйте! Недавно прошла обучение по теме ИИ осталось много полезных материалов: видео, конспекты, инструменты. Могу поделиться просто так, вдруг кому-то пригодится. Если интересно, дайте знать, отправлю 😊
Phil
Требуется специалист по автоматизации браузера (Playwright/Puppeteer, антидетект) для массовой эмуляции пользовательских действий Описание задачи: Ищем опытного разработчика для создания и поддержки системы массовой эмуляции пользовательских действий на веб-платформе. Требуется реализовать автоматизацию сценариев с помощью Playwright или Puppeteer (в связке с puppeteer-cluster или аналогом) и интеграцией с антидетект-браузером (например, Nstbrowser). Требования: • Опыт работы с Playwright или Puppeteer (Node.js/Python) • Навыки кластеризации и масштабирования задач (puppeteer-cluster, playwright-cluster, Selenium Grid и пр.) • Знание принципов обхода антибот-систем, опыт работы с антидетект-браузерами • Умение работать с прокси, управлять браузерными профилями • Опыт написания устойчивых и масштабируемых скриптов автоматизации Задачи: • Настроить инфраструктуру для выполнения до 500 000 действий в сутки (каждое до 2 минут) • Реализовать сценарии: поиск, переходы, клики, скроллы, заполнение форм, просмотр карточек, взаимодействие с элементами интерфейса и т.д. • Интегрировать антидетект-браузер (Nstbrowser или аналог) • Организовать логирование, мониторинг и обработку ошибок • Подготовить инструкции по развертыванию и эксплуатации Дополнительно: • Желательно наличие реализованных похожих проектов • Готовность к долгосрочному сотрудничеству Ожидаемая форма работы: Удалённо, по договорённости.
〘 Желтушка Ворон 〙
Ребят, добрый день. Что обычно смотрит cloudflare? User agent, proxy, и так далее я не подключал, попробовал просто открыть сессию браузера через puppeteer, зашёл на сайт, а там бесконечная капча от клары (cloudflare). Чем её решаете?
ZDev | Разработчик
Возможно, но не факт, что ещё и TLS Fingerprint тоже
Алексей
Привет
Алексей
Подскажите по puppeteer пож
〘 Желтушка Ворон 〙
Ребят, какие методы нужно вызывать, чтобы срабатывал скрипт перед открытием новой страницы, да и впринципе этот скрипт всегда вызывался, (обновление страницы, перенаправление). Есть у меня js, который подмену webGL делает, так вот я привязал page.EvaluteFunctionOnNewDocumentAsync(my_script, vendor, renderer); // Не всегда работает. Можете подсказать что нужно ещё делать или какие обработчики существуют? Если что puppeteer-extra меня не устраивает, т.к. пишу на новых версиях puppeteer c#
Sektor
Баги всякие как по мне
〘 Желтушка Ворон 〙
Я не могу на node.js писать, к сожалению. Баги там просто адекватные бывают, например, скрипт работает, а я закрою самостоятельно браузер, если catch (PuppeteerException) отсутствует, то программа выпадает, ну, это нормально. Я привязал browser.TargetCreated += async (_, e) => { await this.webGL(await e.Target.AsyncPage()); page.FrameNavigation += async (_, e) => { await this.webGL(page); }; }; // Точно также, но для контекста браузера
〘 Желтушка Ворон 〙
Так проблема, получается, в некорректной обработке эксепшенов. Или забыл что-то в try/catch обернуть, либо async где-то пропустил.
Короче, проблема в другом. При открытии браузера, и ввода в поиск bot.sannysoft.com всё хорошо, также и с window.open(...), но при нажатии на кнопку, которая перенаправляет текущую вкладку на этот url, то скрипт не выполняется
User
Подскажите, как нажать кнопку ОК на всплывающем сообщении браузера? Стандартными методами не работает, пробовал через page.on('dialog', async dialog => { await dialog.accept(); }) а также через const okButton = await page.$x('//button[contains(., "ОК") or contains(., "Понятно")]'); if(okButton.length > 0) await okButton[0].click();
User
Задержки ставил?) я в ноде ноль , за пару дней на ноде прокладку для пхп сделал под парсер )))
Задержки ставил, т.е. дожидается появление сообщения, но никак не обнаруживает.
Алексей
Это ты запускал из php ноду?)
Нет. Ноду локально на порту поднял и по гет урл передаю и ответ хтмл. Пару строчек кода. Правда отладить это почти неделя заняла 😅. А так еще и нода подгружает браузер и просто урлы отрабатывает за одну секунду. А вот каждый раз браузер подгружать и парсить и закрывать и так по кругу это 25 35 сек примерно. Но я нашел решение. Могу в паблик скинуть код если нужно. Слава гпт нейронке и поиску...
Алексей
Да, нода пол свои задачи круче пхп. Но под пхп больше решений. Хорошо совмещать.
ZDev | Разработчик
Да, нода пол свои задачи круче пхп. Но под пхп больше решений. Хорошо совмещать.
Плохо искал, загляни на npm или край на github, под ноду всё есть. Node.JS хороша в I/O задачах
Алексей
Я свои задачи уже решил по коду, парсю в БД, комп гудит... 😎
Алексей
Сам с нуля под ноду через чат гпб нашел ошибки м решения. Тема работает. Но не для долго правда.
Алексей
Без чата это и дольше бывало и не факт что решалось. Как-то так.
ZDev | Разработчик
Подскажите, как нажать кнопку ОК на всплывающем сообщении браузера? Стандартными методами не работает, пробовал через page.on('dialog', async dialog => { await dialog.accept(); }) а также через const okButton = await page.$x('//button[contains(., "ОК") or contains(., "Понятно")]'); if(okButton.length > 0) await okButton[0].click();
page.on('dialog') не сработает, т.к события вызывается только для 'alert' | 'confirm' | 'prompt' | 'beforeunload' На странице тоже наверное нет смысла искать, т.к это интерфейс браузера, а не страницы
ZDev | Разработчик
QWEN: В Puppeteer и его "наследнике" Puppeteer Core / Playwright , напрямую нажимать на элементы интерфейса браузера (UI) — такие как кнопки закладок, адресная строка, кнопка "Назад", меню Chrome и т.п. — нельзя стандартными средствами. Причина в том, что Puppeteer работает через DevTools Protocol , который предоставляет доступ к внутренностям веб-страницы и отдельных контекстов выполнения , но не к UI-элементам самого браузера .
User
На такие кнопки нельзя никак нажимать из самого браузера. Со страницей расширений так же.
Никаких вариантов нет? Может отключить сообщения браузера можно в args?
ZDev | Разработчик
Никаких вариантов нет? Может отключить сообщения браузера можно в args?
const browser = await puppeteer.launch({ headless: false, args: [ '--disable-features=PasswordProtectionWarningTrigger', '--disable-autofill-keyboard-accessory-view', '--disable-password-manager-reauthentication', ], });
ZDev | Разработчик
Не помогает, всё равно сообщение выскакивает.
Чёт сам ищу - ничего ни в гугл, ни в доке, ни в ai
User
Сильно мешает?
После ввода пароля дальше не пройти пока кнопку ОК не нажмёшь. Нашёл такое, сейчас опробываю разные варианты https://stackoverflow.com/questions/79215348/puppeteer-how-to-disable-change-your-password-password-leak-detection-popup
〘 Желтушка Ворон 〙
Ребят, как боритесь с этим? Node is either not clickable or not an Element Я пробовал сам в DevTools использовать метод click, то работает, то нет. a = document.querySelector(...); if (!(a == null || a == undefined)) a.click(); // Всегда находит объект Что посоветуете?
〘 Желтушка Ворон 〙
https://stackoverflow.com/questions/70892717/error-node-is-either-not-clickable-or-not-an-htmlelement-puppeteer-when-i-tri
Это не помогло мне. Думаю, просто кликать на странице по координатам, главное правильно получить координаты элемента...
ZDev | Разработчик
https://github.com/puppeteer/puppeteer/issues/8627#issuecomment-1175096938
ZDev | Разработчик
Можно пробовать ждать видимости элемента: await page.waitForSelector(selector, { visible: true });
〘 Желтушка Ворон 〙
Кстати, как работает эта видимость? Я вот делал такое, но никогда не дожидается. Хотя элемент я сам глазами вижу, и мышкой тыкнуть могу, в этом плане хорошо. У меня есть массив div'ов, вот последние 3-4 могут быть такими корявыми, что-ли.
〘 Желтушка Ворон 〙
Точно не во IFrame, даже в DevTools внутри 'top' фрейма (главного) искал, находится, но не кликается