logo
bars

reCAPTCHA v3
và CapMonster Cloud

Giải captcha, cài đặt lên trang web 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 reCAPTCHA 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 reCAPTCHA 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ý.

Google reCAPTCHA v3 là gì
Google reCAPTCHA v3 là gì
reCAPTCHA v3 là cơ chế bảo vệ vô hình của Google giúp phân biệt người dùng thật với bot mà không cần hộp kiểm “Tôi không phải là robot”. Trên trang có một script ẩn chạy, phân tích hành vi của khách truy cập và đưa ra điểm tin cậy (score) từ 0.0 đến 1.0. Lập trình viên thiết lập một ngưỡng, nếu điểm thấp hơn ngưỡng đó thì có thể yêu cầu kiểm tra bổ sung hoặc chặn truy cập, nhờ đó tăng cường bảo mật mà không gây thêm thao tác cho người dùng.

Cách giải reCAPTCHA v3 thông qua CapMonster Cloud

Khi kiểm thử biểu mẫu chứa reCAPTCHA 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 reCAPTCHA v3 bằng các thư viện có sẵn
Dịch vụ CapMonster Cloud cung cấp các thư viện sẵn dùng cho Python, JavaScript (Node.js) và C# để tích hợp thuận tiện hơn.
Python
JavaScript
C#
Giải captcha, chèn token và gửi form
Ví dụ trên Node.js cho toàn bộ chu trình nhận dạng captcha trên trang web của bạn. Một số cách tiếp cận: dùng HTTP request để lấy HTML và tham số captcha, gửi lời giải và xử lý kết quả; hoặc dùng các công cụ tự động hóa (ví dụ Playwright) — mở trang, chờ captcha xuất hiện, gửi tham số (khi kiểm thử bạn có thể gửi dữ liệu đúng hoặc sai), nhận kết quả thông qua client CapMonster Cloud, chèn token vào form và quan sát phản hồi.
const { chromium } = require('playwright');
const { 
  CapMonsterCloudClientFactory, 
  ClientOptions, 
  RecaptchaV3ProxylessRequest 
} = require('@zennolab_com/capmonstercloud-client');

(async () => {
  const TARGET_URL = 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta'; // URL trang có captcha của bạn
  const SITE_KEY = '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob';
  const API_KEY = 'your_capmonster_cloud_api_key'; // Chỉ định API key CapMonster Cloud của bạn

  // Khởi tạo client CapMonster
  const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

  // Mở trình duyệt
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();
  await page.goto(TARGET_URL, { waitUntil: 'domcontentloaded' });

  // Cấu hình task reCAPTCHA v3
  const recaptchaRequest = new RecaptchaV3ProxylessRequest({
    websiteURL: TARGET_URL,
    websiteKey: SITE_KEY,
    minScore: 0.6,
    pageAction: 'myverify', // Đảm bảo trùng khớp với action trên trang
  });

  // Tiến hành giải captcha
  const solution = await cmcClient.Solve(recaptchaRequest);
  const token = solution.solution?.gRecaptchaResponse;

  if (!token) {
    console.error('Token trống, hãy kiểm tra sitekey và URL');
    await browser.close();
    return;
  }

  console.log('Đã nhận token:', token);

  // Chèn token vào trường ẩn và mô phỏng click vào nút 
  // Thay bằng các selector cần dùng
  await page.evaluate((t) => {
    const input = document.querySelector('#v3_token');
    if (input) input.value = t;

    const form = document.querySelector('#v3_form');
    if (form) form.submit();
  }, token);

  console.log('Token đã được chèn và form đã được gửi');

  await page.waitForTimeout(5000);
  await browser.close();
})();
Cách kết nối reCAPTCHA v3 với website của bạn
Để hiểu rõ cách captcha hoạt động trên website, nắm được logic kiểm tra, cũng như có thể kết nối lại hoặc cấu hình lại khi cần, chúng tôi khuyên bạn nên đọc kỹ phần này. Tại đây mô tả toàn bộ quy trình bật cơ chế bảo vệ – giúp bạn nhanh chóng nắm vững mọi chi tiết.

1. Truy cập trang bảng điều khiển reCAPTCHA.

2. Đăng ký một website mới và chọn loại captcha — reCAPTCHA v3

HowTo Connect image 1

3. Nhận hai khóa:

  • Site key — khóa công khai (dùng trên frontend);
  • Secret key — khóa bí mật (dùng ở phía server để kiểm tra).

