GeeTest CAPTCHA v3
và CapMonster Cloud

Giải CAPTCHA, tích hợp lên trang web và kiểm thử.

Giá của giải pháp GeeTest CAPTCHA v3

CAPTCHA
Giá (USD)
$ 1.20
1000 token
Bạn nhận lại một website đã có captcha hoặc lớp bảo vệ khác nhưng không có quyền truy cập mã nguồn? Khi đó điều bạn cần biết là giải pháp nào đang chạy, cấu hình có đúng không và cách kiểm tra như thế nào.

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à gì
GeeTest CAPTCHA v3 là gì

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.

Background
Ví dụ về GeeTest CAPTCHA v3
Intelligent mode
Intelligent mode
Việc kiểm tra người dùng chủ yếu dựa trên hành vi và cách họ tương tác với trang, không cần giải nhiệm vụ rõ ràng.
Slide CAPTCHA
Slide CAPTCHA
Thanh trượt (slider) cần được kéo để ghép hoàn chỉnh một mảnh ghép (puzzle) hoặc căn chỉnh một phần tử trên hình ảnh.
Icon CAPTCHA
Icon CAPTCHA
Chọn các hình ảnh theo đúng thứ tự được yêu cầu.
Space CAPTCHA
Space CAPTCHA
Kéo một hình khối đến đúng vị trí trên hình ảnh.

Cách giải GeeTest CAPTCHA v3 bằng CapMonster Cloud

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.

  • Mở trang có form và đảm bảo captcha hiển thị.
  • Thử gửi form mà không giải captcha — máy chủ phải trả lỗi.
  • Sau khi giải thành công, form phải gửi đi trơn tru.

Để 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:

Tạo nhiệm vụTạo nhiệm vụ
arrow
Gửi yêu cầu APIGửi yêu cầu API
arrow
Nhận kết quảNhận kết quả
arrow
Áp dụng token lên trangÁp dụng token lên trang
arrow
Nhận dạng GeeTest CAPTCHA v3 bằng thư viện có sẵn
Dịch vụ CapMonster Cloud cung cấp các thư viện sẵn dùng để làm việc thuận tiện với Python, JavaScript (Node.js) và C#.
Python
JavaScript
C#
Giải, chèn token và gửi form
Ví dụ Node.js cho toàn bộ vòng đời nhận dạng CAPTCHA trên trang web của bạn. Một số cách tiếp cận: dùng yêu cầu HTTP để lấy HTML và tham số CAPTCHA, gửi câu trả lời và xử lý kết quả; hoặc dùng công cụ tự động hóa (như Playwright) để mở trang, chờ CAPTCHA hiển thị, gửi tham số (khi thử nghiệm có thể gửi dữ liệu đúng và sai), nhận lời giải qua client CapMonster Cloud, chèn token vào form và quan sát kết quả.
python
// 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();
})();
Cách tích hợp GeeTest CAPTCHA v3 vào trang web của bạn
Để hiểu rõ cách CAPTCHA hoạt động trên trang của bạn, logic xác minh và cách kết nối lại hoặc cấu hình lại, chúng tôi khuyên bạn nên đọc kỹ phần này. Phần này mô tả quá trình thiết lập bảo vệ — giúp bạn nhanh chóng nắm được mọi chi tiết.

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:

HowTo Connect image 1

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 IDKEY duy nhất. Có thể cấu hình chúng trong bảng điều khiển bảo mật.

HowTo Connect image 2

5. Cấu hình phía máy chủ (Server SDK):

Máy chủ làm việc với hai API:

  • API1 — khởi tạo (tạo challenge)
  • API2 — xác minh kết quả sau khi vượt CAPTCHA

php
<?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:

javascript
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:

  • /register trả về một challenge
  • CAPTCHA hiển thị đúng
  • Sau khi vượt CAPTCHA, trong console trình duyệt có yêu cầu tới /validate
  • Máy chủ trả về "success": true

Failback (chế độ dự phòng)

Nếu máy chủ GeeTest không khả dụng:

  • Client nhận được success: false
  • CAPTCHA chuyển sang chế độ cục bộ (hoạt động không cần kết nối GeeTest Cloud). Để kiểm thử, chỉ cần đặt một CAPTCHA_ID không hợp lệ (ví dụ 123456789).

