GeeTestTask: 解决 Geetest
TIP
使用 createTask 方法创建任务,并使用 getTaskResult 方法获取结果。
我们支持的任务类型 types
:
GeeTestTaskProxyLess
支持的图片类型
类型 | 说明 | 状态 |
---|---|---|
![]() | 滑块 | 稳定 |
![]() | 图标点击 | 稳定 |
![]() | 图标按压 | 稳定 |
![]() | 九宫格 | 稳定 |
![]() | 五子棋 | 稳定 |
创建任务
使用 createTask 创建任务。
任务对象结构
属性 | 类型 | 必填 | 描述 |
---|---|---|---|
type | String | 必填 | GeeTestTaskProxyLess |
websiteURL | String | 必填 | 使用极验验证码的网站地址 (例如: https://geetest.com) |
gt | String | 必填 | 仅Geetest V3需要 |
challenge | String | 必填 | 仅Geetest V3需要 |
captchaId | String | 可选 | 仅Geetest V4需要 |
geetestApiServerSubdomain | String | 可选 | 特殊的API子域名,例如:api.geetest.com |
示例请求
使用 Geetest V3 的请求示例
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeetestTaskProxyless",
"websiteURL":"https://mywebsite.com/geetest/test.php",
"gt":"",
"challenge":"",
"geetestApiServerSubdomain":"api.geetest.com" // Optional
}
}
使用 Geetest V4 的请求示例
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeetestTaskProxyless",
"websiteURL":"https://mywebsite.com/geetest/test.php",
"captchaId": "..."
}
}
示例响应
{
"errorId": 0,
"status": "idle",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
获取结果
使用 getTaskResult 获取结果,根据系统负载,您将在
3s
到 10s
的时间间隔内获取到结果。
示例请求
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey":"YOU_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
示例响应
使用 GeetestV3 的响应示例
{
"errorId": 0,
"solution": {
"challenge": "",
"validate": ""
},
"status": "ready"
}
使用 GeetestV4 的响应示例
{
"errorId": 0,
"taskId": "e0ecaaa8-06f6-41fd-a02e-a0c79b957b15",
"status": "ready",
"solution": {
"captcha_id": "",
"captcha_output": "",
"gen_time": "",
"lot_number": "",
"pass_token": "",
"risk_type": "slide"
}
}
使用 SDK 请求
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
import capsolver
capsolver.api_key = "..."
# V3
solution = capsolver.solve({
"type": "GeeTestTaskProxyLess",
"websiteURL": "http://mywebsite.com/geetest/test.php",
"gt": "...",
"challenge": "..."
})
# V4
solution = capsolver.solve({
"type": "GeeTestTaskProxyLess",
"websiteURL": "http://mywebsite.com/geetest/test.php",
"captchaId": "..."
})
示例代码
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: 你的 capsolver API 密钥
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'GeeTestTaskProxyLess',
"websiteURL": "https://mywebsite.com/geetest/test.php", # 你的网站页面 URL
"gt": "...", # v3 必需
"challenge": "...", # v3 必需
"captchaId": "...", # v4 必需
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("创建任务失败:", res.text)
return
print(f"获取到 taskId: {task_id} / 正在获取结果...")
while True:
time.sleep(1) # 延迟
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution")
if status == "failed" or resp.get("errorId"):
print("解决失败! 响应:", res.text)
return
solution = capsolver()
print(solution)
注意事项
-
请不要直接从浏览器开发者工具中复制,通过请求获取 GT 和 challenge。
-
少量错误可以通过重新获取验证码参数来重试。
-
验证码参数只能提交识别一次,请勿重复提交相同参数进行识别,需要重新初始化获取。
-
注意:如果您无法通过网站,可能是编码问题,此时需要将 CAPTCHA 参数中的
=
符号替换为 %3D,其他无编码,请注意这一点。 -
测试服务器等参数可在此处查询: 极验 文档。