logo
bars

GeeTest CAPTCHA v4
và CapMonster Cloud

Giải captcha, tích hợp lên website và kiểm thử.
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 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ý.

GeeTest CAPTCHA v4 là gì
GeeTest CAPTCHA v4 là gì
GeeTest CAPTCHA v4 (Adaptive CAPTCHA/Behavior Verification) là phiên bản hiện đại hơn so với v3, được thiết kế để bảo vệ website khỏi các hành vi tự động có thể gây hại cho hệ thống. Hệ thống theo dõi hành vi và đặc điểm thiết bị của khách truy cập và chọn loại thử thách phù hợp: với người dùng thật, bước kiểm tra sẽ đơn giản nhất có thể — chỉ cần một lần nhấp vào widget captcha là đủ; nếu nghi ngờ có tự động hóa, người dùng sẽ nhận được một thử thách phức tạp hơn cần phải vượt qua.
Background
Ví dụ về GeeTest CAPTCHA v4
No CAPTCHA
No CAPTCHA
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 website, không nhất thiết phải giải các bài test rõ ràng.
Icon CAPTCHA
Icon CAPTCHA
Chọn hình ảnh theo đúng thứ tự được yêu cầu.
IconCrush CAPTCHA
IconCrush CAPTCHA
Hoán đổi vị trí các phần tử để xếp 3 biểu tượng giống nhau thành một hàng (giống các trò chơi xếp hình “match-3”).
Slide CAPTCHA
Slide CAPTCHA
Thanh trượt (slider) để ghép hình hoặc căn chỉnh các phần tử trong ảnh.
Gobang CAPTCHA
Gobang CAPTCHA
Thanh trượt (slider) để ghép hình hoặc căn chỉnh các phần tử trong ảnh.

Cách giải GeeTest CAPTCHA v4 thông qua CapMonster Cloud

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.

  • 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 diện GeeTest CAPTCHA v4 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 quy trình đầy đủ giải captcha trên trang web của bạn. Một số cách tiếp cận có thể dùng: sử dụng request HTTP để lấy HTML và tham số captcha, gửi đáp án và xử lý kết quả; hoặc dùng các công cụ tự động hóa (ví dụ Playwright) — mở trang, đợi captcha xuất hiện, gửi tham số (phục vụ test có thể gửi cả dữ liệu đúng và cố ý sai), nhận kết quả từ client CapMonster Cloud, chèn token vào form và xem kết quả.
// 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);
})();
Cách tích hợp GeeTest CAPTCHA v4 vào website của bạn
Để hiểu rõ cách captcha hoạt động trên website, cách logic kiểm tra vận hành, cũng như cách kết nối lại hoặc cấu hình lại, hãy tham khảo phần này. Tại đây mô tả quy trình bật cơ chế 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. Vào Captcha Dashboard và chọn Behavior Verification v4:

HowTo Connect image 1

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:

HowTo Connect image 2

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

  • Cần khởi tạo CAPTCHA khi trang được tải, nếu không hệ thống sẽ không thể theo dõi hành vi người dùng.
  • Nếu trên một trang có nhiều CAPTCHA, hãy gọi initGeetest4 riêng cho từng cái.
  • Nếu dùng CAPTCHA trong iframe, hãy thêm thuộc tính sandbox="allow-scripts allow-popups".

Ví dụ mã nguồnVí dụ mã nguồn
arrow

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:

url
http://gcaptcha4.geetest.com/validate

  • Phương thức: GET/POST
  • Content-Type: application/x-www-form-urlencoded
  • Phản hồi: JSON

Các tham số chính của request

  • lot_number – số sê-ri của lần kiểm tra
  • captcha_output – dữ liệu kiểm tra
  • pass_token – token kiểm tra
  • gen_time – thời điểm tạo kiểm tra
  • captcha_id – ID của CAPTCHA
  • sign_token – chữ ký dùng để xác thực

Ví dụ phản hồi thành côngVí dụ phản hồi thành công
arrow

Ví dụ kiểm tra CAPTCHA bằng PHPVí dụ kiểm tra CAPTCHA bằng PHP
arrow

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 như invalid-captcha-id / invalid-challenge. Hãy kiểm tra rằng bạn đang dùng các giá trị captcha_idchallenge mới nhất, tương ứng với trang của bạn. Những tham số này được tạo động mỗi lần request tới /load.
Bug Icon
Hết thời gian chờ
Không nhận được kết quả giải captcha đúng thời gian. Hãy tăng thời gian chờ khi sử dụng các dịch vụ giải tự động (ví dụ CapMonster Cloud) và đảm bảo kết nối tới API ổn định.
Bug Icon
Trường dữ liệu trống
Các giá trị captcha_output, pass_token hoặc lot_number không được gửi lên trang hoặc trong request kiểm tra. Hãy đảm bảo rằng các giá trị này được chèn đúng vào các input hidden trong form hoặc phần body của request gửi tới server của bạn.
Bug Icon
Phản hồi success=false
Token đã hết hạn, bị dùng lại hoặc là token giả. Hãy bật log cho tất cả request và response từ server kiểm tra để theo dõi các trường như error_code hoặc error_msg.
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
Luôn <b>lưu khóa captcha (KEY bí mật) ở phía server</b>, không bao giờ đưa khóa này ra phía client.
Ghi log các mã lỗi trong quá trình kiểm tra (<b>error-codes</b> hoặc các trường trong response của server) để 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 <b>Chính sách bảo mật</b> và <b>Điều khoản sử dụng GeeTest</b> ở 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 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ó.

Conclusion