Penjelasan Mendalam

reCAPTCHA v2 Invisible: Deteksi Trigger dan Cara Solve

reCAPTCHA v2 Invisible tidak memiliki kotak centang yang terlihat. Ini aktif secara otomatis ketika pengguna mengirimkan formulir atau mengklik tombol, dan hanya menampilkan tantangan jika analisis risiko Google mendeteksi perilaku mencurigakan. Hal ini membuat lebih sulit untuk dideteksi dalam otomatisasi — Anda mungkin tidak menyadari adanya CAPTCHA sampai pengiriman formulir Anda gagal.


Perbedaan reCAPTCHA Invisible dengan v2 standar

Fitur Standar reCAPTCHA v2 reCAPTCHA v2 Invisible
Widget yang terlihat Ya (kotak centang) Tidak (hanya lencana)
Interaksi pengguna Klik kotak centang Otomatis pada formulir pengiriman
data-size normal atau compact invisible
Tantangan munculan Selalu mungkin Hanya untuk pengguna yang mencurigakan
elemen DOM .g-recaptcha div .g-recaptcha div atau terprogram

Mendeteksi reCAPTCHA yang Invisible

Metode 1: Periksa atribut ukuran data

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

Metode 2: Periksa lencananya

ReCAPTCHA yang invisible menunjukkan lencana kecil di sudut:

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

Metode 3: Periksa panggilan grecaptcha.execute

Jika halaman menggunakan pemanggilan terprogram (tidak ada div .g-recaptcha):

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

Metode 4: Periksa parameter render tag skrip

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

Menyelesaikan dengan CaptchaAI

Perbedaan utamanya: meneruskan invisible=1 ke CaptchaAI sehingga pemecah mengetahui bahwa ia menangani varian Invisible.

ular piton

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}`);

pengaturan token untuk reCAPTCHA Invisible

ReCAPTCHA yang invisible biasanya terikat pada tombol atau formulir pengiriman. Setelah injeksi, Anda perlu memicu callback atau mengirimkan formulir:

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()

Mengidentifikasi elemen pemicu

ReCAPTCHA yang invisible dapat diikat ke tombol tertentu:

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

Atau diaktifkan secara terprogram:

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

Periksa kedua pola:

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

Pemecahan Masalah

Masalah Penyebab Solusi
Token ditolak invisible=1 tidak ada dalam pengiriman Tambahkan invisible: "1" ke permintaan CaptchaAI
Tidak dapat menemukan sitekey Tidak ada div .g-recaptcha Periksa panggilan terprogram grecaptcha.render() atau grecaptcha.execute()
Formulir dikirimkan tetapi gagal Callback tidak terpicu Temukan dan panggil fungsi data-callback
CAPTCHA tidak terdeteksi Hanya muncul untuk lalu lintas yang mencurigakan Periksa elemen grecaptcha-badge atau tag skrip recaptcha

Pertanyaan Umum

Bagaimana cara membedakan Invisible v2 dari v3?

V2 invisible menggunakan grecaptcha.execute() tanpa parameter action. v3 menggunakan grecaptcha.execute(sitekey, {action: 'submit'}) dengan suatu tindakan. Selain itu, v3 menggunakan render=SITEKEY di URL skrip.

Apakah melupakan bendera yang invisible itu penting?

Ya. Tanpa invisible=1, pemecah dapat mencoba pendekatan solve berbeda yang menghasilkan token yang ditolak oleh situs.

Bisakah saya menyelesaikan reCAPTCHA Invisible tanpa browser?

Ya — Anda hanya memerlukan sitekey dan URL halaman. Browser hanya diperlukan untuk memasukkan token dan memicu callback.


Selesaikan reCAPTCHA v2 Invisible secara mulus dengan CaptchaAI

Dapatkan kunci API Anda dicaptchaai.com.


Panduan terkait

Komentar dinonaktifkan untuk artikel ini.