예제 #1
0
        private async Task <CaptchaResponse> Solve(CaptchaService service, CaptchaType captchaType)
        {
            var proxy = MakeProxy(Proxy, ProxyType);

            switch (captchaType)
            {
            case CaptchaType.TextCaptcha:
                var textOptions = new TextCaptchaOptions()
                {
                    CaptchaLanguageGroup = CaptchaLanguageGroup,
                    CaptchaLanguage      = CaptchaLanguage
                };
                return(await service.SolveTextCaptchaAsync(Text, textOptions));

            case CaptchaType.ImageCaptcha:
                if (CaptchaImage == null)
                {
                    throw new ArgumentNullException("You must download an image first!");
                }

                var imageOptions = new ImageCaptchaOptions()
                {
                    IsPhrase             = IsPhrase,
                    CaseSensitive        = CaseSensitive,
                    CharacterSet         = CharacterSet,
                    RequiresCalculation  = RequiresCalculation,
                    MinLength            = int.Parse(MinLength),
                    MaxLength            = int.Parse(MaxLength),
                    CaptchaLanguageGroup = CaptchaLanguageGroup,
                    CaptchaLanguage      = CaptchaLanguage,
                    TextInstructions     = TextInstructions
                };
                return(await service.SolveImageCaptchaAsync(CaptchaImage.ToBase64(ImageFormat.Jpeg), imageOptions));

            case CaptchaType.ReCaptchaV2:
                return(await service.SolveRecaptchaV2Async(SiteKey, SiteUrl, SData, Enterprise, Invisible, proxy));

            case CaptchaType.ReCaptchaV3:
                return(await service.SolveRecaptchaV3Async(SiteKey, SiteUrl, Action,
                                                           float.Parse(MinScore, CultureInfo.InvariantCulture), Enterprise, proxy));

            case CaptchaType.FunCaptcha:
                return(await service.SolveFuncaptchaAsync(PublicKey, ServiceUrl, SiteUrl, NoJS, proxy));

            case CaptchaType.HCaptcha:
                return(await service.SolveHCaptchaAsync(SiteKey, SiteUrl, proxy));

            case CaptchaType.KeyCaptcha:
                return(await service.SolveKeyCaptchaAsync(UserId, SessionId, WebServerSign1, WebServerSign2,
                                                          SiteUrl, proxy));

            case CaptchaType.GeeTest:
                return(await service.SolveGeeTestAsync(GT, Challenge, ApiServer, SiteUrl, proxy));

            case CaptchaType.Capy:
                return(await service.SolveCapyAsync(SiteKey, SiteUrl, proxy));
            }

            throw new NotSupportedException($"Captcha type {captchaType} is not supported by the tester yet!");
        }