ERROR_WRONG_GOOGLEKEY có nghĩa là tham số googlekey không hợp lệ hoặc không khớp với trang đích. Hướng dẫn này bao gồm mọi nguyên nhân và cách khắc phục.
Nguyên nhân gây ra lỗi này
| nguyên nhân | Làm thế nào để xác định |
|---|---|
| Đã trích xuất khóa trang web không chính xác | Khóa không khớp với nguồn trang |
| Mã trang web doanh nghiệp được gửi theo tiêu chuẩn | Cần tham số enterprise=1 |
| Khóa reCAPTCHA vô hình không khớp | Cần tham số invisible=1 |
| Khóa trang web động đã thay đổi | Khóa đã được xoay kể từ khi trích xuất |
| Sitekey của trang sai | Trích xuất từ iframe hoặc tên miền khác |
| Khóa trang web đã lỗi thời được mã hóa cứng | Khóa đã hợp lệ trước đó |
Cách tìm khóa trang web chính xác
Phương pháp 1: Tìm kiếm nguồn trang
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}")
Phương pháp 2: DevTools của trình duyệt
- Mở trang đích trong Chrome
- Nhấn tab F12 → Thành phần
- Nhấn Ctrl+F và tìm kiếm
sitekey - Tìm thuộc tính
data-sitekey="..." - Sao chép giá trị (chuỗi chữ và số gồm 40 ký tự)
Cách 3: Tab mạng
- Mở tab F12 → Mạng
- Lọc theo
recaptcha - Tìm kiếm yêu cầu tới
google.com/recaptcha/api2/anchor - Tìm tham số
k=trong URL - đó là khóa trang web
Xác thực trước khi gửi
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)
Xử lý reCAPTCHA Enterprise
Khóa trang doanh nghiệp trông giống nhau nhưng yêu cầu tham số enterprise:
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)
Xử lý reCAPTCHA vô hình
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,
}
Trích xuất khóa trang web động
Một số trang web tải khóa trang web qua JavaScript. Sử dụng trình duyệt để giải nén chúng:
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
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Chìa khóa có vẻ đúng nhưng lỗi vẫn tồn tại | Khóa trang web doanh nghiệp | Thêm enterprise=1 |
| Những thay đổi chính giữa các lần truy cập | Khóa trang web động | Trích xuất khóa mới mỗi lần |
| Nhiều khóa trang web trên trang | Đã chọn sai | Ghép chìa khóa với mẫu đúng |
| Khóa từ iframe CDN | Khóa tên miền sai | Trích xuất từ trang chính, không phải iframe |
| Đã trích xuất khóa trang web trống | được hiển thị bằng JavaScript | Sử dụng Selenium để giải nén |
Câu hỏi thường gặp
Khóa trang web hợp lệ trông như thế nào?
Khóa trang web reCAPTCHA thường có 40 ký tự văn bản chữ và số cộng với dấu gạch ngang. Ví dụ: 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-.
Cùng một khóa trang web có thể hoạt động cho cả v2 và v3 không?
Số v2 và v3 sử dụng các khóa trang web khác nhau. Kiểm tra nguồn tập lệnh reCAPTCHA để xác định phiên bản.
Tôi có nên lưu trữ khóa trang web không?
Bộ nhớ đệm trong thời gian ngắn (vài phút đến vài giờ). Một số trang web xoay phím. Nếu việc giải quyết bắt đầu không thành công, hãy giải nén lại sitekey.
Hướng dẫn liên quan
Nhận đúng khóa trang web —giải quyết với CaptchaAI.