การท้าทายแบบ QR code ของ Recaptcha รูปแบบใหม่ได้รับการรองรับโดยตรงจาก Anti-Captcha
ทีม Anti-Captcha ได้ยืนยันว่า การท้าทายของ Recaptcha ด้วย QR code ตัวใหม่นั้นรองรับโดยตรงบนบริการของเรา ไม่จำเป็นต้องเปลี่ยนแปลงการรวมระบบของคุณ เนื่องจากทุกแคปช่าบน Anti-Captcha แก้ไขโดยคนจริง ผู้ปฏิบัติงานของเราจึงจัดการความท้าทายตัวใหม่นี้ในแบบเดียวกับที่ผู้เข้าชมเว็บไซต์ทั่วไปจะทำ

ความท้าทายแบบ QR code ของ Recaptcha คืออะไร
Google ได้นำเสนอการท้าทายรูปแบบใหม่ใน ฤดูร้อนของปี 2026 ในขณะนี้กำลังทดสอบในโหมดปิดบนเว็บไซต์ชุดจำกัด ก่อนที่จะเปิดใช้งานให้กับลูกค้า Recaptcha ทั้งหมด แทนที่จะเลือกรูปภาพหรือติ๊กช่องทำเครื่องหมาย ผู้ใช้จะเห็น QR code และถูกขอให้ทำการยืนยันบนโทรศัพท์มือถือของตน การท้าทายแบบ QR code ไม่ได้ผูกติดกับ Recaptcha เวอร์ชันใดเวอร์ชันหนึ่ง โดยจะปรากฏบนเว็บไซต์ที่ใช้ทั้ง Recaptcha V2 และ Recaptcha V3
แนวคิดเบื้องหลังนั้นเรียบง่าย: การให้บอตจำลองเบราว์เซอร์เดสก์ท็อปนั้นค่อนข้างมีต้นทุนต่ำ แต่การจำลองสมาร์ทโฟนจริงที่มีกล้อง มีระบบปฏิบัติการของแท้ และมีการเข้าถึงร้านแอปอย่างเป็นทางการนั้นยากกว่ามาก
คุณสมบัติทางเทคนิค
- เน้นมือถือ ความท้าทายไม่สามารถทำให้เสร็จได้ภายในเบราว์เซอร์ที่แสดงผล การยืนยันถูกย้ายไปยังอุปกรณ์แยกต่างหาก — สมาร์ทโฟนของผู้ใช้ — และเบราว์เซอร์เพียงรอการยืนยันเท่านั้น
- สแกนด้วยกล้องของโทรศัพท์ QR code จะถูกสแกนด้วยแอปกล้องปกติของโทรศัพท์ ไม่จำเป็นต้องใช้เครื่องสแกน QR ของบุคคลที่สาม กล้องจะจดจำโค้ดและเสนอให้เปิดการยืนยัน
- แก้ไขโดยมินิแอปจาก Google Play และ App Store การสแกนโค้ดจะเปิดมินิแอปแบบเบาที่แจกจ่ายผ่าน Google Play (Android ที่มี Google Play Services 25.41.30) หรือ App Store (iOS 15/16+) มินิแอปจะเปิดขึ้นทันทีโดยไม่ต้องติดตั้งเต็มรูปแบบและทำการยืนยันบนอุปกรณ์
- การยืนยันที่ผูกกับอุปกรณ์ ผลลัพธ์จะผูกกับอุปกรณ์จริง ซึ่งทำให้ความท้าทายนี้ทำอัตโนมัติได้ยากมากด้วยเบราว์เซอร์แบบ headless อีมูเลเตอร์ หรือตัวแก้ไขที่ใช้ AI
ผู้ปฏิบัติงานของ Anti-Captcha จัดการอย่างไร
เราได้ทำการทดสอบภายในกลุ่มผู้ปฏิบัติงานของ Anti-Captcha: ประมาณ 50% ของพวกเขาสามารถแก้ไขความท้าทายตัวใหม่ได้ทันที โดยใช้โทรศัพท์ของพวกเขาเอง โดยไม่มีคำแนะนำหรือการเตรียมตัวเพิ่มเติมใดๆ ส่วนที่เหลือส่วนใหญ่เพียงต้องอัปเดตระบบปฏิบัติการหรือเปลี่ยนไปใช้อุปกรณ์ที่รองรับ ซึ่งเป็นเพียงเรื่องของเวลามากกว่าจะเป็นอุปสรรคที่แท้จริง
นี่คือจุดที่บริการที่ขับเคลื่อนด้วยคนจริงมีข้อได้เปรียบเหนือตัวแก้ไขอัตโนมัติ คนที่มีสมาร์ทโฟนธรรมดาสามารถทำความท้าทายให้เสร็จได้ภายในไม่กี่วินาที ในขณะที่บอตจะต้องใช้ฟาร์มของอุปกรณ์จริงเพื่อทำสิ่งเดียวกัน
มันหมายความว่าอย่างไรสำหรับลูกค้าของเรา
คุณยังคงส่งงาน Recaptcha V2 หรือ V3 ในแบบเดียวกับที่คุณทำอยู่ในตอนนี้ เมื่อเว็บไซต์แสดงการท้าทายแบบ QR code งานนั้นจะถูกแก้ไขโดยพนักงานของเราบนโทรศัพท์ของพวกเขา และคุณจะได้รับ token g-recaptcha-response ตามปกติในผลลัพธ์ของงาน
วิธีตรวจสอบว่าเว็บไซต์ใช้ Recaptcha เวอร์ชันใด
เปิดหน้าที่มี captcha ใน Chrome เปิด developer console (F12 จากนั้นแท็บ Console) วางสคริปต์ด้านล่างแล้วกด Enter รันหลังจากที่ captcha ปรากฏบนหน้าแล้ว ตัวอย่างเช่นหลังจากคลิกปุ่มส่งของฟอร์ม
(() => {
const out = { scripts: [], iframes: [], clients: [], verdict: [] };
// 1. Loaded Recaptcha scripts
document.querySelectorAll('script[src*="recaptcha"]').forEach(s => {
const u = new URL(s.src, location.href);
out.scripts.push({
src: u.pathname,
enterprise: u.pathname.includes('enterprise'),
render: u.searchParams.get('render'),
});
});
// 2. Anchor-iframe
document.querySelectorAll('iframe[src*="/anchor"]').forEach(f => {
const u = new URL(f.src);
out.iframes.push({
enterprise: u.pathname.includes('/enterprise/'),
sitekey: u.searchParams.get('k'),
size: u.searchParams.get('size'),
action: u.searchParams.get('sa'),
s: u.searchParams.has('s'),
});
});
// 3. Internal config: look for objects with a sitekey
const seen = new WeakSet();
const walk = (o, depth = 0) => {
if (!o || typeof o !== 'object' || seen.has(o) || depth > 6) return;
seen.add(o);
if (typeof o.sitekey === 'string') {
out.clients.push({
sitekey: o.sitekey,
size: o.size,
action: o.action,
callback: typeof o.callback === 'function' ? o.callback.name || 'fn'
: o.callback || null,
badge: o.badge,
});
}
for (const k in o) { try { walk(o[k], depth + 1); } catch {} }
};
try { walk(window.___grecaptcha_cfg?.clients); } catch {}
// 4. Verdict
const renderKey = out.scripts.find(s => s.render && s.render !== 'explicit' && s.render !== 'onload');
const ent = out.scripts.some(s => s.enterprise) || !!window.grecaptcha?.enterprise;
if (renderKey) out.verdict.push(`v3/score (render=${renderKey.render})`);
out.iframes.forEach(i => {
if (i.size === 'normal' || i.size === 'compact') out.verdict.push(`v2 checkbox (${i.sitekey})`);
else if (i.size === 'invisible' && (!renderKey || renderKey.render !== i.sitekey))
out.verdict.push(`v2 invisible (${i.sitekey})`);
});
if (ent) out.verdict.push('Enterprise');
console.table(out.scripts);
console.table(out.iframes);
console.table(out.clients);
console.log('VERDICT:', out.verdict.length ? out.verdict.join(' | ') : 'not found (the captcha may not be loaded yet)');
return out;
})();สคริปต์จะพิมพ์สคริปต์ Recaptcha, วิดเจ็ต และการตั้งค่าของสิ่งเหล่านั้น (sitekey, size, action) ในรูปแบบตาราง ตามด้วยบรรทัด VERDICT:
v3/score— Recaptcha V3: sitekey จะถูกส่งในพารามิเตอร์renderของสคริปต์ Recaptchav2 checkbox/v2 invisible— Recaptcha V2 ที่มีช่องทำเครื่องหมายหรือวิดเจ็ตแบบมองไม่เห็นEnterprise— เว็บไซต์ใช้ Recaptcha Enterprise (สคริปต์enterprise.js)
ใช้ sitekey จากผลลัพธ์เป็น website key และค่า action หากมี เป็น page action ในตัวอย่างโค้ดด้านล่าง
ตัวอย่างโค้ด
เลือกเวอร์ชัน Recaptcha ที่พบบนเว็บไซต์:
วิธีแก้ Recaptcha QR ใน Python
#pip3 install anticaptchaofficial
from anticaptchaofficial.recaptchav2enterpriseproxyless import *
solver = recaptchaV2EnterpriseProxyless()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://website.com")
solver.set_website_key("YOUR_API_KEY_HERE")
# set to "true" if there's "size":"invisible" option in "grecaptcha.enterprise.render" function
solver.set_is_invisible(True)
# Set page action value:
solver.set_enterprise_payload({"action": "form_submit"})
g_response = solver.solve_and_return_solution()
if g_response != 0:
print("g-response: "+g_response)
# user-agent in case you need it:
print("user-agent: "+solver.get_user_agent())
else:
print("task finished with error "+solver.error_code)