Cloudflare Challenge — широко используемый антибот-механизм, предназначенный для защиты ресурсов веб-сайтов от вредоносного трафика. Одна из его основных функций — Cloudflare 5s Challenge, эффективно блокирующий автоматизированные запросы с помощью динамической верификации.
Cloudflare 5s Challenge — это интеллектуальный механизм верификации. Когда пользователь обращается к веб-сайту, защищенному Cloudflare, система заставляет его ждать 5 секунд. За это время Cloudflare выполняет ряд проверок среды браузера пользователя, включая, помимо прочего:
Для разработчиков веб-скрейпинга Cloudflare 5s Challenge представляет следующие проблемы:
Комбинируя Puppeteer с облачным сервисом Browserless от Nstbrowser, вы можете имитировать поведение браузеров реальных пользователей, чтобы обойти Cloudflare 5s Challenge и продолжить выполнение задач веб-скрейпинга.
Browserless — высокопроизводительный продукт облачного headless-браузера от Nstbrowser. Он предназначен для задач автоматизации, предлагая мощные возможности удаленного управления через API и WebSocket.
С Browserless разработчики могут легко обходить сложные антибот-механизмы (такие как Cloudflare Challenge) и сосредоточиться на реализации своей бизнес-логики, не беспокоясь о технических препятствиях.
npm install puppeteer-core
При написании вашей бизнес-логики с помощью Puppeteer вам больше не нужно беспокоиться о блокировке Cloudflare 5s Challenge. Облачный сервис Browserless от Nstbrowser автоматически обработает верификацию за вас, позволяя вам сосредоточиться исключительно на своем коде.
Ниже приведен пример полного скрипта:
import puppeteer from 'puppeteer-core';
const API_KEY = "your api key"; // required
const HOST = 'wss://less.nstbrowser.io';
const config = {
proxy: 'your proxy',
headless: true,
};
const query = new URLSearchParams({
"x-api-key": API_KEY, // required
"config": JSON.stringify(config),
});
const browserWSEndpoint = `${HOST}/connect?${query.toString()}`;
(async () => {
const browser = await puppeteer.connect({
browserWSEndpoint: browserWSEndpoint,
defaultViewport: null,
});
const page = await browser.newPage();
try {
await page.goto('https://www.scrapingcourse.com/cloudflare-challenge', {waitUntil: 'domcontentloaded'});
// TODO: Add your business logic here
await page.waitForSelector('#challenge-info', {visible: true});
await page.screenshot({path: 'challenge-solved.png', fullPage: true});
} catch (e) {
console.error(e);
} finally {
await browser.close();
}
})();
Вы также можете напрямую протестировать фактическое выполнение кода в функции Playground в меню Browserless клиента Nstbrowser.
Следуя этому руководству, разработчики могут легко обойти Cloudflare 5s Challenge, используя облачный сервис Browserless от Nstbrowser для значительного повышения эффективности и стабильности своих проектов веб-скрейпинга.