لا يحتوي reCAPTCHA v2 Invisible على مربع اختيار مرئي. يتم تنشيطه تلقائيًا عندما يرسل المستخدم نموذجًا أو ينقر فوق زر، ولا يظهر تحديًا إلا إذا اكتشف تحليل المخاطر في Google سلوكًا مشبوهًا. وهذا يجعل من الصعب اكتشافه في التشغيل الآلي — قد لا تدرك وجود اختبار CAPTCHA حتى يفشل إرسال النموذج الخاص بك.
كيف يختلف reCAPTCHA غير المرئي عن الإصدار 2
| ميزة | معيار reCAPTCHA v2 | reCAPTCHA v2 غير مرئية |
|---|---|---|
| القطعة مرئية | نعم (خانة اختيار) | لا (الشارة فقط) |
| تفاعل المستخدم | انقر فوق خانة الاختيار | تلقائي عند إرسال النموذج |
data-size |
normal أو compact |
invisible |
| التحدي المنبثقة | ممكن دائما | فقط للمستخدمين المشبوهين |
| عنصر DOM | .g-recaptcha شعبة |
.g-recaptcha div أو برمجي |
الكشف عن reCAPTCHA غير المرئية
الطريقة الأولى: التحقق من سمة حجم البيانات
// Browser console
const widgets = document.querySelectorAll('.g-recaptcha');
widgets.forEach((el, i) => {
const size = el.getAttribute('data-size');
const sitekey = el.getAttribute('data-sitekey');
console.log(`Widget ${i}: size=${size}, sitekey=${sitekey}`);
if (size === 'invisible') {
console.log(' → This is Invisible reCAPTCHA');
}
});
الطريقة الثانية: التحقق من وجود الشارة
يُظهر اختبار reCAPTCHA غير المرئي شارة صغيرة في الزاوية:
const badge = document.querySelector('.grecaptcha-badge');
if (badge) {
console.log('reCAPTCHA badge found — likely Invisible reCAPTCHA');
console.log('Badge visibility:', getComputedStyle(badge).visibility);
}
الطريقة الثالثة: التحقق من مكالمات grecaptcha.exe
إذا كانت الصفحة تستخدم استدعاء برمجيًا (بدون .g-recaptcha div):
// Look for grecaptcha.execute in page scripts
document.querySelectorAll('script:not([src])').forEach(s => {
if (s.textContent.includes('grecaptcha.execute')) {
console.log('Found grecaptcha.execute — Invisible reCAPTCHA');
const match = s.textContent.match(/grecaptcha\.execute\s*\(\s*['"]?([^'",\s)]+)/);
if (match) console.log('Sitekey:', match[1]);
}
});
الطريقة الرابعة: التحقق من معلمة عرض علامة البرنامج النصي
document.querySelectorAll('script[src*="recaptcha"]').forEach(s => {
if (s.src.includes('render=') && !s.src.includes('render=explicit')) {
console.log('Invisible/v3 reCAPTCHA detected in script:', s.src);
}
});
الحل باستخدام CaptchaAI
الفرق الرئيسي: قم بتمرير invisible=1 إلى CaptchaAI حتى يعرف الحل أنه يتعامل مع متغير غير مرئي.
بايثون
import requests
import time
API_KEY = "YOUR_API_KEY"
# Submit with invisible flag
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6Le-SITEKEY",
"pageurl": "https://example.com/login",
"invisible": "1", # critical for Invisible reCAPTCHA
"json": "1",
}).json()
if resp["status"] != 1:
raise Exception(f"Submit error: {resp['request']}")
task_id = resp["request"]
print(f"Submitted: {task_id}")
# Poll for result
for _ in range(24):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": "1"
}).json()
if result["status"] == 1:
print(f"Token: {result['request'][:50]}...")
break
if result["request"] != "CAPCHA_NOT_READY":
raise Exception(f"Error: {result['request']}")
JavaScript
const axios = require('axios');
const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
params: {
key: 'YOUR_API_KEY',
method: 'userrecaptcha',
googlekey: '6Le-SITEKEY',
pageurl: 'https://example.com/login',
invisible: 1,
json: 1,
}
});
const taskId = resp.data.request;
console.log(`Submitted: ${taskId}`);
حقن الرمز المميز لـ reCAPTCHA غير المرئي
عادة ما يتم ربط reCAPTCHA غير المرئي بزر أو إرسال نموذج. بعد الحقن، تحتاج إلى تشغيل رد الاتصال أو إرسال النموذج:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/login")
# After solving, inject and trigger
driver.execute_script("""
// Set the token
document.querySelector('textarea[name="g-recaptcha-response"]').value = arguments[0];
// Find and trigger the callback
var widget = document.querySelector('.g-recaptcha');
var callbackName = widget ? widget.getAttribute('data-callback') : null;
if (callbackName && typeof window[callbackName] === 'function') {
window[callbackName](arguments[0]);
}
""", token)
# Submit the form
driver.find_element(By.CSS_SELECTOR, "form#login").submit()
تحديد عنصر المحفّز
يمكن ربط reCAPTCHA غير المرئي بزر معين:
<button class="g-recaptcha"
data-sitekey="6Le-SITEKEY"
data-callback="onSubmit"
data-size="invisible">
Submit
</button>
أو تفعيلها برمجيا:
// Site's code
document.getElementById('submit-btn').addEventListener('click', function() {
grecaptcha.execute();
});
تحقق من كلا النموذجين:
// Find elements with g-recaptcha class that are buttons
document.querySelectorAll('button.g-recaptcha, input.g-recaptcha').forEach(el => {
console.log('Trigger element:', el.tagName, el.textContent.trim());
console.log(' data-sitekey:', el.getAttribute('data-sitekey'));
console.log(' data-callback:', el.getAttribute('data-callback'));
});
استكشاف الأخطاء وإصلاحها
| مشكلة | السبب | إصلاح |
|---|---|---|
| تم رفض الرمز المميز | invisible=1 مفقود في الإرسال |
أضف invisible: "1" إلى طلب CaptchaAI |
| لا يمكن العثور على مفتاح الموقع | لا يوجد قسم .g-recaptcha |
تحقق من وجود مكالمات grecaptcha.render() أو grecaptcha.execute() الآلية |
| يتم إرسال النموذج ولكنه يفشل | لم يتم تشغيل رد الاتصال | ابحث عن الدالة data-callback واستدعها |
| لم يتم اكتشاف اختبار CAPTCHA | يظهر فقط لحركة المرور المشبوهة | تحقق من وجود عنصر grecaptcha-badge أو علامات البرنامج النصي recaptcha |
الأسئلة الشائعة
كيف يمكنني التمييز بين Invisible v2 وv3؟
يستخدم الإصدار الثاني غير المرئي grecaptcha.execute() بدون معلمة action. يستخدم الإصدار 3 grecaptcha.execute(sitekey, {action: 'submit'}) مع الإجراء. كما يستخدم الإصدار 3 render=SITEKEY في عنوان URL للبرنامج النصي.
هل نسيان العلم غير المرئي مهم؟
نعم. بدون invisible=1، قد يحاول القائم بالحل تجربة أسلوب حل مختلف ينتج عنه رموز مميزة مرفوضة من قبل الموقع.
هل يمكنني حل مشكلة reCAPTCHA غير المرئية بدون متصفح؟
نعم — ما عليك سوى مفتاح الموقع وعنوان URL للصفحة. المتصفح مطلوب فقط لإدخال الرمز المميز وتشغيل رد الاتصال.
قم بحل مشكلة reCAPTCHA v2 غير المرئية بسلاسة مع CaptchaAI
احصل على مفتاح API الخاص بك علىcaptchaai.com.