الشروحات المعمقة

reCAPTCHA v2 غير مرئي: اكتشاف المحفّز وحله

لا يحتوي 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.


أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.