Background
Các lỗi thường gặp và cách xử lý
Bug Icon
Tham số không hợp lệ
CAPTCHA không hiển thị hoặc trả về lỗi invalid-gt / invalid-challenge. Hãy kiểm tra bạn đang dùng giá trị gtchallenge mới nhất cho trang của mình.
Bug Icon
Hết thời gian chờ giải
kết quả giải CAPTCHA không được nhận kịp thời. Hãy tăng thời gian chờ (timeout) khi dùng các dịch vụ giải tự động (ví dụ CapMonster).
Bug Icon
Trường trống
Một trong các giá trị challenge, validate hoặc seccode chưa được truyền lên trang. Hãy đảm bảo chúng được gán đúng vào các trường ẩn (hidden) trong form.
Bug Icon
Phản hồi success=false
token đã hết hạn, bị dùng lại hoặc bị làm giả. Để chẩn đoán, hãy bật ghi log các yêu cầu và kiểm tra các trường máy chủ trả về (ví dụ error-codes khi làm việc với CapMonster hoặc máy chủ xác minh của bạn).
Kiểm tra độ bền vững của lớp bảo vệ
Sau khi tích hợp, hãy đảm bảo hệ thống thực sự chặn được những hành động tự động.
Khuyến nghị về bảo mật và tối ưu
Chỉ <span class="font-bold">lưu khóa CAPTCHA (KEY bí mật) ở phía máy chủ</span>, không đưa nó xuống phía client.
Ghi log các mã lỗi trong quá trình xác minh (các trường <span class="font-bold">error-codes</span> hoặc trường phản hồi từ máy chủ), để hiểu nguyên nhân các lần kiểm tra thất bại.
Thêm liên kết tới <span class="font-bold">Chính sách quyền riêng tư</span> và <span class="font-bold">Điều khoản sử dụng GeeTest</span> ở cuối form, nếu giấy phép hoặc quy định nội bộ yêu cầu.
Kết luận

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ó.

Conclusion
Liên kết hữu ích
DocIconTài liệu GeeTest v3DocIconTài liệu CapMonster Cloud (làm việc với GeeTest v3)DocIconTạo tài khoản GeeTestDocIconTạo tài khoản CapMonster Cloud

Câu hỏi thường gặp về GeeTest CAPTCHA v3

Giá trị challenge có thời gian sống ngắn — thường dưới hai phút. Truyền challenge đã hết hạn vào createTask là nguyên nhân phổ biến nhất của ERROR_TOKEN_EXPIRED. Lấy challenge mới từ endpoint init-params của trang càng sớm càng tốt trước mỗi lần gọi createTask — không cache, không tái sử dụng.

Lưu ý: các tác vụ trả về ERROR_TOKEN_EXPIRED vẫn được tính là đã tính phí.

Polling https://api.capmonster.cloud/getTaskResult trả về đối tượng solution với ba trường (giá trị luôn khác nhau):

json
{
  "solution": {
    "challenge": "0f759dd1ea6c4wc76cedc2991039ca4f23",
    "validate": "6275e26419211d1f526e674d97110e15",
    "seccode": "510cd9735583edcb158601067195a5eb|jordan"
  }
}

Ánh xạ lần lượt vào các trường ẩn geetest_challenge, geetest_validategeetest_seccode trước khi gửi form. Bạn có thể chèn bằng Playwright, Puppeteer, Selenium hoặc HTTP client thông thường.

Lưu ý: Poll theo khoảng thời gian đều đặn và không vượt quá 120 yêu cầu mỗi tác vụ để tránh khóa tài khoản. Tùy tải hệ thống, phản hồi thường đến trong 10–30 giây.

Để hiểu logic tự động hóa, nên tìm các tham số này thủ công trước:

  1. Mở DevTools → tab Network.
  2. Lọc theo init-params và tải lại trang.
  3. Phản hồi JSON sẽ chứa cả gtchallenge. Đây là endpoint mà tự động hóa cần chặn.

Với Playwright hoặc trình duyệt headless khác, chặn phản hồi init-params ở tầng mạng — nhanh và đáng tin cậy hơn phân tích DOM. Sau đó phân tích payload JSON để lấy gtchallenge.

Script trích xuất có sẵn trong tài liệu CapMonster Cloud.

GeeTest v3 kích hoạt chế độ offline/bypass khi máy chủ xác minh không thể truy cập. Ở chế độ này widget vẫn hiển thị và người dùng vẫn tương tác được, nhưng xác minh phía client và server của trang được xử lý cục bộ.

Không ảnh hưởng đến quy trình giải tự động.

Có. CapMonster Cloud có thể dùng trong quy trình GeeTest CAPTCHA v3 tự động khi bạn cần xác thực gửi form, kịch bản QA hoặc hành vi dưới tải mà không cần thao tác thủ công.

Dùng giá trị gtchallenge mới cho mỗi tác vụ, chèn challenge, validateseccode vào các trường tương ứng và theo dõi tỷ lệ từ chối trong môi trường mục tiêu. Xem giá mới nhất tại trang giá.