# การระบุประเภท CAPTCHA

> วิธีดูว่าหน้าเว็บใช้ CAPTCHA ชนิดใด ได้แก่ reCAPTCHA v2, v2 แบบ invisible, v3, Enterprise, hCaptcha, ความแตกต่างระหว่าง Cloudflare Turnstile กับหน้าตรวจสอบของ Cloudflare และควรใช้ประเภทงานใดของ YesCaptcha

Source: https://docs.yescaptcha.com/th/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/

ขั้นแรกของการเลือกประเภทงานที่ถูกต้องคือการระบุ CAPTCHA ให้ได้ วิธีที่เชื่อถือได้ที่สุดคือเปิดเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (F12) แล้วดูในแผง Network ว่าหน้าเว็บโหลดสคริปต์ของ CAPTCHA ใด นอกจากนี้ยังดูจากหน้าตาได้ด้วย

## ดูจากหน้าตา

ด้านล่างคือหน้าตาของ CAPTCHA แต่ละชนิดบนหน้าเว็บ (ภาพเคลื่อนไหวประกอบ ไม่ใช่ภาพหน้าจอ) คลิกการ์ดเพื่อไปยังหน้าของประเภทงานนั้น หากดูจากหน้าตาแล้วแยกไม่ออก ให้ใช้ตารางสรุปด้านล่างและแผง Network ยืนยัน

