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 GeeTest CAPTCHA v4, 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 GeeTest CAPTCHA v4 để 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ý.
Khi kiểm thử biểu mẫu chứa GeeTest CAPTCHA v4, bạn thường phải xác minh xem captcha đã tích hợp đúng và hoạt động ổn định chưa.
Bạn có thể tự kiểm tra captcha trên site.
Để giải tự động có thể dùng CapMonster Cloud, dịch vụ nhận tham số captcha, xử lý trên máy chủ của họ và trả về token sẵn dùng. Chèn token này vào form để vượt qua kiểm tra mà không cần tương tác người dùng.
Làm việc với CapMonster Cloud qua API thường gồm các bước:
Trong request gửi để giải GeeTest CAPTCHA v4, bạn cần chỉ định các tham số sau:
type - GeeTestTask;
websiteURL - địa chỉ trang (URL) nơi captcha được hiển thị và giải;
gt - khóa định danh GeeTest cho domain – tham số captcha_id;
version - 4;
geetestApiServerSubdomain - subdomain của máy chủ GeeTest API (phải khác với api.geetest.com);
geetestGetLib - đường dẫn tới script captcha để hiển thị trên trang. Một số website có thể bắt buộc tham số này;
initParameters - các tham số bổ sung cho phiên bản 4, dùng cùng với “riskType” (loại captcha/đặc điểm cách kiểm tra).
https://api.capmonster.cloud/createTask{
"clientKey": "YOUR_CAPMONSTER_CLOUD_API_KEY",
"task": {
"type": "GeeTestTask",
"websiteURL": "https://gt4.geetest.com/",
"gt": "54088bb07d2df3c46b79f80300b0abbe",
"version": 4,
"initParameters": {
"riskType": "slide"
}
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId": 0,
"status": "ready",
"solution": {
"captcha_id": "f5c2ad5a8a3cf37192d8b9c039950f79",
"lot_number": "bcb2c6ce2f8e4e9da74f2c1fa63bd713",
"pass_token": "edc7a17716535a5ae624ef4707cb6e7e478dc557608b068d202682c8297695cf",
"gen_time": "1683794919",
"captcha_output": "XwmTZEJCJEnRIJBlvtEAZ662T...[cut]...SQ3fX-MyoYOVDMDXWSRQig56"
}
}
// npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from "playwright";
import {
CapMonsterCloudClientFactory,
ClientOptions,
GeeTestRequest
} from "@zennolab_com/capmonstercloud-client";
const CAPMONSTER_API_KEY = "YOUR_CAPMONSTER_API_KEY";
async function solveGeetestV4(pageUrl) {
const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({ viewport: null });
const page = await context.newPage();
let detected = null;
let solutionObj = null;
// 1. Chặn (intercept) response /load (xác định captcha_id, challenge, v.v.)
page.on("response", async (response) => {
const url = response.url();
if (!url.startsWith("https://gcaptcha4.geetest.com/load?")) return;
const params = new URLSearchParams(url.split("?")[1] || "");
const captchaId = params.get("captcha_id");
const challenge = params.get("challenge");
const captchaType = params.get("captcha_type");
if (captchaId && challenge) {
detected = { captchaId, challenge, captchaType };
console.log("Detected GeeTest v4 load:", detected);
}
});
// 2. Tải (load) trang
console.log("Opening page:", pageUrl);
await page.goto(pageUrl, { waitUntil: "domcontentloaded" });
// 3. Chờ cho đến khi bắt được /load
console.log("Waiting for GeeTest /load...");
while (!detected) {
await page.waitForTimeout(500);
}
// 4. Gửi task lên CapMonster Cloud
console.log("Sending task to CapMonster...");
const cmc = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: CAPMONSTER_API_KEY })
);
const task = new GeeTestRequest({
websiteURL: pageUrl,
gt: detected.captchaId,
challenge: detected.challenge,
version: "4",
initParameters: {
riskType: detected.captchaType || "slide"
}
});
const solveRes = await cmc.Solve(task);
const sol = solveRes.solution || solveRes;
solutionObj = {
captcha_id: sol.captcha_id || detected.captchaId,
captcha_output: sol.captcha_output,
lot_number: sol.lot_number,
pass_token: sol.pass_token
};
console.log("Got solution from CapMonster:", solutionObj);
// 5. Chèn giá trị của bạn vào request /verify để nhận phản hồi thành công
await page.route("https://gcaptcha4.geetest.com/verify*", async (route) => {
console.log("Intercepted /verify, injecting fake success...");
const body = `geetest_${Date.now()}(${JSON.stringify({
status: "success",
data: {
result: "success",
seccode: {
captcha_id: solutionObj.captcha_id,
captcha_output: solutionObj.captcha_output,
lot_number: solutionObj.lot_number,
pass_token: solutionObj.pass_token
}
}
})})`;
await route.fulfill({
status: 200,
contentType: "application/javascript",
body
});
});
// 6. Mô phỏng hành động người dùng (ví dụ: nhấp vào nút captcha)
console.log("Waiting for captcha interaction...");
await page.waitForTimeout(3000);
// Ví dụ gọi hàm kiểm tra:
try {
await page.click('.geetest_btn'); // nút captcha
console.log("Clicked captcha button");
} catch {
console.log("Captcha button not found");
}
// Đôi khi cần gọi verify() thủ công:
await page.evaluate(() => {
if (window.initGeetest4 && typeof verify === "function") {
verify();
}
});
console.log("Waiting for verification request...");
await page.waitForTimeout(3000);
await browser.close();
return { detected, solution: solutionObj };
}
(async () => {
const url = "https://example.com"; // thay bằng trang có GeeTest v4
const res = await solveGeetestV4(url);
console.log("FINISHED:", res);
})();
1. Đăng ký hoặc đăng nhập vào tài khoản GeeTest của bạn.
2. Vào Captcha Dashboard và chọn Behavior Verification v4:

