Как обойти флажок Cloudflare/проверку безопасности в Puppeteer?

Как обойти флажок Cloudflare/проверку безопасности в Puppeteer? например, если я запускаю свой скрипт, он автоматически устанавливает флажок Cloudflare и проходит проверку безопасности.

Можно ли это как-нибудь сделать в Node.js? Я тоже пытался использовать User-agent, но не получилось. Я также обнаружил пакет «antibotbrowser» из этого поста https://stackoverflow.com/a/77853159/23575116 но в моем случае это тоже не работает.

import { startbrowser } from "antibotbrowser";
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';

puppeteer.use(StealthPlugin());

(async () => {
    const antibrowser = await startbrowser();

    const browser = await puppeteer.connect({
        browserWSEndpoint: antibrowser.websokcet,
        headless: false, 
    });

    const page = await browser.newPage();

    await page.setViewport({ width: 1366, height: 768 });
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');

    await page.goto("https://www.doordash.com");

    await page.waitForTimeout(5000);

    const title = await page.title();
    console.info("Page title:", title);
    await browser.close();
})();

Не уверен, но в этом вся суть капчи/защиты...

Marc 13.03.2024 12:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
728
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из этого комментария к проблеме я попробовал добавить строку targetFilter: (target) => target.type() !== "other" к puppeteer.launch, и, похоже, это сработало.

const puppeteer = require("puppeteer-extra");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");

puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    targetFilter: (target) => target.type() !== "other",
  });

  const page = await browser.newPage();
  await page.goto("https://www.doordash.com");

})();

Если у вас это не работает, проверьте другие комментарии по этому вопросу, это кажется сложной проблемой.

Другие вопросы по теме