ย้ายจาก reCAPTCHA มาใช้ Cap
Google กำลังย้าย reCAPTCHA เข้าไปอยู่ใน Google Cloud และย้ายคีย์ Classic ไปผูกกับโปรเจกต์ที่มีการเรียกเก็บเงินโดยอัตโนมัติ ยังไงคุณก็ต้องแตะโค้ดที่ผนวกไว้อยู่ดี ข่าวดีคือ นี่เป็นข้ออ้างชั้นดีที่จะทิ้ง CAPTCHA ที่อิงการติดตามของ Google แล้วเปลี่ยนไปใช้อะไรที่เร็วกว่า เป็นส่วนตัวกว่า และฟรี
Cap ใช้แทนได้แทบทันทีในส่วนที่สำคัญ และเป็นการอัปเกรดในเกือบทุกเรื่องที่เหลือ
ทำไมทีมต่าง ๆ ถึงเปลี่ยนมาใช้ Cap
- ตรวจจับได้ระดับเดียวกับ Turnstile โดยไม่ต้องมีบุคคลที่สาม Cap จับคู่ proof-of-work เข้ากับ challenge แบบ instrumentation ซึ่งเป็นเทคนิคยืนยันเบราว์เซอร์แบบเดียวกับที่ YouTube และ Twitter/X ใช้ในสเกลมหาศาล มันอยู่ในระดับการตรวจจับเดียวกับ Cloudflare Turnstile ขณะที่ยังโฮสต์เองได้ทั้งหมด
- พิสูจน์แล้วในสเกลใหญ่ มี challenge ถูกแก้ราว 1 พันล้านครั้งในไตรมาสแรกของปี 2026 เพียงไตรมาสเดียว (อ้างอิงจาก JSDelivr) และถูกใช้จริงบนโปรดักชันโดยทีมอย่าง AdGuard และ Bunny.net นี่ไม่ใช่ของทดลอง
- น้ำหนักเพียงเศษเสี้ยว และล่องหน วิดเจ็ตของ Cap หนักราว 21 KB เมื่อบีบอัดด้วย gzip เทียบกับไคลเอนต์ของ reCAPTCHA ที่ 200 ถึง 600 KB ซึ่งมักลดลงถึง 10 เท่าหรือมากกว่า challenge ค่าเริ่มต้นแก้เสร็จใน 2-3 วินาทีอยู่เบื้องหลัง ไม่มีปริศนาไฟจราจร และผู้ใช้ไม่ต้องคลิกอะไรเลย
- ฟรีจริง ไม่มีมิเตอร์ ไม่ต้องมีโปรเจกต์ Google Cloud ไม่ต้องมีบัญชีเรียกเก็บเงิน ไม่มีค่าธรรมเนียมต่อการประเมิน คอนเทนเนอร์ Docker หนึ่งตัวกับ Valkey หนึ่งอินสแตนซ์รองรับงานส่วนใหญ่ได้บน VPS ราคา $5
- เป็นส่วนตัวโดยค่าเริ่มต้น reCAPTCHA โหลดสคริปต์จาก
google.comและส่งสัญญาณเกี่ยวกับผู้ใช้ไปให้ Google ส่วน Cap ไม่ส่งข้อมูลไปไหนเลย ไม่มีอะไรจากบุคคลที่สามมาแตะหน้าเว็บของคุณ - คุณเป็นคนถือคันบังคับ reCAPTCHA v3 ลงโทษผู้ใช้ VPN, Tor และเบราว์เซอร์ที่เน้นความเป็นส่วนตัวอย่างเงียบ ๆ โดยไม่มีทางอุทธรณ์ ส่วน Cap ให้คุณตั้งความยากเอง และผู้ใช้จริงทุกคนมีทางผ่านเสมอ
- โอเพนซอร์สตลอดไป Apache 2.0 ตรวจสอบได้ fork ได้ ดีพลอยเองได้ ไม่มีผู้ให้บริการรายไหนมาเปลี่ยนเงื่อนไขใส่คุณได้
ดูรายละเอียดเต็มได้ที่ Cap กับ reCAPTCHA
reCAPTCHA กำลังเปลี่ยนอะไรบ้าง
ถ้าคุณอยากรู้ที่มาว่าทำไมอีเมลเรื่องการย้ายระบบถึงมาถึงตอนนี้:
- คอนโซลผู้ดูแลระบบ reCAPTCHA แบบเดิมสร้างคีย์ใหม่ไม่ได้อีกต่อไป
- คีย์ reCAPTCHA Classic ที่มีอยู่กำลังถูกย้ายเข้าโปรเจกต์ Google Cloud โดยอัตโนมัติ ซึ่ง Google ทยอยทำมาตั้งแต่ปลายปี 2025 จนถึงปี 2026
- เมื่อย้ายแล้ว การเข้าถึง API ของคีย์จะผูกกับโปรเจกต์ Google Cloud และเมื่อเกินโควตาฟรีที่ 10,000 การประเมินต่อเดือน คุณต้องเปิดการเรียกเก็บเงินในโปรเจกต์นั้น
การอยู่กับ reCAPTCHA ต่อไปตอนนี้หมายถึงต้องมีโปรเจกต์ Google Cloud ต้องผูกบัญชีเรียกเก็บเงิน และมีการนับจำนวนการประเมิน ส่วนการย้ายมา Cap ไม่ต้องมีอะไรในนั้นเลย และคุณเป็นคนกำหนดจังหวะเวลาเอง
การย้ายระบบทำอย่างไร
endpoint /siteverify ของ Cap ตั้งใจสะท้อนรูปแบบคำขอของ reCAPTCHA ฝั่งเซิร์ฟเวอร์จึงแทบเปลี่ยนแล้วใช้ได้เลย ส่วนการเปลี่ยนวิดเจ็ตก็เป็นการแทนแท็กต่อแท็ก มีสามขั้นตอน และคุณรันทั้งสองระบบคู่ขนานระหว่างช่วงเปลี่ยนผ่านได้
1. ตั้งอินสแตนซ์ Cap ขึ้นมา
ทำตามคู่มือเริ่มต้นใช้งาน เพื่อรัน Cap Standalone ด้วย Docker สร้าง site key ในแดชบอร์ด แล้วจดทั้ง site key และ secret key ของมันไว้ ให้เปิด challenge แบบ instrumentation ไว้ (เป็นค่าเริ่มต้น) เพื่อการป้องกันบอทที่แข็งแรงที่สุด
2. เปลี่ยนวิดเจ็ตฝั่งไคลเอนต์
แทนที่สคริปต์และอิลิเมนต์ของ reCAPTCHA ด้วยวิดเจ็ตของ Cap
ก่อน:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="<your-recaptcha-site-key>"></div>หลัง:
<script src="https://cdn.jsdelivr.net/npm/cap-widget"></script>
<cap-widget data-cap-api-endpoint="https://<your-instance>/<site-key>/"></cap-widget>ถ้าวิดเจ็ต reCAPTCHA ของคุณอยู่ใน <form> การจัดการ token ก็ยกมาได้เลย เพราะ reCAPTCHA แทรกฟิลด์ g-recaptcha-response ให้อัตโนมัติ ส่วน Cap แทรกฟิลด์ cap-token ให้อัตโนมัติตอนส่งฟอร์ม แต่ถ้าอยู่นอกฟอร์ม ให้ดักฟังเหตุการณ์ solve:
document.querySelector("cap-widget").addEventListener("solve", (e) => {
const token = e.detail.token;
});3. เปลี่ยนการตรวจสอบฝั่งเซิร์ฟเวอร์
การตรวจสอบของ reCAPTCHA จะ POST ค่า secret และ response ไปยัง URL ของ Google ที่ตายตัว ส่วน Cap รับพารามิเตอร์สองตัวเดียวกัน แต่ POST ไปยังอินสแตนซ์ของคุณเอง:
ก่อน:
const { success } = await (
await fetch("https://www.google.com/recaptcha/api/siteverify", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ secret: RECAPTCHA_SECRET, response: token }),
})
).json();หลัง:
const { success } = await (
await fetch("https://<your-instance>/<site-key>/siteverify", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ secret: CAP_SECRET, response: token }),
})
).json();ชื่อ token ที่เซิร์ฟเวอร์ของคุณอ่านก็เปลี่ยนด้วย ให้ดึง cap-token จากฟอร์มที่ส่งมา (หรือค่าที่คุณเก็บได้จากเหตุการณ์ solve) แทน g-recaptcha-response
อะไรเข้ากันได้ และอะไรไม่เข้ากัน
เราอยากให้คุณย้ายระบบโดยรู้ครบทุกด้าน ดีกว่าไปเจอเรื่องไม่คาดคิดบนโปรดักชัน ความเข้ากันได้นั้นมีจริง แต่ไม่ได้เหมือนกันทุกไบต์:
| reCAPTCHA | Cap | |
|---|---|---|
| พารามิเตอร์ของคำขอ | secret, response และ remoteip (ไม่บังคับ) | secret, response (remoteip จะถูกละเลย) |
| Endpoint | URL ของ google.com ที่ตายตัว | /<site-key>/siteverify ของคุณเอง |
| ฟิลด์บอกความสำเร็จ | success (บูลีน) | success (บูลีน) |
| การรายงานข้อผิดพลาด | error-codes (อาร์เรย์) | error (สตริง) |
| ฟิลด์เพิ่มเติม | challenge_ts, hostname, score (v3) | ไม่มี |
ในทางปฏิบัติ:
- โค้ดที่เช็กแค่
response.successใช้งานได้ทันทีหลังเปลี่ยน URL และ secret ซึ่งเป็นกรณีที่พบบ่อยที่สุด และเป็นการแก้เพียงบรรทัดเดียว - โค้ดที่ไปดู
error-codes,challenge_ts,hostnameหรือscoreของ v3 ต้องแก้ เพราะ Cap เป็นระบบยืนยัน ไม่ใช่ระบบให้คะแนนความเสี่ยงเชิงพฤติกรรม ฟิลด์เหล่านั้นจึงไม่มี - ถ้าคุณใช้ SDK ฝั่งแบ็กเอนด์ที่ฝัง URL ตรวจสอบของ Google ไว้ตายตัว ให้เปลี่ยนไปใช้ตัวที่ตั้ง endpoint เองได้ หรือเรียก
/siteverifyตรง ๆ เพราะมีแค่สองพารามิเตอร์เท่านั้น
ย้ายระบบโดยไม่มีเวลาหยุดทำงาน
คุณไม่ต้องสลับสวิตช์แล้วภาวนา ให้ติดตั้ง Cap ไว้กับอิลิเมนต์แยกต่างหาก แล้วให้แบ็กเอนด์ยอมรับได้ทั้ง cap-token ที่ถูกต้องหรือ g-recaptcha-response ที่ถูกต้องในช่วงเปลี่ยนผ่าน จับตาดูอัตราการตรวจสอบผ่านของ Cap ในบันทึกล็อกของคุณ เมื่อดูแล้วเรียบร้อยดี จึงลบสคริปต์ อิลิเมนต์ และการเรียกฝั่งเซิร์ฟเวอร์ของ reCAPTCHA ออก ทีมส่วนใหญ่ทำการเปลี่ยนผ่านเสร็จภายในบ่ายเดียว
ดูเพิ่มเติม
- เดโมสด — ลองแก้ challenge ของ Cap ด้วยตัวเอง แล้วจับเวลาเทียบกับ reCAPTCHA
- Cap กับ reCAPTCHA — การเปรียบเทียบฉบับเต็ม
- Cap ตรวจจับบอทอย่างไร — โมเดล proof-of-work บวก instrumentation
- เริ่มต้นใช้งาน — ตั้ง Cap จากศูนย์ภายในห้านาที
