# Nhận biết loại captcha

> Cách nhận biết trang web dùng loại captcha nào: reCAPTCHA v2, v2 ẩn, v3, bản Enterprise, hCaptcha, sự khác nhau giữa Cloudflare Turnstile và trang thử thách Cloudflare, cùng loại tác vụ YesCaptcha tương ứng.

Source: https://docs.yescaptcha.com/vi/guides/identify-captcha/ · Last verified: 2026-10-15

> This page was machine-translated from the Chinese version. If anything differs, the Chinese version prevails: https://docs.yescaptcha.com/zh/guides/identify-captcha/

Bước đầu tiên để chọn đúng loại tác vụ là nhận ra captcha. Cách đáng tin cậy nhất là mở công cụ dành cho nhà phát triển của trình duyệt (F12) và xem trong bảng Network trang web tải script của captcha nào; bạn cũng có thể nhận biết qua giao diện.

## Nhận biết qua hình dạng

Hình dạng của từng loại captcha trên trang web (hình minh họa động, không phải ảnh chụp màn hình); nhấn vào thẻ để mở trang loại tác vụ tương ứng. Nếu khó phân biệt bằng mắt, hãy xác nhận bằng bảng tra nhanh và bảng Network bên dưới.

-   [reCAPTCHA v2: Ô đánh dấu · Ẩn](https://docs.yescaptcha.com/vi/tasks/recaptcha-v2.md)
-   [reCAPTCHA v3](https://docs.yescaptcha.com/vi/tasks/recaptcha-v3.md)
-   [Nhận dạng hình ảnh reCAPTCHA v2: Lưới 3×3 · Lưới 4×4 · Một ảnh 1×1](https://docs.yescaptcha.com/vi/tasks/recaptcha-classification.md)
-   [hCaptcha](https://docs.yescaptcha.com/vi/tasks/hcaptcha.md)
-   [Nhận dạng hình ảnh hCaptcha: Lưới ảnh · Nhấp vào một điểm · Kéo và thả · Hoạt ảnh](https://docs.yescaptcha.com/vi/tasks/hcaptcha-classification.md)
-   [Cloudflare Turnstile: Tự động · Ô đánh dấu](https://docs.yescaptcha.com/vi/tasks/turnstile.md)
-   [Trang thử thách Cloudflare (5 giây): Tự động · Ô đánh dấu](https://docs.yescaptcha.com/vi/tasks/cloudflare-challenge.md)
-   [Nhận dạng hình ảnh FunCaptcha: Mũi tên · Lưới 6 ảnh](https://docs.yescaptcha.com/vi/tasks/funcaptcha-classification.md)
-   [Nhận dạng hình ảnh AWS WAF / bCaptcha: AWS WAF · bCaptcha](https://docs.yescaptcha.com/vi/tasks/aws-bcaptcha-classification.md)
-   [Nhận dạng chữ và số trong ảnh: Có nhiễu · Đường nhiễu · Phép tính](https://docs.yescaptcha.com/vi/tasks/image-to-text.md)

## Bảng tra nhanh

| Bạn thấy | Đó là | Loại tác vụ cần dùng |
| --- | --- | --- |
| Ô tích “I’m not a robot” (Tôi không phải là người máy) | reCAPTCHA v2 | [reCAPTCHA v2](https://docs.yescaptcha.com/vi/tasks/recaptcha-v2.md) |
| Không có ô tích, bấm gửi mới hiện câu hỏi bằng hình ảnh; có logo nhỏ reCAPTCHA ở góc dưới bên phải | reCAPTCHA v2 ẩn (hoặc v3) | Xem mục “Các phiên bản reCAPTCHA” bên dưới |
| Không có bất kỳ tương tác nào, chỉ có logo nhỏ reCAPTCHA ở góc dưới bên phải | reCAPTCHA v3 | [reCAPTCHA v3](https://docs.yescaptcha.com/vi/tasks/recaptcha-v3.md) |
| Ô tích “Tôi là con người”, câu hỏi hình ảnh có nhãn hCaptcha | hCaptcha | [hCaptcha](https://docs.yescaptcha.com/vi/tasks/hcaptcha.md) |
| Khung xác minh của Cloudflare nằm trong biểu mẫu, tích xong trang không chuyển hướng | Cloudflare Turnstile | [Turnstile](https://docs.yescaptcha.com/vi/tasks/turnstile.md) |
| Cả trang hiện “Vui lòng chờ… / Đang kiểm tra kết nối của bạn”, rồi tự động chuyển hướng | Trang thử thách Cloudflare | [Trang thử thách Cloudflare](https://docs.yescaptcha.com/vi/tasks/cloudflare-challenge.md) |
| Câu đố ghép hình, chọn ảnh của Arkose Labs (ví dụ “chọn hình ảnh hướng đúng chiều lên trên”) | FunCaptcha | [FunCaptcha nhận dạng hình ảnh](https://docs.yescaptcha.com/vi/tasks/funcaptcha-classification.md) |
| Một ảnh chứa chữ cái và chữ số bị méo | Captcha ký tự | [Nhận dạng chữ và số trong ảnh](https://docs.yescaptcha.com/vi/tasks/image-to-text.md) |

## Các phiên bản reCAPTCHA

Tìm `api.js` hoặc `enterprise.js` trong bảng Network:

| Script được tải | Phiên bản |
| --- | --- |
| `recaptcha/api.js`, không có tham số `render` hoặc `render=explicit` | v2 thường |
| Như trên, và địa chỉ của yêu cầu `anchor` có `size=invisible` | v2 ẩn, thêm `"isInvisible": true` vào tác vụ |
| `recaptcha/api.js?render=SITE_KEY` (`render` không phải `explicit`) | v3 thường |
| `recaptcha/enterprise.js`, không có tham số `render` hoặc `render=explicit` | v2 Enterprise |
| `recaptcha/enterprise.js?render=SITE_KEY` | v3 Enterprise |

Ví dụ:

```text
https://www.google.com/recaptcha/api.js?onload=onloadcallback&render=explicit   → v2
https://www.google.com/recaptcha/api.js?render=6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696   → v3
https://www.google.com/recaptcha/enterprise.js?render=explicit   → v2 Enterprise
```

Đôi khi v2 ẩn chỉ vượt qua được khi dùng loại tác vụ của v3, hãy thử cả hai.

Bạn cũng có thể chạy đoạn mã dưới đây trong Console. Nó liệt kê tất cả reCAPTCHA trên trang cùng phiên bản, khóa trang web, địa chỉ trang và hàm callback:

find-recaptcha-clients.js

```js
// Paste into the browser DevTools console on a page with reCAPTCHA, then run findRecaptchaClients().
// Lists every reCAPTCHA on the page: version (V2/V3), sitekey, page URL and the callback function.
function findRecaptchaClients() {
  if (typeof ___grecaptcha_cfg === 'undefined') return [];
  return Object.entries(___grecaptcha_cfg.clients).map(([cid, client]) => {
    const data = { id: cid, version: cid >= 10000 ? 'V3' : 'V2' };
    const objects = Object.entries(client).filter(([, value]) => value && typeof value === 'object');
    objects.forEach(([toplevelKey, toplevel]) => {
      const found = Object.entries(toplevel).find(
        ([, value]) => value && typeof value === 'object' && 'sitekey' in value && 'size' in value,
      );
      if (toplevel instanceof HTMLElement && toplevel.tagName === 'DIV') data.pageurl = toplevel.baseURI;
      if (found) {
        const [sublevelKey, sublevel] = found;
        data.sitekey = sublevel.sitekey;
        const callbackKey = data.version === 'V2' ? 'callback' : 'promise-callback';
        const callback = sublevel[callbackKey];
        if (!callback) {
          data.callback = null;
          data.function = null;
        } else {
          data.function = callback;
          const keys = [cid, toplevelKey, sublevelKey, callbackKey].map((key) => `['${key}']`).join('');
          data.callback = `___grecaptcha_cfg.clients${keys}`;
        }
      }
    });
    return data;
  });
}

findRecaptchaClients();
```

Kết quả ví dụ:

```json
[
  {
    "id": "0",
    "version": "V2",
    "sitekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
    "function": "onSuccess",
    "callback": "___grecaptcha_cfg.clients['0']['l']['l']['callback']",
    "pageurl": "https://www.google.com/recaptcha/api2/demo"
  }
]
```

Có thể dùng các trang demo chính thức của Google để đối chiếu: v2 thường `https://www.google.com/recaptcha/api2/demo`, v2 ẩn `https://www.google.com/recaptcha/api2/demo?invisible=true`.

## Turnstile và trang thử thách Cloudflare

Cả hai đều của Cloudflare nhưng không phải cùng một loại:

-   **Turnstile** là khung xác minh nhúng trong biểu mẫu của trang web. Sau khi xác minh xong sẽ hiện dấu tích, bản thân trang không chuyển hướng. Trang tải `challenges.cloudflare.com/turnstile/v0/api.js`. Dùng [Turnstile](https://docs.yescaptcha.com/vi/tasks/turnstile.md).
-   **Trang thử thách Cloudflare** thay toàn bộ trang bằng trang kiểm tra của Cloudflare, hiện “Vui lòng chờ…”, “xx.com cần kiểm tra bảo mật kết nối của bạn trước khi tiếp tục”, bên trong có thể cũng có một khung xác minh; sau khi vượt qua sẽ tự động chuyển đến trang thật. Mã nguồn có `__cf_chl_rt_tk` hoặc `cdn-cgi/challenge-platform`. Dùng [trang thử thách Cloudflare](https://docs.yescaptcha.com/vi/tasks/cloudflare-challenge.md).

Nếu khi gửi yêu cầu bằng chương trình bạn nhận được 403 cùng “Just a moment…”, nhưng trình duyệt mở trang trực tiếp được, thì nhiều khả năng chỉ là dấu vân tay TLS bị chặn. Hãy dùng thư viện có thể giả lập dấu vân tay TLS của trình duyệt (ví dụ curl\_cffi) là gửi yêu cầu được, không cần vượt trang thử thách.
