Cách vượt qua Cloudflare bằng Puppeteer

Advanced Data Extraction Specialist
Trong lĩnh vực thu thập dữ liệu và web crawling, các nhà phát triển thường gặp phải một vấn đề nan giải: làm thế nào để vượt qua cơ chế bảo vệ của Cloudflare một cách hiệu quả. Là một dịch vụ tối ưu hóa hiệu năng và bảo mật website được sử dụng rộng rãi trên thế giới, các chức năng chống crawler và tường lửa của Cloudflare mang đến những thách thức đáng kể cho việc thu thập dữ liệu. Vấn đề này đặc biệt nổi bật khi sử dụng Puppeteer cho web crawling. Bài viết này sẽ đi sâu vào việc khám phá cách sử dụng Scrapeless Scraping Browser, kết hợp với Puppeteer, để dễ dàng vượt qua những giới hạn của Cloudflare và bắt đầu một hành trình thu thập dữ liệu hiệu quả và ổn định.
Cloudflare phát hiện bot như thế nào
Cloudflare phát hiện bot bằng sự kết hợp của nhiều kỹ thuật, bao gồm:
- Phân tích hành vi – Giám sát chuyển động chuột, thao tác bàn phím, hành vi cuộn trang và các mô hình tương tác để phân biệt người dùng thực và bot.
- Uy tín IP – Sử dụng cơ sở dữ liệu tình báo mối đe dọa toàn cầu để xác định các địa chỉ IP đáng ngờ dựa trên hoạt động trong quá khứ.
- Kiểm tra Thách thức-Phản hồi – Triển khai CAPTCHA hoặc các thử thách JavaScript để xác minh xem khách truy cập có phải là người hay không.
- Fingerprinting – Phân tích đặc điểm trình duyệt, tiêu đề HTTP và thuộc tính thiết bị để phát hiện tự động hóa.
- Giới hạn tốc độ – Cờ báo các mô hình yêu cầu bất thường, chẳng hạn như hành vi duyệt web tần suất cao hoặc không giống người.
- Học máy – Sử dụng các mô hình AI được huấn luyện trên lượng lớn dữ liệu lưu lượng truy cập để xác định các hành vi giống bot.
- TLS Fingerprinting – Kiểm tra cách thiết lập kết nối TLS để phân biệt giữa trình duyệt thực và các script tự động.
- Giám sát thực thi JavaScript – Kiểm tra xem JavaScript có được thực thi đúng cách hay không để phát hiện các trình duyệt headless và bot vô hiệu hóa script.
Tại sao chỉ riêng Puppeteer không thể vượt qua Cloudflare
Dưới đây là bản dịch với từ khóa cốt lõi "bypass Cloudflare" được chèn vào:
1. Cơ chế phát hiện phức tạp của Cloudflare
Cloudflare sử dụng nhiều phương pháp để phát hiện và phân biệt giữa người dùng thực và các công cụ tự động như Puppeteer, bao gồm phân tích hành vi, kiểm tra uy tín IP và fingerprinting HTTP. Những cơ chế này khiến Puppeteer khó có thể tự mình vượt qua Cloudflare.
2. Hành vi mặc định của Puppeteer dễ bị phát hiện
Theo mặc định, Puppeteer thể hiện các hành vi khác với người dùng thực, chẳng hạn như:
- Chuỗi user-agent cố định không khớp với các trình duyệt thông thường.
- Thiếu các tương tác giống người, chẳng hạn như chuyển động chuột hoặc mô hình nhấp chuột không tự nhiên.
- Tiêu đề yêu cầu riêng biệt cho thấy đó là một công cụ tự động.
3. Cơ chế thách thức của Cloudflare
Khi Cloudflare phát hiện lưu lượng truy cập đáng ngờ, nó sẽ kích hoạt các thách thức như CAPTCHA hoặc các bước xác minh. Chỉ riêng Puppeteer không thể giải quyết các thách thức này, khiến việc vượt qua Cloudflare mà không cần công cụ bổ sung là không thể.
4. Cần cấu hình và công cụ bổ sung
Để vượt qua Cloudflare, Puppeteer cần các thiết lập bổ sung, chẳng hạn như:
- Mô phỏng hành vi của con người với độ trễ ngẫu nhiên và các tương tác thực tế.
- Sử dụng proxy IP để tránh bị cấm IP.
- Thay đổi tiêu đề yêu cầu để bắt chước trình duyệt thực.
- Tích hợp các dịch vụ giải quyết CAPTCHA như 2Captcha.
5. Luật phát hiện được cập nhật liên tục
Cloudflare thường xuyên cập nhật thuật toán phát hiện của mình, khiến các phương pháp vượt qua cũ trở nên vô hiệu theo thời gian.
Tóm lại, chỉ riêng Puppeteer gặp khó khăn trong việc vượt qua hệ thống phát hiện của Cloudflare. Nó cần được kết hợp với các kỹ thuật và công cụ khác để mô phỏng hành vi của con người và xử lý các thách thức của Cloudflare một cách hiệu quả.
Phương pháp #1: Vượt qua Cloudflare bằng puppeteer-extra-plugin-stealth
puppeteer-extra-plugin-stealth là một bản vá giúp vượt qua Cloudflare bằng cách che giấu các thuộc tính trình duyệt tự động của Puppeteer, khiến nó trông giống như một trình duyệt thực tế.
Ví dụ: Plugin Stealth ghi đè thuộc tính WebDriver và thay thế cờ HeadlessChrome bằng Chrome để che giấu các tín hiệu tự động hóa. Nó cũng mô phỏng các thuộc tính trình duyệt hợp lệ khác, chẳng hạn như chrome.runtime, khiến nó trông giống như headful ngay cả ở chế độ headless.
Plugin Puppeteer Stealth sử dụng API tương tự như Puppeteer cơ bản, vì vậy không có gì khó khăn cho các nhà phát triển đã sử dụng Puppeteer.
Hãy vượt qua CoinTracker, một website có bảo vệ Cloudflare đơn giản, để xem cách Puppeteer Stealth hoạt động.
Đầu tiên, cài đặt plugin:
npm install puppeteer-extra puppeteer-extra-plugin-stealth
Bây giờ, nhập các thư viện cần thiết và thêm plugin Stealth. Sau đó, yêu cầu website được bảo vệ và chụp ảnh màn hình trang chủ của nó:
// npm install puppeteer-extra puppeteer-extra-plugin-stealth
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
// add the stealth plugin
puppeteer.use(StealthPlugin());
(async () => {
// set up browser environment
const browser = await puppeteer.launch();
const page = await browser.newPage();
// navigate to a URL
await page.goto('https://sailboatdata.com/sailboat/11-meter/', {
waitUntil: 'load',
});
// take page screenshot
await page.screenshot({ path: 'screenshot.png' });
// close the browser instance
await browser.close();
})();
Plugin Puppeteer Stealth vượt qua Cloudflare và chụp ảnh màn hình trang chủ của website, như hình dưới:
Bạn đã thành công trong việc tránh phát hiện của Cloudflare.
Tất nhiên, website mục tiêu hiện tại dễ truy cập vì nó không áp dụng bất kỳ kỹ thuật phát hiện tinh vi nào.
Plugin Puppeteer Stealth có thể xử lý các biện pháp bảo mật nâng cao hơn không? Câu trả lời là...
Plugin Stealth bị chặn, như hình dưới.
Giới hạn của plugin Puppeteer Stealth
Một số website sử dụng các kiểm tra bảo mật Cloudflare nâng cao hơn so với các website khác. Trong những trường hợp đó, việc che giấu các thuộc tính tự động hóa của Puppeteer bằng kỹ thuật tránh Cloudflare puppeteer-extra-plugin-stealth là không đủ để vượt qua.
Ví dụ, Puppeteer Stealth bị chặn khi cố gắng truy cập trang Cloudflare Challenge.
Hãy tự mình thử bằng cách thay thế URL mục tiêu trước đó bằng URL trang thách thức:
// npm install puppeteer-extra puppeteer-extra-plugin-stealth
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
// add the stealth plugin
puppeteer.use(StealthPlugin());
(async () => {
// set up browser environment
const browser = await puppeteer.launch();
const page = await browser.newPage();
// navigate to a URL
await page.goto('https://www.scrapingcourse.com/cloudflare-challenge', {
waitUntil: 'networkidle0',
});
// wait for the challenge to resolve
await new Promise(function (resolve) {
setTimeout(resolve, 10000);
});
// take page screenshot
await page.screenshot({ path: 'screenshot.png' });
// close the browser instance
await browser.close();
})();
Plugin Stealth bị chặn, như hình dưới:
Kết quả cho thấy rằng một hệ thống chống bot Cloudflare nâng cao hơn đã phát hiện plugin Stealth là một bot. Plugin Stealth vẫn có một số đặc điểm có thể phát hiện được, chẳng hạn như kết xuất WebGL hoặc Canvas không nhất quán, khiến nó bị lộ là một bot.
Làm thế nào bạn có thể giải quyết những hạn chế này và trích xuất dữ liệu từ các website phức tạp? Câu trả lời là Scrapeless.
Phương pháp 2: Vượt qua Cloudflare bằng Scrapeless và Puppeteer
Cách dễ nhất để tránh những hạn chế của Puppeteer và plugin Stealth của nó là tích hợp thư viện với Scrapeless Scraping Browser. Với Scrapeless Scraping Browser, trình thu thập dữ liệu Puppeteer của bạn sẽ được tăng cường khả năng tránh phát hiện để trông giống như một người dùng thực và vượt qua hệ thống phát hiện chống bot.
Tất cả những gì bạn cần làm là thêm một dòng code duy nhất vào script Puppeteer hiện có của bạn, và Scraping Browser sẽ giúp bạn xử lý fingerprinting trình duyệt nâng cao, thêm các plugin và tiện ích mở rộng bị thiếu, quản lý luân phiên proxy dân cư và hơn thế nữa.
Scraping Browser cũng chạy trên cloud, ngăn chặn sự tiêu tốn bộ nhớ của việc chạy các phiên bản trình duyệt cục bộ. Tính năng này làm cho nó có khả năng mở rộng cao.
Các tính năng chính của Scrpeless Scraping Browser
Scrpeless Scraping Browser là một công cụ được thiết kế để trích xuất dữ liệu web hiệu quả và quy mô lớn:
- Mô phỏng hành vi tương tác của con người thực để vượt qua các cơ chế chống crawler nâng cao như phát hiện fingerprinting trình duyệt và TLS fingerprinting.
- Hỗ trợ giải quyết tự động nhiều loại mã xác minh, bao gồm cf_challenge để đảm bảo quá trình crawling không bị gián đoạn.
- Tích hợp liền mạch các công cụ phổ biến như Puppeteer và Playwright để đơn giản hóa quá trình phát triển và hỗ trợ khởi chạy các tác vụ tự động chỉ với một dòng code.
Cách tích hợp Scraping Browser với Puppeteer
Scrapeless yêu cầu puppeteer-core, một phiên bản Puppeteer không tải xuống binary Chrome. Vì vậy, hãy đảm bảo bạn cài đặt nó:
npm install puppeteer-core
Bước 1. Đăng ký Scrapeless, nhấp vào API Key Management > Create API Key để tạo API Key Scrapeless của bạn.
Đăng ký Scrapeless và nhận bản dùng thử miễn phí. Nếu bạn có bất kỳ câu hỏi nào, bạn cũng có thể liên hệ với Liam qua Discord

