GeeTestTask: GeeTestV3/V4 协议接口
⚠️ 通过 createTask 创建任务, 然后通过 getTaskResult 获取识别结果
任务类型type如下
GeeTestTaskProxyLess
支持的图像类型
| Type | Note | State |
|---|---|---|
![]() | 滑块 | stable |
| 图标点选 | stable | |
![]() | 文字点选 | stable |
![]() | 消消乐 | stable |
![]() | 九宫格 | stable |
![]() | 五子棋 | stable |
创建任务
通过 createTask 创建任务。
参数结构
| 属性 | 类型 | Required | 说明 |
|---|---|---|---|
| type | String | Yes | GeeTestTaskGeeTestTaskProxyLess |
| websiteURL | String | Yes | 网页所在URL |
| gt | String | Yes | 三代必传 |
| challenge | String | Yes | 三代必传 |
| captchaId | String | Yes | 四代必传 |
| geetestApiServerSubdomain | String | No | 特定Api subdomain,可选 |
请求示例
GeeTest 三代请求参数
txt
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/jsonjson
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeeTestTaskProxyLess",
"websiteURL":"http://mywebsite.com/geetest/test.php", //所在页面的URL
"gt":"...",
"challenge":"...",
"geetestApiServerSubdomain":"api.geetest.com", // 注意不要带`http://`和`/`
}
}GeeTest 四代请求参数
txt
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/jsonjson
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeeTestTaskProxyLess",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"captchaId": "..."
}
}响应示例
json
{
"errorId": 0,
"status": "idle",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}获取结果
使用 getTaskResult 方法获取识别结果,根据系统负载,您将在 3s 到 10s 的时间间隔内得到结果
请求示例
txt
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/jsonjson
{
"clientKey":"YOU_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}响应示例
如果你请求了3代你应该解析三代结果,如果是四代则需要解析四代结果
三代响应示例
json
{
"errorId": 0,
"solution": {
"challenge": "",
"validate": ""
},
"status": "ready"
}四代响应示例
json
{
"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 请求
python
#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":"...",
"geetestApiServerSubdomain":"...",
})
# v4
solution = capsolver.solve({
"type":"GeeTestTaskProxyLess",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"captchaId": "..."
})go
package main
import (
"fmt"
capsolver_go "github.com/capsolver/capsolver-go"
"log"
)
func main() {
// first you need to install sdk
//go get github.com/capsolver/capsolver-go
//export CAPSOLVER_API_KEY='...' or
//capSolver := CapSolver{ApiKey:"..."}
capSolver := capsolver_go.CapSolver{}
// v3
solution, err := capSolver.Solve(map[string]any{
"type":"GeeTestTaskProxyLess",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"gt":"...",
"challenge":"...",
"geetestApiServerSubdomain":"..."
})
if err != nil {
log.Fatal(err)
return
}
fmt.Println(solution)
//v4
solution, err = capSolver.Solve(
map[string]any{
"type": "GeeTestTaskProxyLess",
"websiteURL": "http://mywebsite.com/geetest/test.php",
"cptchaId":"..."
})
if err != nil {
log.Fatal(err)
}
}注意事项
- 请不要从浏览器开发者工具中直接复制,需要请求后获取
gt和challenge。 - 少量错误重新获取验证码参数重试即可。
- 验证码参数只能提交识别一次,切勿同样的参数重复提交识别,需要重新初始化获取。
- 四代中【注意事项:如遇无法通过可能是网站编码问题,则
captcha_output的=符号用%3D替换,其他无需编码,请注意该事项】。 - 测试服务端等参数可以在这里查询 Geetest文档。
CapSolver



