GeeTestTask: GeeTestV3/V4 协议接口
⚠️ 通过 createTask 创建任务, 然后通过 getTaskResult 获取识别结果
任务类型type
如下
GeeTestTask
必须传入代理GeeTestTaskProxyLess
是用服务器内置代理
创建任务
通过 createTask 创建任务。
参数结构
属性 | 类型 | Required | 说明 |
---|---|---|---|
type | String | Yes | GeeTestTask GeeTestTaskProxyLess |
websiteURL | String | Yes | 网页所在URL |
gt | String | Yes | 三代必传 |
challenge | String | Yes | 三代必传 |
captchaId | String | Yes | 四代必传 |
geetestApiServerSubdomain | String | No | 特定Api subdomain |
proxy | String | No | 学习使用代理 |
请求示例
GeeTest 三代请求参数
text
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeeTestTask",//GeeTestTask,GeeTestTaskProxyLess
"websiteURL":"http://mywebsite.com/geetest/test.php", //所在页面的URL
"gt":"874703612e5cd0d", //验证码所在网站极验的gt值,仅三代
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"geetestApiServerSubdomain":"api-na.geetest.com", //特殊网站极验抓包为三级域名的比如api-na.geetest.com这样的需要传对应的域名需要传此参数,注意不要带【http://】和【/】只需要域名即可
"proxy":"",//代理参数,如果有些网站校验IP的话,可传此参数
}
}
GeeTest 四代请求参数
text
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type":"GeeTestTask",//required GeeTestTask,GeeTestTaskProxyLess
"websiteURL":"http://mywebsite.com/geetest/test.php", //required 所在页面的URL
"captchaId": "c8057b071d833a13502a172c38a0044e", //required 四代参数为captcha_id值
"geetestApiServerSubdomain":"api-na.geetest.com", //optional 特殊网站极验抓包为三级域名的比如api-na.geetest.com这样的需要传对应的域名需要传此参数,注意不要带【http://】和【/】只需要域名即可
"proxy":"192.182.23.200:8000:user:pwd" //optional 代理参数,如果有些网站校验IP的话或者使用 GeeTestTask 传此参数
}
}
响应示例
json
{
"errorId": 0,
"status": "idle",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006" // 请记录此ID
}
获取结果
使用 getTaskResult 方法获取识别结果,根据系统负载,您将在 3s 到 10s 的时间间隔内得到结果
请求示例
text
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
json
{
"clientKey":"YOU_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
响应示例
如果你请求了3代你应该解析三代结果,如果是四代则需要解析四代结果
三代响应示例
json
{
"errorId": 0,
"solution": {
"challenge": "0f759dd1ea6c4wc76cedc2991039ca4f23",
"validate": "6275e26419211d1f526e674d97110e15"
},
"status": "ready"
}
四代响应示例
json
{
"errorId": 0,
"taskId": "e0ecaaa8-06f6-41fd-a02e-a0c79b957b15",
"status": "ready",
"solution": {
"captcha_id": "c8057b071d833a13502a172c38a0044e",
"captcha_output": "sW8mpqWPdtBwV4_GvgZZoTSnsoDl7xDvLHkfxhZv1QbU0HOeOXsQaBvR-S6WwY7aZ1XlgBDAXFmrtegNX2harzcq8_pVcCf1adwMgDtdJ6rBjmZs1cIgNL8okOD7Eh506ObA5u8ciBG3UehnuXMyDHAeJuiCygqMwFn2C8R3U5Hrgs0wiFlOvIcCjm-dBObNYuvK5m8thZvtU1xbVE8VENTwPIZaNIUGSG7ecPgKgi8=",
"gen_time": "1671687196",
"lot_number": "e5656ce24adf4ae58a5bf3f7bc847794",
"pass_token": "09dd5cbebdd738d78b3287346003c8d5cec255b97b074ed64d9009345d3eac4a",
"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":"874703612e5cd0d",
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"geetestApiServerSubdomain":"api-na.geetest.com",
})
# v4
solution = capsolver.solve({
"type":"GeeTestTaskProxyLess",
"websiteURL":"http://mywebsite.com/geetest/test.php",
"captchaId": "c8057b071d833a13502a172c38a0044e",
"geetestApiServerSubdomain":"api-na.geetest.com",
})
golang
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":"GeeTestTask",//GeeTestTask,GeeTestTaskProxyLess
"websiteURL":"http://mywebsite.com/geetest/test.php", //所在页面的URL
"gt":"874703612e5cd0d", //验证码所在网站极验的gt值,仅三代
"challenge":"0f759dd1ea6c4wc76cedc2991039ca4f23",
"geetestApiServerSubdomain":"api-na.geetest.com", //特殊网站极验抓包为三级域名的比如api-na.geetest.com这样的需要传对应的域名需要传此参数,注意不要带【http://】和【/】只需要域名即可
"proxy":"",//代理参数,如果有些网站校验IP的话,可传此参数
})
if err != nil {
log.Fatal(err)
return
}
fmt.Println(solution)
//v4
solution, err = capSolver.Solve(
map[string]any{
"type": "GeeTestTask",
"websiteURL": "http://mywebsite.com/geetest/test.php",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"cptchaId":"12310989asdf",
"geetestApiServerSubdomain":"api-na.geetest.com",
})
if err != nil {
log.Fatal(err)
}
}
注意事项
- 请不要从浏览器开发者工具中直接复制,需要请求后获取
gt
和challenge
。 - 少量错误重新获取验证码参数重试即可。
- 验证码参数只能提交识别一次,切勿同样的参数重复提交识别,需要重新初始化获取。
- 四代中【注意事项:如遇无法通过可能是网站编码问题,则
captcha_output
的=
符号用%3D替换,其他无需编码,请注意该事项】。 - 测试服务端等参数可以在这里查询 Geetest文档。