Bước 2. Sau đó, hãy truy cập Scraping Browser và sao chép URL Trình duyệt của bạn.

Tích hợp URL trình duyệt đã sao chép vào script Puppeteer của bạn như sau:
const puppeteer = require('puppeteer-core');
const connectionURL = 'wss://browser.scrapeless.com/browser?token=<YOUR_Scrapeless_API_KEY>&session_ttl=180&proxy_country=ANY';
(async () => {
// set up browser environment
const browser = await puppeteer.connect({
browserWSEndpoint: connectionURL,
});
// create a new page
const page = await browser.newPage();
// navigate to a URL
await page.goto('https://www.scrapingcourse.com/cloudflare-challenge', {
waitUntil: 'networkidle0',
});
// wait for the challenge to resolve
await new Promise(function (resolve) {
setTimeout(resolve, 10000);
});
//take page screenshot
await page.screenshot({ path: 'screenshot.png' });
// close the browser instance
await browser.close();
})();
Bạn cần thay thế https://www.scrapingcourse.com/cloudflare-challenge bằng bất kỳ website nào có cloudflare-challenge;
Cũng hãy thay thế API Key Scrapeless của bạn trong phần token.
Code trên truy cập và chụp ảnh màn hình trang được bảo vệ. Xem kết quả bên dưới:
Chúc mừng 🎉! Bạn đã thành công trong việc vượt qua Cloudflare bằng Puppeteer và Scrapeless.
Lợi ích của việc tích hợp Scrapeless Scraping Browser vào Puppeteer để vượt qua Cloudflare
Việc tích hợp Scrapeless Scraping Browser vào Puppeteer để vượt qua Cloudflare có những lợi ích sau:
- Tăng cường khả năng chống phát hiện
Chỉ riêng Puppeteer có các tính năng tự động hóa rõ ràng (ví dụ: thuộc tính navigator.webdriver, cờ user-agent HeadlessChrome), khiến Cloudflare dễ dàng xác định là bot. Scrapeless Scraping Browser có thể bắt chước dấu vân tay trình duyệt thực (loại, user-agent, độ phân giải màn hình, v.v.), che giấu hiệu quả các tính năng tự động hóa của Puppeteer, giảm nguy cơ bị Cloudflare phát hiện và tăng tỷ lệ thành công của việc thu thập dữ liệu.
- Đơn giản hóa cấu hình và tích hợp
Scrapeless Scraping Browser cung cấp API và phương pháp tích hợp dễ sử dụng. Các nhà phát triển có thể thêm một lượng nhỏ code vào các script Puppeteer hiện có để tận dụng các tính năng chống phát hiện mạnh mẽ của nó, mà không cần phải hiểu về phần bên trong của Puppeteer hoặc các cơ chế chống thu thập dữ liệu của Cloudflare. Điều này làm giảm rào cản và khối lượng công việc phát triển.
- Nâng cao khả năng bảo trì code
Việc sử dụng Scrapeless Scraping Browser làm giảm sự phụ thuộc vào các cấu hình cơ bản của Puppeteer và các script tùy chỉnh. Điều này làm cho code sạch hơn và rõ ràng hơn, tạo điều kiện thuận lợi cho việc bảo trì và nâng cấp trong tương lai.
Tài nguyên bổ sung
Hướng dẫn đầy đủ về cách vượt qua Cloudflare Challenge
Cách thu thập dữ liệu Google News bằng Python
Tài liệu chính thức của API Scrapeless
Kết luận
Tóm lại, việc vượt qua Cloudflare bằng Puppeteer yêu cầu các công cụ và phương pháp hiệu quả. Scrapeless Scraping Browser cung cấp một giải pháp đơn giản nhưng mạnh mẽ bằng cách tăng cường khả năng chống phát hiện, đơn giản hóa tích hợp và cải thiện khả năng bảo trì. Luôn đảm bảo tuân thủ pháp luật khi thu thập dữ liệu.
Cải thiện hiệu quả kinh doanh của bạn và chọn các giải pháp tùy chỉnh cấp doanh nghiệp của Scrapeless Scraping Browser. Chúng tôi cung cấp các dịch vụ thu thập dữ liệu chuyên nghiệp và hiệu quả.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.