feat: add funcaptcha support
All checks were successful
release-tag / release (push) Successful in 2m6s
All checks were successful
release-tag / release (push) Successful in 2m6s
This commit is contained in:
@ -72,6 +72,24 @@ type okResponse simpleResponse
|
||||
|
||||
func (r *okResponse) text() string { return "OK|" + r.Request }
|
||||
|
||||
func parsePhpAssociativeArray(values map[string][]string, arrayName string) map[string]string {
|
||||
result := make(map[string]string)
|
||||
prefix := arrayName + "["
|
||||
suffix := "]"
|
||||
|
||||
for key, values := range values {
|
||||
if strings.HasPrefix(key, prefix) && strings.HasSuffix(key, suffix) && len(values) > 0 {
|
||||
result[key[len(prefix):len(key)-len(suffix)]] = values[0]
|
||||
}
|
||||
}
|
||||
|
||||
if len(result) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func (a *ruCaptchaApi) endpointIn(params url.Values) ruCaptchaResponse {
|
||||
var id uint32
|
||||
switch params.Get("method") {
|
||||
@ -125,6 +143,26 @@ func (a *ruCaptchaApi) endpointIn(params url.Values) ruCaptchaResponse {
|
||||
Action: action,
|
||||
CData: cData,
|
||||
})
|
||||
case "funcaptcha":
|
||||
siteKey := params.Get("publickey")
|
||||
pageUrl := params.Get("pageurl")
|
||||
data := parsePhpAssociativeArray(params, "data")
|
||||
if siteKey == "" || pageUrl == "" {
|
||||
return &simpleResponse{0, "ERROR_BAD_PARAMETERS"}
|
||||
}
|
||||
|
||||
var serviceUrl *string
|
||||
if params.Has("surl") {
|
||||
val := params.Get("surl")
|
||||
serviceUrl = &val
|
||||
}
|
||||
|
||||
id = a.ctx.Registry.CreateTask(&sati.FunCaptchaTask{
|
||||
SiteKey: siteKey,
|
||||
PageUrl: pageUrl,
|
||||
ServiceUrl: serviceUrl,
|
||||
Data: data,
|
||||
})
|
||||
default:
|
||||
return &simpleResponse{0, "ERROR_ZERO_CAPTCHA_FILESIZE"}
|
||||
}
|
||||
@ -143,11 +181,13 @@ func (r *get2Response) text() string {
|
||||
}
|
||||
|
||||
func (a *ruCaptchaApi) convertTaskResult(task *Task) string {
|
||||
switch task.Result.(type) {
|
||||
switch result := task.Result.(type) {
|
||||
case *sati.ReCaptcha2Result:
|
||||
return task.Result.(*sati.ReCaptcha2Result).Token
|
||||
return result.Token
|
||||
case *sati.TurnstileResult:
|
||||
return task.Result.(*sati.TurnstileResult).Token
|
||||
return result.Token
|
||||
case *sati.FunCaptchaResult:
|
||||
return result.Token
|
||||
}
|
||||
|
||||
a.ctx.Logger.WithFields(logrus.Fields{
|
||||
|
Reference in New Issue
Block a user