forked from justhyped/gocaptcha
/
captchaSolver.go
89 lines (72 loc) · 2.74 KB
/
captchaSolver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package gocaptcha
import (
"errors"
)
// SolveImageCaptcha solves an image captcha
func SolveImageCaptcha(payload *ImageCaptchaPayload) (*CaptchaResponse, error) {
payload.SetDefaultValues()
imageSolution, err := &CaptchaResponse{}, errors.New("unsupported captcha service")
switch payload.ServiceName {
case "2Captcha":
imageSolution, err = twoCaptchaSolveImageCaptcha(payload)
case "AntiCaptcha":
imageSolution, err = antiCaptchaSolveImageCaptcha(payload)
case "CapMonster Cloud":
// CapMonster Cloud has the same api
// as AntiCaptcha so we just alter the api endpoint
payload.CustomServiceUrl = "api.capmonster.cloud"
imageSolution, err = antiCaptchaSolveImageCaptcha(payload)
}
return imageSolution, err
}
// SolveRecaptchaV2 solves recaptcha V2
func SolveRecaptchaV2(payload *RecaptchaV2Payload) (*CaptchaResponse, error) {
payload.SetDefaultValues()
captchaSolution, err := &CaptchaResponse{}, errors.New("unsupported captcha service")
switch payload.ServiceName {
case "2Captcha":
captchaSolution, err = twoCaptchaSolveRecaptchaV2(payload)
case "AntiCaptcha":
captchaSolution, err = antiCaptchaSolveRecaptchaV2(payload)
case "CapMonster Cloud":
// CapMonster Cloud has the same api
// as AntiCaptcha so we just alter the api endpoint
payload.CustomServiceUrl = "api.capmonster.cloud"
captchaSolution, err = antiCaptchaSolveRecaptchaV2(payload)
}
return captchaSolution, err
}
// SolveRecaptchaV3 solves recaptcha V3
func SolveRecaptchaV3(payload *RecaptchaV3Payload) (*CaptchaResponse, error) {
payload.SetDefaultValues()
captchaSolution, err := &CaptchaResponse{}, errors.New("unsupported captcha service")
switch payload.ServiceName {
case "2Captcha":
captchaSolution, err = twoCaptchaSolveRecaptchaV3(payload)
case "AntiCaptcha":
captchaSolution, err = antiCaptchaSolveRecaptchaV3(payload)
case "CapMonster Cloud":
// CapMonster Cloud has the same api
// as AntiCaptcha so we just alter the api endpoint
payload.CustomServiceUrl = "api.capmonster.cloud"
captchaSolution, err = antiCaptchaSolveRecaptchaV3(payload)
}
return captchaSolution, err
}
// SolveHCaptcha solves hCaptcha
func SolveHCaptcha(payload *HCaptchaPayload) (*CaptchaResponse, error) {
payload.SetDefaultValues()
captchaSolution, err := &CaptchaResponse{}, errors.New("unsupported captcha service")
switch payload.ServiceName {
case "2Captcha":
captchaSolution, err = twoCaptchaSolveHCaptcha(payload)
case "AntiCaptcha":
captchaSolution, err = antiCaptchaSolveHCaptcha(payload)
case "CapMonster Cloud":
// CapMonster Cloud has the same api
// as AntiCaptcha so we just alter the api endpoint
payload.CustomServiceUrl = "api.capmonster.cloud"
captchaSolution, err = antiCaptchaSolveHCaptcha(payload)
}
return captchaSolution, err
}