指南
任务(令牌)
Geetest

GeeTestTask: 解决 Geetest

TIP

使用 createTask 方法创建任务,并使用 getTaskResult 方法获取结果。

我们支持的任务类型 types

  • GeeTestTaskProxyLess

支持的图片类型

类型说明状态
img.png滑块稳定
img_2.png图标点击稳定
img_2.png图标按压稳定
img_2.png九宫格稳定
img_2.png五子棋稳定

创建任务

使用 createTask 创建任务。

任务对象结构

属性类型必填描述
typeString必填GeeTestTaskProxyLess
websiteURLString必填使用极验验证码的网站地址 (例如: https://geetest.com)
gtString必填仅Geetest V3需要
challengeString必填仅Geetest V3需要
captchaIdString可选仅Geetest V4需要
geetestApiServerSubdomainString可选特殊的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 获取结果,根据系统负载,您将在 3s10s 的时间间隔内获取到结果。

示例请求

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)

注意事项

  1. 请不要直接从浏览器开发者工具中复制,通过请求获取 GT 和 challenge。

  2. 少量错误可以通过重新获取验证码参数来重试。

  3. 验证码参数只能提交识别一次,请勿重复提交相同参数进行识别,需要重新初始化获取。

  4. 注意:如果您无法通过网站,可能是编码问题,此时需要将 CAPTCHA 参数中的 = 符号替换为 %3D,其他无编码,请注意这一点。

  5. 测试服务器等参数可在此处查询: 极验 文档。