reCAPTCHA görevlerinizin çoğu sorunsuz çözülürken belirli bir alan adında sürekli ERROR_WRONG_GOOGLEKEY alıyorsanız, sorun API tarafında değildir: gönderdiğiniz googlekey değeri, sayfadaki gerçek sitekey ile eşleşmiyordur. İyi haber, bu hatanın nedenleri sayılıdır ve hepsi birkaç dakikada doğrulanabilir. Aşağıda hatayı tetikleyen senaryoları, doğru sitekey'i çıkarmanın üç yöntemini ve Enterprise ile görünmez reCAPTCHA için gereken ek parametreleri bulacaksınız.
ERROR_WRONG_GOOGLEKEY hatası neyi gösterir?
Bu hata tek bir şeyi söyler: isteğe koyduğunuz googlekey, hedef sayfanın beklediği anahtar değildir. Anahtarın kendisi geçerli bir reCAPTCHA sitekey formatında olsa bile, yanlış sayfaya, yanlış sürüme veya süresi geçmiş bir kopyaya aitse çözüm reddedilir. Aşağıdaki tablo, üretimde en sık gördüğümüz altı kök nedeni ve her birini nasıl teşhis edeceğinizi özetler.
| Neden | Nasıl anlaşılır? |
|---|---|
| Yanlış sitekey çıkarıldı | Değer, sayfa kaynağındaki anahtarla eşleşmiyor |
| Enterprise anahtar standart olarak gönderildi | İstek enterprise=1 parametresini gerektiriyor |
| Görünmez reCAPTCHA anahtarı uyuşmuyor | İstek invisible=1 parametresini gerektiriyor |
| Dinamik sitekey değişti | Anahtar, çıkarımdan sonra döndürülmüş |
| Yanlış sayfanın anahtarı | iframe'den veya farklı bir alan adından alınmış |
| Sabit kodlanmış eski anahtar | Anahtar önceden geçerliydi, artık değil |
Not: sitekey (yani
googlekey) herkese açık bir değerdir ve sayfa kaynağından okunması tamamen normaldir. Gizli tutmanız gereken tek şey CaptchaAIYOUR_API_KEYdeğerinizdir; onu istemci tarafı koda gömmeyin.
E-ticaret QA akışlarında tipik bir senaryo
Türkiye'deki otomasyon geliştiricilerinin bu hatayla en sık karşılaştığı yer, bir e-ticaret veya ödeme sağlayıcısının staging ortamında koştukları giriş ve ödeme adımı testleridir. Sayfa sitekey'i JavaScript ile geç yüklüyor ve dağıtımlar arasında döndürüyorsa, bir hafta önce sabit kodladığınız anahtar bugün ERROR_WRONG_GOOGLEKEY üretir. Çözüm, anahtarı her çalıştırmada dinamik olarak çıkarmak ve göndermeden önce doğrulamaktır.
İki pratik not: kazıdığınız QA verileri kişisel veri içeriyorsa Türkiye'de KVKK kapsamına girer; bu iş akışlarını yalnızca yetkiniz olan ve sahibi olduğunuz test ortamlarında yürütün. Maliyet tarafında ise CaptchaAI thread tabanlı ve USD üzerinden faturalandığı için — örneğin BASIC ($15/ay, 5 thread) — TL kur oynaklığından bağımsız, öngörülebilir bir aylık gider planlayabilirsiniz.
Doğru sitekey nasıl bulunur?
Teşhisin ilk adımı, sayfadaki gerçek sitekey'i güvenilir biçimde çıkarmaktır. Duruma göre üç yöntemden birini kullanın.
Yöntem 1: sayfa kaynağında arama
Statik HTML içinde anahtar birkaç farklı biçimde geçebilir. Aşağıdaki fonksiyon en yaygın dört kalıbı sırayla dener:
import re
import requests
def extract_sitekey(page_url):
"""Extract reCAPTCHA sitekey from page source."""
resp = requests.get(page_url, timeout=15)
html = resp.text
# Pattern 1: data-sitekey attribute
match = re.search(r'data-sitekey="([^"]+)"', html)
if match:
return match.group(1)
# Pattern 2: grecaptcha.render call
match = re.search(r"grecaptcha\.render\([^,]+,\s*\{[^}]*sitekey['\"]?\s*:\s*['\"]([^'\"]+)", html)
if match:
return match.group(1)
# Pattern 3: grecaptcha.execute call
match = re.search(r"grecaptcha\.execute\(['\"]([^'\"]+)", html)
if match:
return match.group(1)
# Pattern 4: reCAPTCHA script src
match = re.search(r"recaptcha/api\.js\?render=([^&\"]+)", html)
if match:
return match.group(1)
return None
sitekey = extract_sitekey("https://staging.example.com/qa-login")
print(f"Sitekey: {sitekey}")
Yöntem 2: tarayıcı geliştirici araçları
Anahtar sayfa kaynağında görünmüyorsa doğrudan tarayıcıdan bakın:
- Hedef sayfayı Chrome'da açın.
- F12 ile geliştirici araçlarını açıp Elements sekmesine geçin.
- Ctrl+F ile arama kutusunu açın ve
sitekeyyazın. data-sitekey="..."özniteliğini bulun.- Değeri kopyalayın — 40 karakterlik alfasayısal bir dizedir.
Yöntem 3: Network sekmesi
Anahtar tamamen JavaScript ile enjekte ediliyorsa ağ trafiğinden yakalayın:
- F12 → Network sekmesini açın.
- İstekleri
recaptchaile filtreleyin. google.com/recaptcha/api2/anchoradresine giden isteği bulun.- URL içindeki
k=parametresi aradığınız sitekey'dir.
sitekey'i API'ye göndermeden önce doğrulayın
Çıkardığınız değeri isteğe koymadan önce biçim kontrolünden geçirmek, hatalı bir anahtar için görev harcamanızı önler. Boş veya beklenmedik uzunluktaki bir değeri erkenden yakalayın:
import re
def validate_sitekey(sitekey):
"""Validate sitekey format before API call."""
if not sitekey:
raise ValueError("Sitekey is empty")
# Standard format: 40 alphanumeric + hyphens/underscores
if not re.match(r'^[a-zA-Z0-9_-]{20,60}$', sitekey):
raise ValueError(f"Invalid sitekey format: {sitekey}")
return True
# Use before solving
sitekey = extract_sitekey("https://staging.example.com/qa-login")
validate_sitekey(sitekey)
reCAPTCHA Enterprise sitekey'lerini çözme
Enterprise anahtarları normal sitekey'lerle aynı görünür ama isteğe enterprise parametresi eklenmedikçe reddedilir. Sayfanın recaptcha/enterprise.js yükleyip yüklemediğine bakarak türü ayırt edin ve bayrağı yalnızca gerektiğinde ekleyin:
import requests
# Standard reCAPTCHA — loads via recaptcha/api.js
# Enterprise reCAPTCHA — loads via recaptcha/enterprise.js
def detect_enterprise(page_url):
"""Detect if page uses reCAPTCHA Enterprise."""
resp = requests.get(page_url, timeout=15)
return "recaptcha/enterprise.js" in resp.text
# Submit with enterprise flag
is_enterprise = detect_enterprise("https://example.com")
data = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": "https://example.com",
"json": 1,
}
if is_enterprise:
data["enterprise"] = 1
resp = requests.post("https://ocr.captchaai.com/in.php", data=data)
Görünmez reCAPTCHA'da googlekey uyumsuzluğu
Görünmez reCAPTCHA aynı anahtarı kullanır, ancak isteğin invisible=1 ile gönderilmesi gerekir; aksi halde doğru anahtar bile ERROR_WRONG_GOOGLEKEY üretebilir. Sayfada data-size="invisible", grecaptcha.execute( veya recaptcha/api.js?render= işaretlerinden biri varsa görünmez sürümle çalışıyorsunuz demektir:
def detect_invisible(html):
"""Detect invisible reCAPTCHA."""
indicators = [
'data-size="invisible"',
"grecaptcha.execute(",
"recaptcha/api.js?render=",
]
return any(i in html for i in indicators)
# Submit with invisible flag
data = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": "https://example.com",
"invisible": 1,
"json": 1,
}
JavaScript ile yüklenen dinamik sitekey'leri çıkarma
Bazı sayfalar sitekey'i çalışma zamanında JavaScript ile enjekte eder; bu durumda basit bir requests.get boş döner. Anahtarı gerçek bir tarayıcı oturumundan okuyun ve önce data-sitekey özniteliğini, bulunamazsa iframe src parametresindeki k= değerini deneyin:
from selenium import webdriver
from selenium.webdriver.common.by import By
def extract_dynamic_sitekey(url):
"""Extract sitekey from JavaScript-rendered page."""
driver = webdriver.Chrome()
driver.get(url)
# Wait for reCAPTCHA to load
import time
time.sleep(3)
# Try data-sitekey attribute
elements = driver.find_elements(By.CSS_SELECTOR, "[data-sitekey]")
if elements:
sitekey = elements[0].get_attribute("data-sitekey")
driver.quit()
return sitekey
# Try iframe src parameter
iframes = driver.find_elements(By.CSS_SELECTOR, "iframe[src*='recaptcha']")
for iframe in iframes:
src = iframe.get_attribute("src")
import re
match = re.search(r'[?&]k=([^&]+)', src)
if match:
driver.quit()
return match.group(1)
driver.quit()
return None
ERROR_WRONG_GOOGLEKEY için hızlı sorun giderme tablosu
Aşağıdaki tablo, en sık gelen belirtileri nedenleriyle ve tek satırlık çözümleriyle eşleştirir:
| Belirti | Neden | Çözüm |
|---|---|---|
| Anahtar doğru görünüyor ama hata sürüyor | Enterprise sitekey | İsteğe enterprise=1 ekleyin |
| Anahtar ziyaretler arasında değişiyor | Dinamik sitekey | Her seferinde anahtarı yeniden çıkarın |
| Sayfada birden fazla sitekey var | Yanlış olan seçilmiş | Anahtarı doğru formla eşleştirin |
| Anahtar CDN iframe'inden geliyor | Yanlış alan adının anahtarı | iframe yerine ana sayfadan çıkarın |
| Boş sitekey çıkıyor | Anahtar JavaScript ile üretiliyor | Selenium ile çıkarın |
Sık sorulan sorular
googlekey ve sitekey aynı şey mi?
Evet. CaptchaAI API'sinde googlekey, sayfadaki reCAPTCHA data-sitekey değerinin ta kendisidir; yalnızca parametre adı farklıdır. İsteğe gönderdiğiniz googlekey, hedef sayfadaki sitekey ile birebir aynı olmalıdır.
enterprise=1 eklediğim halde hata sürüyorsa ne yapmalıyım?
Önce anahtarın gerçekten Enterprise olduğunu recaptcha/enterprise.js yüklemesine bakarak doğrulayın. Anahtar Enterprise değilse enterprise=1 sorunu çözmez; büyük olasılıkla yanlış sayfadan veya bir iframe'den kopyalanmış bir sitekey kullanıyorsunuzdur.
Aynı site anahtarı hem reCAPTCHA v2 hem v3 için kullanılabilir mi?
Hayır. v2 ve v3 ayrı sitekey'ler kullanır. Sürümü belirlemek için sayfadaki reCAPTCHA betiğinin kaynağına bakın; yanlış sürüm için üretilmiş bir anahtar da bu hatayı tetikler.
Site anahtarını önbelleğe almalı mıyım?
Kısa süreli önbellek (dakikalar, en fazla saatler) uygundur. Bazı siteler anahtarları düzenli olarak döndürür; çözümler aniden başarısız olmaya başlarsa sitekey'i yeniden çıkarın.
pageurl ile googlekey aynı alan adından mı olmalı?
Evet. googlekey değerini hangi sayfadan çıkardıysanız, pageurl da tam olarak o sayfanın adresi olmalıdır. Bir iframe'in veya CDN alan adının anahtarını ana sayfanın pageurl'üyle eşleştirmek en sık görülen uyumsuzluk nedenidir.
İlgili kılavuzlar
Doğru sitekey'i çıkarın — CaptchaAI ile çözün.