Teknik Açıklamalar

reCAPTCHA v2 Invisible: Tetikleme Tespiti ve Çözümü

reCAPTCHA v2 Görünmez'in görünür bir onay kutusu yoktur. Kullanıcı bir form gönderdiğinde veya bir düğmeyi tıkladığında otomatik olarak etkinleşir ve yalnızca Google'ın risk analizi şüpheli bir davranış tespit ederse bir sorgulama gösterir. Bu, otomasyonda tespit edilmesini zorlaştırır; form gönderiminiz başarısız olana kadar bir CAPTCHA'nın olduğunu fark etmeyebilirsiniz.


Görünmez reCAPTCHA'nın standart v2'den farkı nedir?

Özellik reCAPTCHA v2 Standardı reCAPTCHA v2 Görünmez
Görünür widget Evet (onay kutusu) Hayır (yalnızca rozet)
Kullanıcı etkileşimi Onay kutusunu tıklayın Form gönderildiğinde otomatik
data-size normal veya compact invisible
Meydan okuma açılır penceresi Her zaman mümkün Yalnızca şüpheli kullanıcılar için
DOM öğesi .g-recaptcha div .g-recaptcha div veya programatik

Görünmez reCAPTCHA'yı Algılama

Yöntem 1: Veri boyutu özelliğini kontrol edin

// 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');
  }
});

Yöntem 2: Rozeti kontrol edin

Görünmez reCAPTCHA'nın köşesinde küçük bir rozet görünüyor:

const badge = document.querySelector('.grecaptcha-badge');
if (badge) {
  console.log('reCAPTCHA badge found — likely Invisible reCAPTCHA');
  console.log('Badge visibility:', getComputedStyle(badge).visibility);
}

Yöntem 3: Grecaptcha.execute çağrılarını kontrol edin

Sayfa programatik çağırma kullanıyorsa (.g-recaptcha div yok):

// 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]);
  }
});

Yöntem 4: Komut dosyası etiketi oluşturma parametresini kontrol edin

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 ile çözme

Temel fark: invisible=1'yi CaptchaAI'ye iletin, böylece çözücü, Görünmez bir değişkeni işlediğini bilir.

Python

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://staging.example.com/qa-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://staging.example.com/qa-login',
    invisible: 1,
    json: 1,
  }
});
const taskId = resp.data.request;
console.log(`Submitted: ${taskId}`);

Görünmez reCAPTCHA için jeton enjeksiyonu

Görünmez reCAPTCHA genellikle bir düğmeye veya form gönderimine bağlıdır. Enjeksiyondan sonra geri aramayı tetiklemeniz veya formu göndermeniz gerekir:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://staging.example.com/qa-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()

Tetikleyici öğenin belirlenmesi

Görünmez reCAPTCHA belirli bir düğmeye bağlanabilir:

<button class="g-recaptcha"
        data-sitekey="6Le-SITEKEY"
        data-callback="onSubmit"
        data-size="invisible">
  Submit
</button>

Veya programlı olarak etkinleştirildi:

// Site's code
document.getElementById('submit-btn').addEventListener('click', function() {
  grecaptcha.execute();
});

Her iki modeli de kontrol edin:

// 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'));
});

Sorun giderme

Sorun Sebep Düzeltme
Jeton reddedildi Gönderimde invisible=1 eksik CaptchaAI isteğine invisible: "1" ekleyin
Site anahtarını bulamıyorum .g-recaptcha div yok Programatik grecaptcha.render() veya grecaptcha.execute() çağrılarını kontrol edin
Form gönderilir ancak başarısız olur Geri arama tetiklenmedi data-callback işlevini bulun ve çağırın
CAPTCHA algılanmadı Yalnızca şüpheli trafikte görünür grecaptcha-badge öğesini veya recaptcha komut dosyası etiketlerini kontrol edin

SSS

Görünmez v2'yi v3'ten nasıl ayırt edebilirim?

Görünmez v2, action parametresi olmadan grecaptcha.execute()'yi kullanır. v3, bir eylemle grecaptcha.execute(sitekey, {action: 'submit'})'yi kullanır. Ayrıca v3, komut dosyası URL'sinde render=SITEKEY'yi kullanır.

Görünmez bayrağı unutmak önemli mi?

Evet. invisible=1 olmadan çözümleyici, site tarafından reddedilen tokenları üreten farklı bir çözümleme yaklaşımı deneyebilir.

Görünmez reCAPTCHA'yı tarayıcı olmadan çözebilir miyim?

Evet — yalnızca site anahtarına ve sayfa URL'sine ihtiyacınız var. Tarayıcının yalnızca belirteci enjekte etmesi ve geri aramayı tetiklemesi gerekir.


reCAPTCHA v2 Görünmezliği CaptchaAI ile sorunsuz bir şekilde çözün

API anahtarınızı şu adresten alın:captchaai.com.


İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.