Рад видеть людей в этом мертвом разделе под названием Node.js Как бы я этот puppeteer не вертел, но все равно капчу это обойти не мог, потому что надо было сделать именно автоматизацию, а не простой GET запрос для парсинга. Puppeteer-extra со stealth плагином тут не подходит, потому что использует жс инъекции и cloudflare все равно детектит. Так что сегодня мы обойдем эту хуйню в пару строк кода Задача В форме ZooTools надо ввести свой Email и нажать кнопку для подтверждения. После чего появляется Cloudflare капча, которую обычный puppeteer не обходит Для обхода мы будем использовать очень интересную библиотеку https://github.com/CheshireCaat/puppeteer-with-fingerprints Сама либа основана на BAS https://fingerprints.bablosoft.com Либа, как написано, еще в бете, но для своих мелких проектов для обхода этой хуйни отлично подойдет Устанавливаем puppeteer, надеюсь все знакомы с тем, как создать нод жс проект npm i puppeteer-with-fingerprints npm i puppeteer const { plugin } = require('puppeteer-with-fingerprints'); run() async function run(){ const fingerprint = await plugin.fetch('', { tags: ['Microsoft Windows', 'Chrome'], }); plugin.useFingerprint(fingerprint); const browser = await plugin.launch({headless: true}); const page = await browser.newPage(); await page.goto('https://form.zootools.co/go/bLFJhrGfkOoEQgt3I3LR'); await page.type('div.sc-f883c6f6-0.iWNfih > div:nth-child(2) > div > div > label > input', 'lkljsdbflkasdbfsadhlbfhjdbfjksdabfjaasdkshd@gmail.com', {delay: 20}) await page.click('div.sc-f883c6f6-0.iWNfih > div.sc-3276b432-3.edOQUg > button') await page.waitForNavigation() } JS const { plugin } = require('puppeteer-with-fingerprints'); run() async function run(){ const fingerprint = await plugin.fetch('', { tags: ['Microsoft Windows', 'Chrome'], }); plugin.useFingerprint(fingerprint); const browser = await plugin.launch({headless: true}); const page = await browser.newPage(); await page.goto('https://form.zootools.co/go/bLFJhrGfkOoEQgt3I3LR'); await page.type('div.sc-f883c6f6-0.iWNfih > div:nth-child(2) > div > div > label > input', 'lkljsdbflkasdbfsadhlbfhjdbfjksdabfjaasdkshd@gmail.com', {delay: 20}) await page.click('div.sc-f883c6f6-0.iWNfih > div.sc-3276b432-3.edOQUg > button') await page.waitForNavigation() } После запуска либа подгрузит свои зависимости. Запуск занимает немного больше времени Запускаем и.... Результат Если хотим все же использовать плагины из puppeteer-extra, то можем подключить вот таким способом const puppeteer = require('puppeteer-extra'); const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha'); const { createPlugin } = require('puppeteer-with-fingerprints'); puppeteer.use(RecaptchaPlugin({ provider: { id: "2captcha", token: "xxxxxxxxx" } })); const plugin = createPlugin({ launch: (options) => puppeteer.launch(options) }); let fingerprint = await plugin.fetch('XXXXXXXXXXX', { tags: ['Android'] }); plugin.useFingerprint(fingerprint); ...Код JS const puppeteer = require('puppeteer-extra'); const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha'); const { createPlugin } = require('puppeteer-with-fingerprints'); puppeteer.use(RecaptchaPlugin({ provider: { id: "2captcha", token: "xxxxxxxxx" } })); const plugin = createPlugin({ launch: (options) => puppeteer.launch(options) }); let fingerprint = await plugin.fetch('XXXXXXXXXXX', { tags: ['Android'] }); plugin.useFingerprint(fingerprint); ...Код Всем спасибо, всем
el9in, антибот при простом входе на сайт мб обойдет. Но капчу у меня обходить не хотел, да и эта либа получше stealth плагина будет