Cách giải quyết Cloudflare bằng Playwright trong năm 2024
Cách giải quyết Cloudflare bằng Playwright trong năm 2024
Anh Tuan
Data Science Expert
10-Sep-2024
Bạn biết đấy, có một sự phấn khích nhất định khi vượt qua các trở ngại, đặc biệt là khi những trở ngại đó là những người gác cổng kỹ thuật số như Cloudflare. Nếu bạn đã từng thấy mình đang nhìn chằm chằm vào một thử thách Cloudflare trong khi cố gắng tự động hóa một nhiệm vụ web, bạn đang ở trong một nhóm tốt. Tôi đã ở đó, nhiều lần. Nhưng vào năm 2024, trò chơi đã thay đổi, và các công cụ cũng vậy. Hãy để tôi hướng dẫn bạn cách tôi đã giải quyết Cloudflare bằng Playwright, và vâng, chúng ta cũng sẽ nói về người mới xuất hiện một cách lén lút, Cloudflare Turnstile.
Cloudflare là gì và tại sao nó quan trọng
Trước khi chúng ta đi sâu vào việc giải quyết các thử thách Cloudflare, hãy dành một chút thời gian để hiểu những gì chúng ta đang phải đối mặt. Cloudflare là một dịch vụ bảo mật mạnh mẽ được sử dụng bởi hàng triệu trang web để bảo vệ chống lại lưu lượng truy cập độc hại, các cuộc tấn công DDoS và nhiều mối đe dọa khác. Khi nó phát hiện hành vi bất thường - như một kịch bản tự động cố gắng truy cập một trang - nó sẽ đưa ra một thử thách, thường dưới dạng CAPTCHA, để xác minh rằng bạn là một con người chứ không phải một bot.
Nhưng đây là điểm chính: Cloudflare không chỉ đơn thuần là đưa ra CAPTCHA đơn giản nữa. Vào năm 2024, họ đã tung ra một thứ gọi là Cloudflare Turnstile, một hệ thống thử thách tinh vi và thích ứng hơn, được thiết kế để chống chịu hơn với tự động hóa. Đó là một quả hạch cứng để bẻ gãy, nhưng với cách tiếp cận phù hợp, bạn vẫn có thể chiến thắng.
Bạn đang gặp khó khăn với việc liên tục thất bại trong việc giải quyết hoàn toàn captcha khó chịu?
Khám phá giải pháp captcha tự động liền mạch với công nghệ Auto Web Unblock hỗ trợ AI của Capsolver!
Nhận Mã Khuyến mãi của bạn cho các giải pháp captcha hàng đầu; CapSolver: WEBS. Sau khi đổi, bạn sẽ nhận được thêm 5% tiền thưởng sau mỗi lần nạp tiền, Không giới hạn
Tại sao Playwright là công cụ được lựa chọn trong năm 2024
Bạn có thể tự hỏi, "Tại sao Playwright? Tại sao không gắn bó với Selenium hoặc Puppeteer cũ?" Và đó là một câu hỏi hợp lý. Câu trả lời là Playwright đã nổi lên như một thế lực mạnh mẽ cho tự động hóa web, cung cấp các tính năng khiến nó đặc biệt hiệu quả chống lại các thử thách hiện đại như những thử thách do Cloudflare đặt ra.
Playwright hỗ trợ nhiều ngữ cảnh trình duyệt, điều đó có nghĩa là bạn có thể mô phỏng nhiều người dùng hiệu quả hơn. Nó cũng cung cấp nhiều quyền kiểm soát hơn đối với hành vi của trình duyệt, giúp dễ dàng bắt chước các tương tác của người dùng thực - điều này rất quan trọng khi xử lý các biện pháp bảo mật nâng cao của Cloudflare.
Bắt đầu: Cài đặt Playwright
Điều đầu tiên là, nếu bạn chưa có, bạn cần phải cài đặt Playwright. Việc thiết lập rất đơn giản:
bashCopy
npm install playwright
Sau khi cài đặt, bạn đã sẵn sàng để bắt đầu tự động hóa các tác vụ web của mình. Nhưng nếu mục tiêu của bạn là vượt qua các thử thách Cloudflare, đặc biệt là CAPTCHA Turnstile mới của họ, chúng ta cần thực hiện thêm một vài bước. Chúng ta sẽ tận dụng CapSolver, một API của bên thứ ba được thiết kế để giải quyết CAPTCHA như Turnstile, và tích hợp nó với Playwright để truy cập các trang web được bảo vệ bởi Cloudflare.
Bước 1: Lấy siteKey
Trở ngại đầu tiên bạn phải đối mặt với CAPTCHA Turnstile là lấy siteKey từ trang web. Khóa này rất cần thiết để CapSolver xử lý CAPTCHA và cung cấp cho bạn một mã thông báo hợp lệ.
Bạn có thể trích xuất siteKey bằng cách kiểm tra nguồn của trang web hoặc, để làm cho cuộc sống dễ dàng hơn, bạn có thể sử dụng Phần mở rộng CapSolver. Nó tự động phát hiện các tham số CAPTCHA trên trang. Để biết hướng dẫn chi tiết về cách thiết lập, hãy xem bài đăng trên blog của chúng tôi: Xác định các tham số Cloudflare Turnstile.
Sau khi có siteKey, bạn đã sẵn sàng chuyển sang bước tiếp theo.
Bước 2: Gọi API CapSolver để giải quyết CAPTCHA
Với siteKey trong tay, đã đến lúc sử dụng API của CapSolver để giải quyết CAPTCHA Turnstile và lấy mã thông báo hợp lệ. Mã thông báo này sẽ cho phép chúng ta bỏ qua thử thách và tiến hành các tác vụ thu thập dữ liệu web hoặc tự động hóa của mình.
Đây là một đoạn mã mẫu sử dụng axios và Playwright để tương tác với CapSolver:
javascriptCopy
const axios = require('axios');
const playwright = require("playwright");
const api_key = "YOUR_API_KEY"; // Khóa API CapSolver của bạn
const site_key = "0xxxxxx"; // siteKey mà bạn đã lấy
const site_url = "https://xxx.xxx.xxx/xxx"; // URL của trang web mục tiêu
const proxy = "http://xxx:[email protected]:x"; // Tùy chọn: Sử dụng proxy của bạn nếu cần
async function solveCaptcha() {
const payload = {
clientKey: api_key,
task: {
type: 'AntiTurnstileTaskProxyLess',
websiteKey: site_key,
websiteURL: site_url,
metadata: {
action: '', // Tùy chọn, chỉ định nếu cần
type: "turnstile"
}
}
};
try {
const res = await axios.post("https://api.capsolver.com/createTask", payload);
const task_id = res.data.taskId;
if (!task_id) {
console.log("Không thể tạo tác vụ:", res.data);
return;
}
console.log("Tác vụ đã được tạo, đang chờ mã thông báo...");
while (true) {
await new Promise(resolve => setTimeout(resolve, 1000)); // Chờ trong 1 giây trước khi kiểm tra lại
const getResultPayload = {clientKey: api_key, taskId: task_id};
const resp = await axios.post("https://api.capsolver.com/getTaskResult", getResultPayload);
if (resp.data.status === "ready") {
console.log("CAPTCHA đã được giải quyết, mã thông báo đã được nhận:", resp.data.solution.token);
return resp.data.solution.token;
}
if (resp.data.status === "failed" || resp.data.errorId) {
console.log("CAPTCHA giải quyết thất bại! Phản hồi:", resp.data);
return;
}
}
} catch (error) {
console.error("Lỗi khi giải quyết CAPTCHA:", error);
}
}
Trong mã này, chúng ta tạo một tác vụ bằng cách gửi yêu cầu POST đến API của CapSolver, chuyển siteKey và URL của trang web mà chúng ta muốn truy cập. Sau khi tác vụ được tạo, chúng ta liên tục kiểm tra trạng thái cho đến khi CapSolver trả về mã thông báo giải pháp. Mã thông báo này là thứ mà chúng ta sẽ sử dụng để chứng minh với Cloudflare rằng chúng ta là con người.
Bước 3: Tiêm mã thông báo CAPTCHA bằng Playwright
Bây giờ chúng ta đã có mã thông báo CAPTCHA, chúng ta cần tiêm nó vào phiên dưới dạng cookie bằng Playwright. Điều này sẽ cho phép chúng ta điều hướng trang web mà không bị chặn bởi sự bảo vệ của Cloudflare. Đây là cách thực hiện điều đó:
javascriptCopy
const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms));
async function accessSiteWithToken(){
let clearanceCookie;
// Giải quyết CAPTCHA và lấy mã thông báo
await solveCaptcha().then(token => {
clearanceCookie = token;
});
const browser = await playwright.chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
await wait(500);
// Tiêm mã thông báo dưới dạng cookie
await page.setCookie({
name: "cf_clearance",
value: clearanceCookie,
url: site_url, // Đảm bảo điều này khớp với URL mục tiêu
domain: "xx.xx.xx" // Điều chỉnh miền theo trang web thực tế
});
await wait(500);
// Điều hướng đến trang web sau khi đặt cookie
await page.goto(site_url);
// Bây giờ bạn có thể thu thập dữ liệu web hoặc tương tác với trang một cách tự do
console.log("Đã truy cập thành công trang web!");
await browser.close();
}
// Chạy kịch bản để truy cập trang web
accessSiteWithToken().then();
Suy nghĩ cuối cùng
Cloudflare chắc chắn đã khiến việc thu thập dữ liệu web hoặc tự động hóa các tác vụ trở nên khó khăn hơn trong năm 2024, nhưng với các công cụ như Playwright và CapSolver, thử thách không phải là không thể. Khả năng mô phỏng các tương tác của người dùng thực của Playwright kết hợp với API giải quyết CAPTCHA của CapSolver cung cấp một cách mạnh mẽ để bỏ qua những rào cản này mà không cần đổ mồ hôi.
Tất nhiên, luôn luôn là một ý tưởng hay để đảm bảo bạn đang tuân thủ các thực tiễn thu thập dữ liệu web hợp pháp và đạo đức. Một số trang web có chính sách nghiêm ngặt liên quan đến truy cập tự động, vì vậy hãy đảm bảo bạn biết rõ chúng trước khi tiếp tục.
Trong thế giới tự động hóa web luôn thay đổi, điều quan trọng là phải đi trước thời đại - và với Playwright và CapSolver, bạn được trang bị để làm điều đó.
Tuyên bố Tuân thủ: Thông tin được cung cấp trên blog này chỉ mang tính chất tham khảo. CapSolver cam kết tuân thủ tất cả các luật và quy định hiện hành. Việc sử dụng mạng lưới CapSolver cho các hoạt động bất hợp pháp, gian lận hoặc lạm dụng là hoàn toàn bị cấm và sẽ bị điều tra. Các giải pháp giải captcha của chúng tôi nâng cao trải nghiệm người dùng trong khi đảm bảo tuân thủ 100% trong việc giúp giải quyết các khó khăn về captcha trong quá trình thu thập dữ liệu công khai. Chúng tôi khuyến khích việc sử dụng dịch vụ của chúng tôi một cách có trách nhiệm. Để biết thêm thông tin, vui lòng truy cập Điều khoản Dịch vụ và Chính sách Quyền riêng tư.