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 v3, 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 v3 để 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ý.
GeeTest CAPTCHA v3 là hệ thống bảo vệ trang web khỏi các hành động tự động có thể gây hại cho dịch vụ. Nó giúp phân biệt người dùng thật với bot, đảm bảo an toàn và hoạt động ổn định cho trang web.
Khi kiểm thử biểu mẫu chứa GeeTest CAPTCHA v3, 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 yêu cầu giải GeeTest CAPTCHA v3, bạn cần chỉ định các tham số sau:
type - GeeTestTask;
websiteURL - địa chỉ trang nơi người dùng vượt CAPTCHA. URL chính xác được truyền trong header Referer khi gửi yêu cầu tới https://api-na.geetest.com/gettype.php;
gt - khóa định danh GeeTest gt cho tên miền;
challenge - trước mỗi phiên nhiệm vụ, bạn cần gửi một yêu cầu để lấy giá trị challenge mới; nếu không, mã thông báo (token) đã hết hạn sẽ gây lỗi ERROR_TOKEN_EXPIRED;
geetestApiServerSubdomain - tên miền phụ của máy chủ Geetest API (phải khác với api.geetest.com).
https://api.capmonster.cloud/createTask{
"clientKey":"YOUR_CAPMONSTER_CLOUD_API_KEY",
"task":
{
"type":"GeeTestTask",
"websiteURL":"https://www.example.com",
"gt":"022397c99c9f646f6477822485f30404",
"challenge":"7f044f48bc951ecfbfc03842b5e1fe59",
"geetestApiServerSubdomain":"api-na.geetest.com"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate":"6275e26419211d1f526e674d97110e15",
"seccode":"510cd9735583edcb158601067195a5eb|jordan"
}
}// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, GeeTestRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = 'your_capmonster_cloud_api_key';
const DEMO_PAGE = 'https://example.com';
(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
console.log('Đang mở trang...');
await page.goto(DEMO_PAGE, { waitUntil: 'networkidle' });
console.log('Đang lấy tham số CAPTCHA...');
const init = await page.evaluate(async () => {
// Gửi yêu cầu tới máy chủ để lấy các tham số init-params cho GeeTest — hãy thay bằng endpoint của bạn
const r = await fetch(`/api/v1/example/gee-test/init-params?t=${Date.now()}`);
return r.json();
});
console.log('Init params:', init);
console.log('Đang tạo task cho CapMonster Cloud...');
const cmc = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));
const solRaw = await cmc.Solve(new GeeTestRequest({ websiteURL: DEMO_PAGE, gt: init.gt, challenge: init.challenge }));
const sol = solRaw.solution || solRaw;
console.log('Kết quả giải CAPTCHA:', sol);
console.log('Đang chèn lời giải vào các trường ẩn...');
await page.evaluate(s => {
['challenge','validate','seccode'].forEach(n => {
const el = document.querySelector(`input[name="geetest_${n}"]`);
if(el) el.value = s[n];
});
}, sol);
await page.click('button[data-action="test_action"]'); // thay bằng giá trị của bạn
console.log('Đang gửi yêu cầu verify tới máy chủ...');
const result = await page.evaluate(async () => {
const payload = {
geetest_challenge: document.querySelector('input[name="geetest_challenge"]')?.value,
geetest_validate: document.querySelector('input[name="geetest_validate"]')?.value,
geetest_seccode: document.querySelector('input[name="geetest_seccode"]')?.value
};
// thay bằng giá trị của bạn
const r = await fetch('/api/v1/example/gee-test/verify', {
method:'POST',
headers:{'Content-Type':'application/json'},
body: JSON.stringify(payload)
});
return r.json();
});
console.log('Kết quả xác minh CAPTCHA:', result);
await page.waitForTimeout(3000);
await browser.close();
})();1. Đăng ký hoặc đăng nhập vào tài khoản GeeTest của bạn
2. Truy cập Captcha Dashboard và chọn CAPTCHA v3:

3. Nhấp vào +New Captcha để tạo CAPTCHA mới. Nhập tên CAPTCHA (ví dụ tên sản phẩm hoặc dự án), URL trang web nơi sẽ tích hợp CAPTCHA và chọn ngữ cảnh sử dụng CAPTCHA (ví dụ Đăng nhập / Đăng ký / Khôi phục mật khẩu...).
4. Bạn sẽ nhận được CAPTCHA ID và KEY duy nhất. Có thể cấu hình chúng trong bảng điều khiển bảo mật.

5. Cấu hình phía máy chủ (Server SDK):
Máy chủ làm việc với hai API:
<?php
header('Content-Type: application/json');
const CAPTCHA_ID = '07df3141a35**********19a473d7c50';
const CAPTCHA_KEY = '543b19036ef********8e07d121b81e9';
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
function getJson($url) {
$res = @file_get_contents($url);
return $res ? json_decode($res, true) : null;
}
// API1: khởi tạo
if ($path === '/register') {
$data = getJson("https://api.geetest.com/register.php?gt=" . CAPTCHA_ID . "&json_format=1");
echo json_encode($data ? [
'gt' => CAPTCHA_ID,
'challenge' => $data['challenge'],
'success' => $data['success'] === 1,
'new_captcha' => true
] : ['success' => 0]);
exit;
}
// API2: xác minh
if ($path === '/validate' && $_SERVER['REQUEST_METHOD'] === 'POST') {
$req = json_decode(file_get_contents('php://input'), true);
$data = getJson("https://api.geetest.com/validate.php?" . http_build_query([
'seccode' => $req['geetest_seccode'] ?? '',
'challenge' => $req['geetest_challenge'] ?? '',
'gt' => CAPTCHA_ID,
'json_format' => 1
]));
echo json_encode(['success' => !empty($data['seccode'])]);
exit;
}
http_response_code(404);
echo json_encode(['error' => 'Not found']);
6. Kết nối phía client (Client SDK):
Ở phía client, bạn tải gt.js và gọi initGeetest, truyền vào các tham số nhận được từ máy chủ (API1). Ví dụ với ajax:
ajax({
url: "https://example.com/register",
type: "get",
dataType: "json",
success: function (data) {
initGeetest({
gt: data.gt,
challenge: data.challenge,
offline: !data.success,
new_captcha: true
}, function (captchaObj) {
captchaObj.appendTo("#captcha");
captchaObj.onSuccess(function () {
const result = captchaObj.getValidate();
ajax({
url: "https://example.com/validate",
type: "post",
contentType: "application/json",
data: JSON.stringify(result),
success: function(res) {
if (res.success) alert('CAPTCHA passed');
else alert('CAPTCHA failed');
}
});
});
});
}
});
Kiểm tra hoạt động
Hãy đảm bảo rằng:
Failback (chế độ dự phòng)
Nếu máy chủ GeeTest không khả dụng:
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 v3, 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 v3 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ó.