Trong bài viết này, chúng tôi đã cố gắng trả lời tất cả những câu hỏi quan trọng. Bước đầu tiên để bắt đầu giải quyết vấn đề là xác định hệ thống bảo mật nào đang được sử dụng. Để làm điều đó, bạn có thể tham khảo danh sách các captcha và hệ thống chống bot phổ biến, trong đó có các ví dụ minh họa và những dấu hiệu chính giúp bạn nhanh chóng nhận biết mình đang làm việc với giải pháp nào.
Nếu bạn phát hiện trang web của mình đang sử dụng Cloudflare Challenge, bước tiếp theo là tìm hiểu chi tiết hơn về các đặc tính và cách hoạt động của nó. Ngay trong bài viết này, bạn cũng có thể xem hướng dẫn tích hợp hệ thống Cloudflare Challenge để hiểu đầy đủ cách nó vận hành trên trang web của bạn. Điều đó giúp bạn không chỉ nắm rõ lớp bảo vệ hiện tại mà còn lập kế hoạch bảo trì một cách hợp lý.
Làm việc với CapMonster Cloud qua API thường gồm các bước:
type - TurnstileTask
websiteURL - Địa chỉ trang web nơi captcha được giải
websiteKey - Khóa Turnstile (có thể truyền bất kỳ chuỗi nào)
cloudflareTaskType - cf_clearance
htmlPageBase64 - Trang HTML “Just a moment” được mã hóa Base64, được trả về với mã 403 khi truy cập vào một trang web có lớp bảo vệ này.
userAgent - User-Agent của trình duyệt. Chỉ truyền UA hiện tại từ Windows.
Đối với nhiệm vụ này, bạn cũng cần sử dụng proxy của mình:
proxyType :
proxyAddress - Địa chỉ IP proxy IPv4/IPv6.
proxyPort - Cổng proxy.
proxyLogin - Tên đăng nhập proxy.
proxyPassword - Mật khẩu proxy.
https://api.capmonster.cloud/createTask{
"clientKey":"API_KEY",
"task": {
"type":"TurnstileTask",
"websiteURL":"https://example.com",
"websiteKey":"xxxxxxxxxx",
"cloudflareTaskType": "cf_clearance",
"htmlPageBase64": "PCFET0NUWVBFIGh0...vYm9keT48L2h0bWw+",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"cf_clearance": "1tarGvbY2_ZhQdYxpSBloao.FoOn9VtcJtmb_IQ_hCE-1761217338-1.2.1.1-vyVPoLYIGX0VCJomVuLjF7n0kdM0PXaPjpDsRcohxGr7hb2CE7WfcHpmQZ70goqEjdWxPsDhSVaKNTz9opxWguiNdWEEq_.SceWXIqfP7tnEb69f3bP0mixNqcWy_5P_9INpoAEqr1k7aYU0r45PT4gPr5pwHxedVySyLRdoBXIJasdTE52YOQ3NPdGWTwQ_3h2n_wYqqIvf0kCSAvimRrmsgZxomlyejwqPI6ZHi.w"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from 'playwright';
import {
CapMonsterCloudClientFactory,
ClientOptions,
TurnstileRequest
} from '@zennolab_com/capmonstercloud-client';
// Cấu hình — thay bằng giá trị của bạn
const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://www.example.com';
const SITE_KEY = 'xxxxx'; // Có thể gửi bất kỳ chuỗi nào
const USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36';
// Cấu hình proxy
const proxy = {
proxyType: 'http',
proxyAddress: '8.8.8.8',
proxyPort: 8080,
proxyLogin: 'proxyLogin',
proxyPassword: 'proxyPassword'
};
async function main() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Khởi chạy trình duyệt
const browser = await chromium.launch({
headless: false,
proxy: proxy.proxyAddress ? {
server: `${proxy.proxyType}://${proxy.proxyAddress}:${proxy.proxyPort}`,
username: proxy.proxyLogin,
password: proxy.proxyPassword
} : undefined
});
// Tạo context với User-Agent và kích thước cửa sổ cần thiết (tùy chọn)
const context = await browser.newContext({ userAgent: USER_AGENT, viewport: { width: 1280, height: 800 } });
// Tạo trang và tải URL mục tiêu
const page = await context.newPage();
const resp = await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Trạng thái yêu cầu ban đầu:', resp?.status());
// Lấy HTML của trang và chuyển sang Base64 cho CapMonster
const htmlBase64 = Buffer.from(await page.content(), 'utf-8').toString('base64');
// Tạo nhiệm vụ Turnstile để lấy cf_clearance
const solveResult = await cmcClient.Solve(new TurnstileRequest({
websiteURL: TARGET_URL,
websiteKey: SITE_KEY,
cloudflareTaskType: 'cf_clearance',
htmlPageBase64: htmlBase64,
userAgent: USER_AGENT,
proxy: proxy.proxyAddress ? proxy : undefined
}));
const cf_clearance = solveResult?.solution?.cf_clearance;
if (!cf_clearance) {
console.error('Không thể lấy cf_clearance từ CapMonster:', solveResult);
await browser.close();
return;
}
console.log('cf_clearance nhận được:', cf_clearance);
// Thêm cookie cf_clearance vào context trình duyệt
await context.addCookies([{
name: 'cf_clearance',
value: cf_clearance,
domain: '.' + new URL(TARGET_URL).hostname,
path: '/',
httpOnly: true,
secure: true
}]);
console.log('Cookie cf_clearance đã được thêm thành công vào trình duyệt.');
// Mở lại trang với cf_clearance đã được cài
const page2 = await context.newPage();
const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log('Trạng thái yêu cầu sau khi đặt cf_clearance:', resp2?.status());
await browser.close();
console.log('Script hoàn tất.');
}
main().catch(err => {
console.error('Đã xảy ra lỗi:', err);
process.exit(1);
});
http.request.uri.path contains "/login"Nếu bạn tiếp quản một trang web đã được cài sẵn captcha hoặc một hệ thống bảo vệ khác nhưng lại không có quyền truy cập vào mã nguồn thì cũng không có gì đáng lo! Việc xác định chính xác công nghệ nào đang được sử dụng khá đơn giản. Để kiểm tra xem mọi thứ có hoạt động đúng hay không, bạn có thể dùng dịch vụ nhận dạng CapMonster Cloud trong một môi trường thử nghiệm tách biệt nhằm đảm bảo cơ chế xử lý token và logic kiểm tra đang vận hành chính xác.
Với Cloudflare Challenge, bạn chỉ cần nhận diện hệ thống, quan sát hành vi của nó và xác nhận rằng lớp bảo vệ hoạt động đúng cách. Trong bài viết này, chúng tôi đã chỉ ra cách nhận biết Cloudflare Challenge và nơi tìm hướng dẫn tích hợp hoặc cấu hình lại, giúp bạn tự tin duy trì lớp bảo vệ và kiểm soát hoạt động của nó.