reCAPTCHA v2 Enterprise 使用与标准 v2 相同的复选框质询,但它通过 Google 的 Enterprise API 而不是公共 siteverify 端点来验证令牌。通过 CaptchaAI 的求解过程几乎相同 - 您添加一个参数:enterprise=1。
本指南逐步介绍使用 Python 和 Node.js 代码进行检测、参数提取和求解。
不确定您面对的是企业版还是标准版? 阅读如何识别 reCAPTCHA 企业实施第一的。
开始之前您需要什么
| 要求 | 细节 |
|---|---|
| CaptchaAI API 密钥 | 获取一份captchaai.com/api.php |
| 目标页面网址 | reCAPTCHA 显示的完整 URL |
| 站点密钥 | 来自 data-sitekey 属性 |
| 企业旗帜 | 通过 enterprise.js 脚本标签确认 |
| data-s 值(如果存在) | 某些企业实施上的可选附加令牌 |
第1步:检测企业实施
检查这些指标的页面源:
// Enterprise script tag (NOT api.js)
// <script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
// Enterprise JavaScript object
// grecaptcha.enterprise.render(...)
// grecaptcha.enterprise.execute(...)
如果您看到 enterprise.js 或 grecaptcha.enterprise,则为 Enterprise。如果你看到api.js和grecaptcha,那就是标准的。
第2步:提取参数
# Sitekey: from data-sitekey attribute
# <div class="g-recaptcha" data-sitekey="6LcR_RsTAAAA..." data-s="..."></div>
# Or from enterprise.js render parameter
# https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAA...
还要检查 data-s — 某些企业实现需要的附加会话令牌。
第三步:提交至CaptchaAI
import requests
params = {
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
"pageurl": "https://staging.example.com/qa-login",
"enterprise": 1, # Required for Enterprise
"json": 1
}
# Include data-s if present on the page
# params["data-s"] = "data-s-value-from-page"
response = requests.get("https://ocr.captchaai.com/in.php", params=params)
data = response.json()
task_id = data["request"]
print(f"Task ID: {task_id}")
const params = new URLSearchParams({
key: "YOUR_API_KEY",
method: "userrecaptcha",
googlekey: "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
pageurl: "https://staging.example.com/qa-login",
enterprise: 1,
json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const data = await res.json();
console.log(`Task ID: ${data.request}`);
第四步:投票结果
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"]
print(f"Token: {token[:50]}...")
break
if result.get("request") != "CAPCHA_NOT_READY":
raise RuntimeError(f"Error: {result['request']}")
let token;
for (let i = 0; i < 40; i++) {
await new Promise((r) => setTimeout(r, 5000));
const res = await fetch(
`https://ocr.captchaai.com/res.php?${new URLSearchParams({
key: "YOUR_API_KEY", action: "get", id: taskId, json: 1,
})}`
);
const data = await res.json();
if (data.status === 1) { token = data.request; break; }
if (data.request !== "CAPCHA_NOT_READY") throw new Error(data.request);
}
第5步:注入令牌
token 提交与标准 v2 相同:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://staging.example.com/qa-login")
# Inject token into hidden field
driver.execute_script(
f'document.getElementById("g-recaptcha-response").innerHTML = "{token}";'
)
# Check for callback
callback = driver.execute_script(
'var el = document.querySelector(".g-recaptcha"); '
'return el ? el.getAttribute("data-callback") : null;'
)
if callback:
driver.execute_script(f'{callback}("{token}");')
else:
driver.find_element("css selector", "form").submit()
完整的工作示例
import requests
import time
def solve_recaptcha_v2_enterprise(api_key, sitekey, page_url, data_s=None):
params = {
"key": api_key, "method": "userrecaptcha",
"googlekey": sitekey, "pageurl": page_url,
"enterprise": 1, "json": 1
}
if data_s:
params["data-s"] = data_s
submit = requests.get("https://ocr.captchaai.com/in.php", params=params).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("Solve timed out after 200s")
# Usage
token = solve_recaptcha_v2_enterprise("YOUR_API_KEY", "6LcR_RsTAAAA...", "https://staging.example.com/qa-login")
print(f"Solved: {token[:50]}...")
完整的可运行示例
需要一个包含环境设置、轮询、重试和错误处理的完整工作项目吗?
常问问题
标准 API 调用和企业 API 调用之间的唯一区别是什么?
将 enterprise=1 添加到您的 CaptchaAI 请求中。其他一切——方法名称、sitekey 参数、轮询——都是相同的。
什么时候需要data-s参数?
仅当页面在 reCAPTCHA div 上包含 data-s 属性时。大多数企业实现不使用它。检查 HTML 源。
CaptchaAI 企业版的收费是否不同?
查看验证码网站对于当前定价。企业解决方案可能使用不同的线程数。
企业代币可以重复使用吗?
不会。与标准 v2 一样,企业令牌是一次性的,并在大约 2 分钟后过期。
我如何知道我的企业解决方案是否失败?
如果目标站点在token 提交后仍然阻止您,请验证:(1) 您包含了 enterprise=1,(2) 站点密钥是否正确,(3) 包含了 data-s(如果存在),(4) 令牌在 2 分钟内使用。
开始解决reCAPTCHA v2 Enterprise
获取您的 API 密钥:captchaai.com/api.php。将 enterprise=1 添加到您现有的 reCAPTCHA v2 求解代码中,您就准备好了。
相关指南
- 如何识别 reCAPTCHA 企业实施
- 常见 reCAPTCHA v2 Enterprise 错误
- 如何使用API解决reCAPTCHA v2
- 标准版与企业版 reCAPTCHA v2