Görünmez reCAPTCHA, kullanıcı bir düğmeyi tıkladığında veya bir form gönderdiğinde etkinleşir; onay kutusu yoktur. Mücadele arka planda gerçekleşir ve sayfa yalnızca belirteç doğrulandığında devam eder. Bunu CaptchaAI aracılığıyla çözmek standart v2'ye benzer, tek bir önemli eklemeyle: API isteğinizde invisible=1'yi iletmelisiniz.
Entegrasyondaki en büyük fark tokenı nasıl enjekte ettiğinizdir. Çoğu görünmez uygulama, gizli g-recaptcha-response alanı yerine bir geri çağırma işlevi kullanır. Bu geri aramayı bulup aramanız gerekir.
Görünmez mi yoksa standart v2 mi olduğundan emin değil misiniz? OkuyunreCAPTCHA v2 vs Görünmez Açıklamasıalgılama ipuçları için.
İhtiyacınız olan şey
| Gereksinim | Ayrıntılar |
|---|---|
| CaptchaAI API anahtarı | captchaai.com/api.php |
| Site anahtarı | Widget veya düğmedeki data-sitekey'den |
| Sayfa URL'si | Görünmez CAPTCHA'nın çalıştığı tam URL |
| Tarayıcı aracı | Geri aramayı yürütmek için Selenium/Puppeteer |
1. Adım: Görünmez reCAPTCHA'yı tespit edin
Sayfa HTML'sinde şu kalıpları arayın:
<!-- Option 1: div with data-size="invisible" -->
<div class="g-recaptcha" data-sitekey="6LdKlZEU..." data-size="invisible" data-callback="onSubmit"></div>
<!-- Option 2: button with data-sitekey (invisible by default) -->
<button data-sitekey="6LdKlZEU..." data-callback="onSubmit">Submit</button>
<!-- Option 3: programmatic execution -->
<script>
grecaptcha.execute('6LdKlZEU...', {action: 'submit'});
</script>
data-size="invisible"'yi, data-sitekey içeren bir düğmeyi veya kapsayıcı olmadan grecaptcha.execute()'yi görürseniz, bu görünmez reCAPTCHA'dır.
Adım 2: CaptchaAI'ye Gönderin
import requests
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6LdKlZEUAAAAAPoxm...",
"pageurl": "https://example.com/signup",
"invisible": 1,
"json": 1
})
task_id = response.json()["request"]
const params = new URLSearchParams({
key: "YOUR_API_KEY", method: "userrecaptcha",
googlekey: "6LdKlZEUAAAAAPoxm...",
pageurl: "https://example.com/signup",
invisible: 1, json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const { request: taskId } = await res.json();
3. Adım: Sonuç için anket yapın
import time
for _ in range(40):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": "YOUR_API_KEY", "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
token = result["request"]
break
if result.get("request") != "CAPCHA_NOT_READY":
raise RuntimeError(f"Error: {result['request']}")
4. Adım: Belirteci geri arama yoluyla enjekte edin
Bu kritik adımdır. Görünmez reCAPTCHA, yalnızca gizli bir alan değeri değil, geri arama işlevi de bekler:
# Selenium example
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com/signup")
# Find the callback name
callback = driver.execute_script("""
var el = document.querySelector('[data-callback]');
if (el) return el.getAttribute('data-callback');
var btn = document.querySelector('[data-sitekey]');
if (btn) return btn.getAttribute('data-callback');
return null;
""")
# Execute the callback with the token
if callback:
driver.execute_script(f"window['{callback}']('{token}');")
else:
# Fallback: fill hidden field and submit
driver.execute_script(f"""
document.getElementById('g-recaptcha-response').innerHTML = '{token}';
document.querySelector('form').submit();
""")
// Puppeteer example
await page.evaluate((token) => {
const el = document.querySelector('[data-callback]') || document.querySelector('[data-sitekey]');
const callbackName = el?.getAttribute('data-callback');
if (callbackName && window[callbackName]) {
window[callbackName](token);
} else {
document.getElementById('g-recaptcha-response').innerHTML = token;
document.querySelector('form').submit();
}
}, token);
Tam çalışma fonksiyonu
import requests
import time
def solve_invisible_recaptcha(api_key, sitekey, page_url):
submit = requests.get("https://ocr.captchaai.com/in.php", params={
"key": api_key, "method": "userrecaptcha", "googlekey": sitekey,
"pageurl": page_url, "invisible": 1, "json": 1
}).json()
if submit.get("status") != 1:
raise RuntimeError(f"Submit error: {submit.get('request')}")
task_id = submit["request"]
for _ in range(40):
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.get("status") == 1:
return result["request"]
if result.get("request") != "CAPCHA_NOT_READY":
raise RuntimeError(f"Solve error: {result.get('request')}")
raise TimeoutError("Timed out")
token = solve_invisible_recaptcha("YOUR_API_KEY", "6LdKlZEU...", "https://example.com/signup")
Tam çalıştırılabilir örnek
Ortam kurulumu, yoklama, yeniden denemeler ve hata işleme ile eksiksiz bir çalışma projesine mi ihtiyacınız var?
GitHub →'deki çalıştırılabilir örneğin tamamına bakın
SSS
reCAPTCHA'nın görünmez olup olmadığını nasıl anlarım?
Widget div'inde data-size="invisible"'yi veya data-sitekey içeren bir düğmeyi arayın. Görünür bir onay kutusu yoksa muhtemelen görünmezdir.
Görünmez reCAPTCHA için görünmez=1'e ihtiyacım var mı?
Evet. Bu olmadan, CaptchaAI görevi standart v2 olarak ele alır ve belirteç reddedilebilir.
Geri arama işlevini bulamazsam ne olur?
g-recaptcha-response gizli alanını doldurmayı ve formu göndermeyi deneyin. Bazı görünmez uygulamalar bu yönteme geri dönüyor. Bu başarısız olursa, reCAPTCHA yanıtlarını işleyen işlevler için sayfa JavaScript'inde arama yapın.
Görünmez reCAPTCHA Kurumsal olabilir mi?
Evet. İsteğinize hem invisible=1 hem de enterprise=1 ekleyin.
Geri arama yürütüldükten sonra sayfa neden yanıt vermiyor?
Geri arama adı yanlış olabilir veya sayfa ek form alanları bekliyor olabilir. Geri aramanın tam adını doğrulayın ve geri arama gerçekleşmeden önce gerekli tüm form alanlarının doldurulduğundan emin olun.
Görünmez reCAPTCHA'yı çözmeye başlayın
API anahtarınızı şu adresten alın:captchaai.com/api.php. invisible=1'yi v2 çözüm kodunuza ekleyin ve yukarıdaki geri arama ekleme modelini kullanın.