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
- Mekanisme Callback reCAPTCHA v2
- Mengekstrak Parameter reCAPTCHA dari Sumber Halaman
- Deteksi CAPTCHA Konsol Browser