ข้ามไปยังเนื้อหา
สถานะแดชบอร์ด

คู่มือ

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

หน้านี้แปลด้วยเครื่องจากเวอร์ชันภาษาจีน อาจมีข้อผิดพลาด โปรดยึดเวอร์ชันภาษาจีนเป็นหลัก

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

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

สิ่งที่คุณเห็น คืออะไร ใช้ประเภทงานใด
ช่องทำเครื่องหมาย “I’m not a robot” (ยืนยันว่าคุณเป็นมนุษย์) reCAPTCHA v2 reCAPTCHA v2
ไม่มีช่องทำเครื่องหมาย โจทย์รูปภาพจะแสดงหลังกดส่งเท่านั้น และมีโลโก้ reCAPTCHA เล็กๆ ที่มุมขวาล่าง reCAPTCHA v2 แบบ invisible (หรือ v3) ดูหัวข้อ “เวอร์ชันของ reCAPTCHA” ด้านล่าง
ไม่มีการโต้ตอบใดๆ มีเพียงโลโก้ reCAPTCHA ที่มุมขวาล่าง reCAPTCHA v3 reCAPTCHA v3
ช่องทำเครื่องหมาย “I am human” และโจทย์รูปภาพที่ระบุว่า hCaptcha hCaptcha hCaptcha
กล่องตรวจสอบของ Cloudflare ฝังอยู่ในฟอร์ม และหน้าไม่เปลี่ยนหลังทำเครื่องหมาย Cloudflare Turnstile Turnstile
ทั้งหน้าแสดงข้อความ “Just a moment…” / “กำลังตรวจสอบการเชื่อมต่อของคุณ” แล้วเปลี่ยนหน้าอัตโนมัติ หน้าตรวจสอบของ Cloudflare หน้าตรวจสอบของ Cloudflare
จิ๊กซอว์หรือโจทย์เลือกภาพของ Arkose Labs (เช่น “เลือกภาพที่หันขึ้นถูกทาง”) FunCaptcha การจดจำภาพ FunCaptcha
รูปภาพที่มีตัวอักษรและตัวเลขบิดเบี้ยว CAPTCHA แบบตัวอักษร การรู้จำตัวอักษรและตัวเลขจากภาพ

ค้นหา 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

ตัวอย่าง:

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
// 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();

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

[
{
"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

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

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

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