Thử thách Cloudflare là một cơ chế chống bot được sử dụng rộng rãi, được thiết kế để bảo vệ tài nguyên trang web khỏi lưu lượng truy cập độc hại. Một trong những tính năng cốt lõi của nó là Thử thách Cloudflare 5s, giúp ngăn chặn hiệu quả các yêu cầu tự động thông qua xác minh động.
Thử thách Cloudflare 5s là một cơ chế xác minh thông minh. Khi người dùng truy cập vào một trang web được bảo vệ bởi Cloudflare, hệ thống buộc họ phải chờ trong 5 giây. Trong thời gian này, Cloudflare thực hiện một loạt các kiểm tra trên môi trường trình duyệt của người dùng, bao gồm nhưng không giới hạn ở:
Đối với các nhà phát triển thu thập dữ liệu web, Thử thách Cloudflare 5s đặt ra những thách thức sau:
Bằng cách kết hợp Puppeteer với dịch vụ trình duyệt đám mây Browserless của Nstbrowser, bạn có thể mô phỏng hành vi của trình duyệt người dùng thực để bỏ qua Thử thách Cloudflare 5s và tiếp tục thực hiện các tác vụ thu thập dữ liệu web của mình.
Browserless là một sản phẩm trình duyệt đám mây headless hiệu suất cao do Nstbrowser cung cấp. Nó được thiết kế cho các tác vụ tự động hóa, cung cấp khả năng điều khiển từ xa mạnh mẽ thông qua API và WebSocket.
Với Browserless, các nhà phát triển có thể dễ dàng bỏ qua các cơ chế chống bot phức tạp (chẳng hạn như Thử thách Cloudflare) và tập trung vào việc triển khai logic nghiệp vụ của họ mà không cần lo lắng về các rào cản kỹ thuật.
npm install puppeteer-core
Khi viết logic nghiệp vụ của bạn bằng Puppeteer, bạn không cần phải lo lắng về việc bị chặn bởi Thử thách Cloudflare 5s nữa. Dịch vụ đám mây Browserless của Nstbrowser sẽ tự động xử lý xác minh cho bạn, cho phép bạn chỉ tập trung vào mã của mình.
Dưới đây là một ví dụ kịch bản hoàn chỉnh:
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();
}
})();
Bạn cũng có thể trực tiếp kiểm tra việc thực thi mã thực tế trong tính năng Playground ở menu Browserless của client Nstbrowser.
Bằng cách làm theo hướng dẫn này, các nhà phát triển có thể dễ dàng bỏ qua Thử thách Cloudflare 5s trong khi tận dụng dịch vụ đám mây Browserless của Nstbrowser để nâng cao đáng kể hiệu quả và độ ổn định của các dự án thu thập dữ liệu web của họ.