3. Trong bảng điều khiển, nhấp + Create application.
4. Nhập APP/website name (tên website hoặc ứng dụng sử dụng captcha), Address (domain chính của website nơi sẽ cài captcha, ví dụ https://example.com), Industry (nhóm lĩnh vực của website, ví dụ “E-commerce”, “Social Media”, v.v.), sau đó nhấp Confirm.
5. Nhấp Add events cạnh tên ứng dụng vừa tạo. Chỉ định Event – tên scenario cụ thể nơi captcha được dùng, ví dụ login, register, v.v.; Device – nền tảng (ví dụ Web/Wap); Business types – loại scenario sử dụng captcha (ví dụ Sign-up / Sign-in — đăng ký / đăng nhập). Nhấp Add.
6. Bây giờ trong trang quản lý của bạn sẽ xuất hiện ID (dùng ở cả phía client và server) và Key (dùng ở server để kiểm tra) của captcha vừa tạo:

7. Tích hợp phần client
Nhúng script:
<script src="https://static.geetest.com/v4/gt4.js"></script>Khởi tạo CAPTCHA:
initGeetest4(
{ captchaId: "Your CaptchaId" },
function (captcha) {
captcha.appendTo("#captcha"); // gắn vào một phần tử trên trang
}
);Lưu ý:
<!-- Nhúng script CAPTCHA -->
<script src="https://static.geetest.com/v4/gt4.js"></script>
</head>
<body>
<h1>CAPTCHA Demo</h1>
<!-- Container cho CAPTCHA -->
<div id="captcha"></div>
<script>
// Khởi tạo CAPTCHA
initGeetest4(
{
captchaId: "YOUR_CAPTCHA_ID" // thay bằng CaptchaId của bạn
},
function (captcha) {
// Gắn CAPTCHA vào phần tử trên trang
captcha.appendTo("#captcha");
// Tại đây có thể xử lý khi kiểm tra thành công
captcha.onSuccess(function() {
const validate = captcha.getValidate();
console.log("CAPTCHA passed!", validate);
// Tại đây có thể gửi validate lên server để kiểm tra
});
}
);
</script>
8. Cấu hình phần server.
Khi người dùng vượt qua CAPTCHA ở frontend, một bộ tham số được tạo ra. Bạn cần gửi các tham số này tới backend và gọi API kiểm tra lần hai (secondary verification API) của GeeTest để xác nhận việc kiểm tra là hợp lệ.
Secondary verification API:
http://gcaptcha4.geetest.com/validateCác tham số chính của request
{
"status": "success",
"result": "success",
"reason": "",
"captcha_args": {
"used_type": "slide",
"user_ip": "127.0.0.1",
"lot_number": "4dc3cfc2cdff448cad8d13107198d473",
"scene": "anti crawler",
"referer": "http://127.0.0.1:8077/"
}
}<?php
$captcha_id = 'YOUR_CAPTCHA_ID';
$captcha_key = 'YOUR_CAPTCHA_KEY';
$api_server = 'http://gcaptcha4.geetest.com';
// Nhận tham số từ frontend
$lot_number = $_POST['lot_number'] ?? '';
$captcha_output = $_POST['captcha_output'] ?? '';
$pass_token = $_POST['pass_token'] ?? '';
$gen_time = $_POST['gen_time'] ?? '';
// Tạo chữ ký (sign_token)
$sign_token = hash_hmac('sha256', $lot_number, $captcha_key);
// Chuẩn bị dữ liệu cho request
$data = [
'lot_number' => $lot_number,
'captcha_output' => $captcha_output,
'pass_token' => $pass_token,
'gen_time' => $gen_time,
'sign_token' => $sign_token
];
// Gửi request tới secondary verification API
$url = $api_server . '/validate?captcha_id=' . $captcha_id;
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
'timeout' => 5
]
];
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
if ($result === FALSE) {
$response = ['login' => 'fail', 'reason' => 'request geetest api fail'];
} else {
$gt_msg = json_decode($result, true);
if ($gt_msg['result'] === 'success') {
$response = ['login' => 'success', 'reason' => $gt_msg['reason']];
} else {
$response = ['login' => 'fail', 'reason' => $gt_msg['reason']];
}
}
echo json_encode($response);
?>
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 GeeTest CAPTCHA v4, 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 GeeTest CAPTCHA v4 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ó.