HowTo Connect image 2

Bạn có thể mở phần cài đặt, ví dụ để chỉ định thêm các domain được phép sử dụng reCAPTCHA hoặc cấu hình cảnh báo khi website gặp sự cố hoặc lưu lượng đáng ngờ tăng cao.

4. Ví dụ mã cho phía client

Cách đơn giản nhất để dùng reCAPTCHA v3 là kết nối JavaScript API và thêm thuộc tính vào nút bấm.

Kết nối API:

<script src="https://www.google.com/recaptcha/api.js"></script>

Hàm callback cho form:

<script>
  function onSubmit(token) {
    document.getElementById("form").submit();
  }
</script>

Nút bấm với các thuộc tính reCAPTCHA:

<button class="g-recaptcha" 
        data-sitekey="reCAPTCHA_sitekey" 
        data-callback='onSubmit' 
        data-action='submit'>Submit</button>

Để toàn quyền kiểm soát, hãy dùng grecaptcha.execute với tham số render:

Kết nối API với khóa:

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>

Gọi bằng mã JavaScript:

<script>
  function onClick(e) {
    e.preventDefault();
    grecaptcha.ready(function() {
      grecaptcha.execute('reCAPTCHA_sitekey', {action: 'submit'}).then(function(token) {
          // Gửi token lên server để kiểm tra
      });
    });
  }
</script>

Token nên được gửi ngay lập tức lên server để xác minh.

Lưu ý quan trọng:

  • Thời hạn token: token nhận từ reCAPTCHA v3 chỉ có hiệu lực trong 2 phút. Hãy đảm bảo bạn gửi nó lên server trong khoảng thời gian này.
  • Kiểm tra ở phía server: sau khi nhận token, server cần gửi request POST tới https://www.google.com/recaptcha/api/siteverify với các tham số:
    – secret: secret key của bạn
    – response: token nhận được từ client
    – remoteip (không bắt buộc): địa chỉ IP của người dùng
  • Server của Google sẽ trả về một JSON chứa thông tin chi tiết về kết quả kiểm tra.

5. Thực hiện kiểm tra phản hồi ở phía server

Ví dụ bằng PHPVí dụ bằng PHP
arrow

Lưu ý:

  • Hãy đảm bảo token trên client được gửi qua một trường ẩn của form với tên recaptcha-token:
    • <input type="hidden" name="recaptcha-token" id="recaptcha-token">

      • Có thể điều chỉnh ngưỡng score tùy theo mức độ nghiêm ngặt (ví dụ 0.3–0.7).
      • Việc kiểm tra thêm action === 'submit' sẽ tăng tính bảo mật, giúp đảm bảo token được tạo riêng cho thao tác cụ thể trên trang.
Background
Các lỗi thường gặp và cách xử lý
Bug Icon
Sai website hoặc khóa
Captcha không tải được hoặc trả về lỗi invalid-input-secret.
Bug Icon
Hết thời gian chờ khi giải
Máy chủ không nhận được kết quả kịp thời, hãy tăng thời gian chờ.
Bug Icon
Token rỗng
Lỗi khi truyền kết quả lên trang.
Bug Icon
Kết quả success=false
Token đã hết hạn, bị dùng lại hoặc bị giả mạo. Để chẩn đoán, hãy bật log request và kiểm tra trường error-codes trong phản hồi của Google.
Bug Icon
Score thấp (ví dụ <0.5)
Có thể dẫn đến việc từ chối ngay cả khi success=true, vì Google đánh giá mức độ tin cậy của người dùng dựa trên score.
Bug Icon
Kiểm tra action
Để đảm bảo token được tạo ra cho đúng hành động cụ thể trên trang
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ỉ lưu <b>Secret Key</b> trên máy chủ, không bao giờ đưa nó ra phía client.
Ghi log mã lỗi (<b>error-codes</b>) và giá trị <b>score</b> để hiểu lý do bị từ chối.
<b>Kiểm tra trường action</b> trong phản hồi của Google để đảm bảo token được tạo cho đúng hành động cần thiết trên trang.
Thêm liên kết đến <b>Chính sách quyền riêng tư</b> và <b>Điều khoản sử dụng của Google</b> ở cuối form, theo yêu cầu của giấy phép.
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 reCAPTCHA 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 reCAPTCHA 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