Обходим cloudflare с Puppeteer.js

Обходим cloudflare с Puppeteer.js

Тема в разделе Node.js создана пользователем Хошик
Хошик Автор темы
Рад видеть людей в этом мертвом разделе под названием Node.js
Как бы я этот puppeteer не вертел, но все равно капчу это обойти не мог, потому что надо было сделать именно автоматизацию, а не простой GET запрос для парсинга.

Puppeteer-extra со stealth плагином тут не подходит, потому что использует жс инъекции и cloudflare все равно детектит.
Так что сегодня мы обойдем эту хуйню в пару строк кода
Для обхода мы будем использовать очень интересную библиотеку
Сама либа основана на BAS
Либа, как написано, еще в бете, но для своих мелких проектов для обхода этой хуйни отлично подойдет
Устанавливаем puppeteer, надеюсь все знакомы с тем, как создать нод жс проект
npm i puppeteer-with-fingerprints
npm i puppeteer

JavaScript:
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, то можем подключить вот таким способом


JavaScript:
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);

Сверху