feat: add geetest support
All checks were successful
release-tag / release (push) Successful in 2m4s
All checks were successful
release-tag / release (push) Successful in 2m4s
This commit is contained in:
@ -253,6 +253,36 @@ func (a *antigateV2Api) createTask(request struct {
|
||||
}
|
||||
satiTask.(*sati.FunCaptchaTask).Proxy = proxy
|
||||
}
|
||||
case "geetesttask", "geetesttaskproxyless":
|
||||
var task struct {
|
||||
WebsiteURL string `json:"websiteURL"`
|
||||
SiteKey string `json:"gt"`
|
||||
Challenge string `json:"challenge"`
|
||||
ApiServer *string `json:"geetestApiServerSubdomain"`
|
||||
Version *int `json:"version"`
|
||||
}
|
||||
mapstructure.Decode(request.Task, &task)
|
||||
if task.Version != nil && *task.Version != 3 {
|
||||
a.ctx.Logger.WithFields(logrus.Fields{
|
||||
"version": *task.Version,
|
||||
"handler": a.Name(),
|
||||
}).Warn("attempt to solve geetest with bad version")
|
||||
return errorTaskNotSupported
|
||||
}
|
||||
|
||||
satiTask = &sati.GeeTest3Task{
|
||||
SiteKey: task.SiteKey,
|
||||
Challenge: task.Challenge,
|
||||
ApiServer: task.ApiServer,
|
||||
PageUrl: task.WebsiteURL,
|
||||
}
|
||||
if taskType == "geetesttask" {
|
||||
proxy := collectAntiGateV2Proxy(request.Task)
|
||||
if proxy == nil {
|
||||
return errorProxyConnectRefused
|
||||
}
|
||||
satiTask.(*sati.GeeTest3Task).Proxy = proxy
|
||||
}
|
||||
default:
|
||||
return errorTaskNotSupported
|
||||
}
|
||||
|
@ -177,7 +177,8 @@ func (a *capSolverApi) createTask(request struct {
|
||||
|
||||
var satiTask sati.AnyTask
|
||||
|
||||
switch strings.ToLower(taskType) {
|
||||
taskType = strings.ToLower(taskType)
|
||||
switch taskType {
|
||||
case "anticloudflaretask":
|
||||
var task struct {
|
||||
WebsiteURL string `json:"websiteURL"`
|
||||
@ -237,6 +238,34 @@ func (a *capSolverApi) createTask(request struct {
|
||||
}
|
||||
satiTask.(*sati.FunCaptchaTask).Proxy = proxy
|
||||
}
|
||||
case "geetesttask", "geetesttaskproxyless":
|
||||
var task struct {
|
||||
WebsiteURL string `json:"websiteURL"`
|
||||
SiteKey string `json:"gt"`
|
||||
Challenge string `json:"challenge"`
|
||||
CaptchaId *string `json:"captchaId"`
|
||||
ApiServer *string `json:"geetestApiServerSubdomain"`
|
||||
}
|
||||
mapstructure.Decode(request.Task, &task)
|
||||
if task.CaptchaId != nil {
|
||||
a.ctx.Logger.WithField("handler", a.Name()).
|
||||
Warn("attempt to solve geetest v4")
|
||||
return csErrorTaskNotSupported
|
||||
}
|
||||
|
||||
satiTask = &sati.GeeTest3Task{
|
||||
SiteKey: task.SiteKey,
|
||||
Challenge: task.Challenge,
|
||||
ApiServer: task.ApiServer,
|
||||
PageUrl: task.WebsiteURL,
|
||||
}
|
||||
if taskType == "geetesttask" {
|
||||
proxy := collectCapSolverProxy(request.Task)
|
||||
if proxy == nil {
|
||||
return csErrorInvalidTaskData
|
||||
}
|
||||
satiTask.(*sati.GeeTest3Task).Proxy = proxy
|
||||
}
|
||||
default:
|
||||
return csErrorTaskNotSupported
|
||||
}
|
||||
|
@ -203,6 +203,23 @@ func (a *ruCaptchaApi) endpointIn(params url.Values) ruCaptchaResponse {
|
||||
Data: data,
|
||||
Proxy: extractRuCaptchaProxy(params),
|
||||
})
|
||||
case "geetest":
|
||||
task := &sati.GeeTest3Task{
|
||||
Proxy: extractRuCaptchaProxy(params),
|
||||
SiteKey: params.Get("gt"),
|
||||
PageUrl: params.Get("pageurl"),
|
||||
Challenge: params.Get("challenge"),
|
||||
}
|
||||
if task.SiteKey == "" || task.PageUrl == "" || task.Challenge == "" {
|
||||
return &simpleResponse{0, "ERROR_BAD_PARAMETERS"}
|
||||
}
|
||||
|
||||
if params.Has("api_server") {
|
||||
apiServer := params.Get("api_server")
|
||||
task.ApiServer = &apiServer
|
||||
}
|
||||
|
||||
id = a.ctx.Registry.CreateTask(task)
|
||||
default:
|
||||
return &simpleResponse{0, "ERROR_ZERO_CAPTCHA_FILESIZE"}
|
||||
}
|
||||
@ -228,6 +245,14 @@ func (a *ruCaptchaApi) convertTaskResult(task *Task) string {
|
||||
return result.Token
|
||||
case *sati.FunCaptchaResult:
|
||||
return result.Token
|
||||
case *sati.GeeTest3Result:
|
||||
data, _ := json.Marshal(&struct {
|
||||
Challenge string `json:"geetest_challenge"`
|
||||
Validate string `json:"geetest_validate"`
|
||||
Seccode string `json:"geetest_seccode"`
|
||||
}{result.Challenge, result.Validate, result.Seccode})
|
||||
|
||||
return string(data)
|
||||
}
|
||||
|
||||
a.ctx.Logger.WithFields(logrus.Fields{
|
||||
|
Reference in New Issue
Block a user