-   [reCAPTCHA v2: ช่องทำเครื่องหมาย · แบบซ่อน](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md)
-   [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md)
-   [การจดจำภาพ reCAPTCHA v2: ตาราง 3×3 · ตาราง 4×4 · ภาพเดี่ยว 1×1](https://docs.yescaptcha.com/th/tasks/recaptcha-classification.md)
-   [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md)
-   [การจดจำภาพ hCaptcha: ตารางภาพ · คลิกที่จุด · ลากและวาง · แบบแอนิเมชัน](https://docs.yescaptcha.com/th/tasks/hcaptcha-classification.md)
-   [Cloudflare Turnstile: อัตโนมัติ · ช่องทำเครื่องหมาย](https://docs.yescaptcha.com/th/tasks/turnstile.md)
-   [Cloudflare challenge page (5 วินาที): อัตโนมัติ · ช่องทำเครื่องหมาย](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md)
-   [การจดจำภาพ FunCaptcha: ลูกศร · ตาราง 6 ภาพ](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md)
-   [การจดจำภาพ AWS WAF / bCaptcha: AWS WAF · bCaptcha](https://docs.yescaptcha.com/th/tasks/aws-bcaptcha-classification.md)
-   [การอ่านตัวอักษรและตัวเลขจากภาพ: มีจุดรบกวน · เส้นรบกวน · โจทย์คณิตศาสตร์](https://docs.yescaptcha.com/th/tasks/image-to-text.md)

## ตารางสรุป

| สิ่งที่คุณเห็น | คืออะไร | ใช้ประเภทงานใด |
| --- | --- | --- |
| ช่องทำเครื่องหมาย “I’m not a robot” (ยืนยันว่าคุณเป็นมนุษย์) | reCAPTCHA v2 | [reCAPTCHA v2](https://docs.yescaptcha.com/th/tasks/recaptcha-v2.md) |
| ไม่มีช่องทำเครื่องหมาย โจทย์รูปภาพจะแสดงหลังกดส่งเท่านั้น และมีโลโก้ reCAPTCHA เล็กๆ ที่มุมขวาล่าง | reCAPTCHA v2 แบบ invisible (หรือ v3) | ดูหัวข้อ “เวอร์ชันของ reCAPTCHA” ด้านล่าง |
| ไม่มีการโต้ตอบใดๆ มีเพียงโลโก้ reCAPTCHA ที่มุมขวาล่าง | reCAPTCHA v3 | [reCAPTCHA v3](https://docs.yescaptcha.com/th/tasks/recaptcha-v3.md) |
| ช่องทำเครื่องหมาย “I am human” และโจทย์รูปภาพที่ระบุว่า hCaptcha | hCaptcha | [hCaptcha](https://docs.yescaptcha.com/th/tasks/hcaptcha.md) |
| กล่องตรวจสอบของ Cloudflare ฝังอยู่ในฟอร์ม และหน้าไม่เปลี่ยนหลังทำเครื่องหมาย | Cloudflare Turnstile | [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md) |
| ทั้งหน้าแสดงข้อความ “Just a moment…” / “กำลังตรวจสอบการเชื่อมต่อของคุณ” แล้วเปลี่ยนหน้าอัตโนมัติ | หน้าตรวจสอบของ Cloudflare | [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md) |
| จิ๊กซอว์หรือโจทย์เลือกภาพของ Arkose Labs (เช่น “เลือกภาพที่หันขึ้นถูกทาง”) | FunCaptcha | [การจดจำภาพ FunCaptcha](https://docs.yescaptcha.com/th/tasks/funcaptcha-classification.md) |
| รูปภาพที่มีตัวอักษรและตัวเลขบิดเบี้ยว | CAPTCHA แบบตัวอักษร | [การรู้จำตัวอักษรและตัวเลขจากภาพ](https://docs.yescaptcha.com/th/tasks/image-to-text.md) |

## เวอร์ชันของ reCAPTCHA

ค้นหา `api.js` หรือ `enterprise.js` ในแผง Network:

| สคริปต์ที่โหลด | เวอร์ชัน |
| --- | --- |
| `recaptcha/api.js` ที่ไม่มีพารามิเตอร์ `render` หรือ `render=explicit` | v2 แบบปกติ |
| เหมือนข้างต้น และ URL ของคำขอ `anchor` มี `size=invisible` | v2 แบบ invisible ให้เพิ่ม `"isInvisible": true` ในงาน |
| `recaptcha/api.js?render=ไซต์คีย์ของเว็บไซต์` (`render` ไม่ใช่ `explicit`) | v3 แบบปกติ |
| `recaptcha/enterprise.js` ที่ไม่มีพารามิเตอร์ `render` หรือ `render=explicit` | v2 Enterprise |
| `recaptcha/enterprise.js?render=ไซต์คีย์ของเว็บไซต์` | v3 Enterprise |

ตัวอย่าง:

```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
```

บางครั้ง v2 แบบ invisible จะผ่านได้เฉพาะเมื่อใช้ประเภทงานของ v3 ลองใช้ทั้งสองแบบ

คุณยังรันโค้ดด้านล่างในคอนโซล (Console) ได้ โค้ดนี้จะแสดงรายการ reCAPTCHA ทั้งหมดในหน้า พร้อมเวอร์ชัน ไซต์คีย์ URL ของหน้า และฟังก์ชัน 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();
```

ตัวอย่างผลลัพธ์:

```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"
  }
]
```

ใช้หน้าเดโมอย่างเป็นทางการของ Google เปรียบเทียบได้: v2 แบบปกติ `https://www.google.com/recaptcha/api2/demo` และ v2 แบบ invisible `https://www.google.com/recaptcha/api2/demo?invisible=true`

## Turnstile กับหน้าตรวจสอบของ Cloudflare

ทั้งสองอย่างมาจาก Cloudflare แต่ไม่ใช่สิ่งเดียวกัน:

-   **Turnstile** คือกล่องตรวจสอบที่ฝังอยู่ในฟอร์มของหน้าเว็บ เมื่อตรวจสอบเสร็จจะแสดงเครื่องหมายถูก และหน้าเว็บไม่เปลี่ยน หน้าเว็บจะโหลด `challenges.cloudflare.com/turnstile/v0/api.js` ให้ใช้ [Turnstile](https://docs.yescaptcha.com/th/tasks/turnstile.md)
-   **หน้าตรวจสอบของ Cloudflare** คือหน้าที่ถูกแทนที่ทั้งหน้าด้วยหน้าตรวจสอบของ Cloudflare ซึ่งแสดงข้อความ “Just a moment…” หรือ “xx.com ต้องตรวจสอบความปลอดภัยของการเชื่อมต่อของคุณก่อน” และอาจมีกล่องตรวจสอบอยู่ด้วย เมื่อผ่านแล้วจะเปลี่ยนไปยังหน้าจริงโดยอัตโนมัติ ในซอร์สโค้ดจะมี `__cf_chl_rt_tk` หรือ `cdn-cgi/challenge-platform` ให้ใช้ [หน้าตรวจสอบของ Cloudflare](https://docs.yescaptcha.com/th/tasks/cloudflare-challenge.md)

หากส่งคำขอด้วยโปรแกรมแล้วได้ 403 พร้อมข้อความ “Just a moment…” แต่เปิดด้วยเบราว์เซอร์ได้ตามปกติ มักเป็นเพราะถูกบล็อกจาก TLS fingerprint เท่านั้น ให้เปลี่ยนไปใช้ไลบรารีที่เลียนแบบ TLS fingerprint ของเบราว์เซอร์ได้ (เช่น curl\_cffi) ก็ส่งคำขอได้ โดยไม่ต้องแก้หน้าตรวจสอบ
