تحدي رمز QR الجديد من Recaptcha مدعوم أصليًا في Anti-Captcha
أكّد فريق Anti-Captcha أن تحدي Recaptcha مع رمز QR الجديد مدعوم أصلاً في خدمتنا. لا حاجة لأي تغييرات في عملية الدمج لديك: بما أن كل كابتشا في Anti-Captcha يحلها أشخاص حقيقيون، فإن عمّالنا يتعاملون مع هذا التحدي الجديد بالطريقة نفسها التي يتعامل بها زائر عادي للموقع.

ما هو تحدي رمز QR في Recaptcha
قدّمت Google التحدي الجديد في صيف عام 2026. في الوقت الحالي يجري اختباره في وضع مغلق على مجموعة محدودة من المواقع، قبل طرحه لجميع عملاء Recaptcha. فبدلاً من اختيار الصور أو تحديد مربع الاختيار، يُعرض على المستخدم رمز QR ويُطلب منه إكمال التحقق على هاتفه المحمول. تحدي رمز QR ليس مرتبطًا بإصدار واحد من Recaptcha: فهو يظهر على المواقع التي تستخدم كلاً من Recaptcha V2 وRecaptcha V3.
الفكرة من وراء ذلك بسيطة: من الرخيص نسبياً أن يحاكي بوت متصفح سطح مكتب، لكن من الأصعب بكثير محاكاة هاتف ذكي فعلي حقيقي بكاميرا ونظام تشغيل أصلي ووصول إلى متاجر التطبيقات الرسمية.
الميزات التقنية
- موجّه للهواتف المحمولة. لا يمكن إكمال التحدي داخل المتصفح الذي يُعرض فيه. يُنقل التحقق إلى جهاز منفصل — الهاتف الذكي للمستخدم — ويكتفي المتصفح بانتظار التأكيد.
- يُمسح بكاميرا الهاتف. يُمسح رمز QR بتطبيق الكاميرا العادي في الهاتف. لا حاجة لماسح QR خارجي: تتعرف الكاميرا على الرمز وتعرض فتح التحقق.
- يُحل بواسطة تطبيقات مصغّرة من Google Play وApp Store. يؤدي مسح الرمز إلى تشغيل تطبيق مصغّر خفيف يُوزّع عبر Google Play (نظام Android مع خدمات Google Play 25.41.30) أو App Store (نظام iOS 15/16+). يفتح التطبيق المصغّر فوراً دون تثبيت كامل وينفّذ التحقق على الجهاز.
- تحقق مرتبط بالجهاز. النتيجة مرتبطة بجهاز فعلي حقيقي، مما يجعل التحدي صعب الأتمتة للغاية باستخدام المتصفحات بدون واجهة أو المحاكيات أو أدوات الحل المعتمدة على الذكاء الاصطناعي.
كيف يتعامل عمّال Anti-Captcha معه
أجرينا اختباراً داخلياً بين عمّال Anti-Captcha: تمكّن نحو 50% منهم من حل التحدي الجديد على الفور باستخدام هواتفهم الخاصة، دون أي تعليمات أو تحضيرات إضافية. أما البقية فيحتاجون غالباً إلى تحديث نظام تشغيلهم أو الانتقال إلى جهاز مدعوم، وهي مسألة وقت وليست عائقاً حقيقياً.
هذا بالضبط ما يمنح الخدمة القائمة على البشر ميزة على أدوات الحل الآلية. فالشخص الذي يمتلك هاتفاً ذكياً عادياً يكمل التحدي في ثوانٍ، بينما سيضطر البوت إلى تشغيل مزرعة من الأجهزة الحقيقية لفعل الشيء نفسه.
ماذا يعني ذلك لعملائنا
تستمر في إرسال مهام Recaptcha V2 أو V3 بنفس الطريقة التي تتبعها الآن. عندما يعرض موقع ما تحدي رمز QR، يحله العاملون لدينا على هواتفهم وتستلم رمز g-recaptcha-response عاديًا في نتيجة المهمة.
كيفية معرفة إصدار Recaptcha الذي يستخدمه موقع ما
افتح الصفحة التي تحتوي على الكابتشا في Chrome، وافتح وحدة تحكم المطوّر (F12، ثم علامة التبويب Console)، والصق النص البرمجي أدناه واضغط Enter. شغّله بعد ظهور الكابتشا على الصفحة، على سبيل المثال بعد النقر على زر إرسال النموذج.
(() => {
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الخاص بنص Recaptcha البرمجي.v2 checkbox/v2 invisible— Recaptcha V2 مع مربع اختيار أو ودجت غير مرئي.Enterprise— يستخدم الموقع Recaptcha Enterprise (النص البرمجيenterprise.js).
استخدم sitekey من الناتج كمفتاح الموقع، وقيمة 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)