public AccountProvider(IAuthenticationProvider authenticationProvider, ICaptchaProvider captchaProvider, IEmailProvider emailProvider, IMobileProvider mobileProvider) { _authenticationProvider = authenticationProvider; _captchaProvider = captchaProvider; _emailProvider = emailProvider; _mobileProvider = mobileProvider; }
public Reddit(IListingFilter listingFilter, UserState userState, IActionDeferralSink deferalSink, ICaptchaProvider captchaProvider, string appId = null, string appSecret = null, string redirectUrl = null, ICachingProvider cacheProvider = null, INetworkLayer networkLayer = null) { _cacheProvider = cacheProvider; _networkLayer = networkLayer ?? new NetworkLayer(userState, appId, appSecret, redirectUrl); _listingFilter = listingFilter; _userState = userState ?? new UserState(); _deferalSink = deferalSink; _captchaProvider = captchaProvider; _appId = appId; _appSecret = appSecret; _redirectUrl = redirectUrl; }
public static ICaptchaProvider GetCaptchaProvider() { Lock.EnterReadLock(); try { { if (_provider == null) { _provider = new ReCaptchaProvider(); } } } finally { Lock.ExitReadLock(); } return _provider; }
public Reddit(IListingFilter listingFilter, UserState userState, IActionDeferralSink deferalSink, ICaptchaProvider captchaProvider, string appId = null, string appSecret = null, string redirectUrl = null) { _listingFilter = listingFilter; _userState = userState; _deferalSink = deferalSink; _captchaProvider = captchaProvider; _appId = appId; _appSecret = appSecret; _redirectUrl = redirectUrl; _cookieContainer = new CookieContainer(); var handler = new HttpClientHandler { CookieContainer = _cookieContainer }; if (handler.SupportsAutomaticDecompression) { handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; } _httpClient = new HttpClient(handler); //_httpClient.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "SnooStream"); //_httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Cache-Control", "no-cache"); }
public CaptchaController(IKeyValueProvider keyValueProvider, ICaptchaProvider captchaProvider) { _KeyValueProvider = keyValueProvider; CaptchaProvider = captchaProvider; }
/// <inheritdoc /> public override void Process(BotData data) { base.Process(data); // If the clearance info is already set and we're not getting it fresh each time, skip if (data.UseProxies) { if (data.Proxy.Clearance != "" && !data.GlobalSettings.Proxies.AlwaysGetClearance) { data.Log(new LogEntry("Skipping CF Bypass because there is already a valid cookie", Colors.White)); data.Cookies["cf_clearance"] = data.Proxy.Clearance; data.Cookies["__cfduid"] = data.Proxy.Cfduid; return; } } var localUrl = ReplaceValues(url, data); var uri = new Uri(localUrl); var timeout = data.GlobalSettings.General.RequestTimeout * 1000; // Initialize the captcha provider // TODO: Add more providers by implementing the ICaptchaProvider interface on the missing ones ICaptchaProvider provider = null; switch (data.GlobalSettings.Captchas.CurrentService) { case CaptchaServices.ServiceType.AntiCaptcha: provider = new AntiCaptchaProvider(data.GlobalSettings.Captchas.AntiCapToken); break; case CaptchaServices.ServiceType.TwoCaptcha: provider = new TwoCaptchaProvider(data.GlobalSettings.Captchas.TwoCapToken); break; } // Initialize the Cloudflare Solver CloudflareSolver cf = new CloudflareSolver(provider, ReplaceValues(UserAgent, data)) { ClearanceDelay = 3000, MaxCaptchaTries = 1, MaxTries = 3 }; // Create the cookie container CookieContainer cookies = new CookieContainer(); foreach (var cookie in data.Cookies) { cookies.Add(new Cookie(cookie.Key, cookie.Value, "/", uri.Host)); } // Initialize the http handler HttpClientHandler handler = new HttpClientHandler { AllowAutoRedirect = true, CookieContainer = cookies, AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; // Assign the proxy to the inner handler if necessary if (data.UseProxies) { if (data.Proxy.Type != Extreme.Net.ProxyType.Http) { throw new Exception($"The proxy type {data.Proxy.Type} is not supported by this block yet"); } handler.Proxy = new WebProxy(data.Proxy.Proxy, false); handler.UseProxy = true; if (!string.IsNullOrEmpty(data.Proxy.Username)) { handler.DefaultProxyCredentials = new NetworkCredential(data.Proxy.Username, data.Proxy.Password); } } // Initialize the http client HttpClient http = new HttpClient(handler); http.Timeout = TimeSpan.FromMinutes(timeout); http.DefaultRequestHeaders.Add("User-Agent", ReplaceValues(UserAgent, data)); var result = cf.Solve(http, handler, uri, ReplaceValues(UserAgent, data)).Result; if (result.Success) { data.Log(new LogEntry($"[Success] Protection bypassed: {result.DetectResult.Protection}", Colors.GreenYellow)); } else if (result.DetectResult.Protection == CloudflareProtection.Unknown) { data.Log(new LogEntry($"Unknown protection, skipping the bypass!", Colors.Tomato)); } else { throw new Exception($"CF Bypass Failed: {result.FailReason}"); } // Now that we got the cookies, proceed with the normal request HttpResponseMessage response = null; try { response = http.GetAsync(uri).Result; } catch (Exception ex) { throw new Exception(ex.Message); } finally { handler.Dispose(); http.Dispose(); } var responseString = response.Content.ReadAsStringAsync().Result; // Save the cloudflare cookies var clearance = ""; var cfduid = ""; foreach (Cookie cookie in cookies.GetCookies(uri)) { switch (cookie.Name) { case "cf_clearance": clearance = cookie.Value; break; case "__cfduid": cfduid = cookie.Value; break; } } // Save the cookies in the proxy if (data.UseProxies) { data.Proxy.Clearance = clearance; data.Proxy.Cfduid = cfduid; } if (clearance != "") { data.Log(new LogEntry("Got Cloudflare clearance!", Colors.GreenYellow)); data.Log(new LogEntry(clearance + Environment.NewLine + cfduid + Environment.NewLine, Colors.White)); } // Get code data.ResponseCode = ((int)response.StatusCode).ToString(); if (PrintResponseInfo) { data.Log(new LogEntry($"Response code: {data.ResponseCode}", Colors.Cyan)); } // Get headers if (PrintResponseInfo) { data.Log(new LogEntry("Received headers:", Colors.DeepPink)); } data.ResponseHeaders.Clear(); foreach (var header in response.Headers) { var h = new KeyValuePair <string, string>(header.Key, header.Value.First()); data.ResponseHeaders.Add(h.Key, h.Value); if (PrintResponseInfo) { data.Log(new LogEntry($"{h.Key}: {h.Value}", Colors.LightPink)); } } // Add the Content-Length header if it was not sent by the server if (!data.ResponseHeaders.ContainsKey("Content-Length")) { if (data.ResponseHeaders.ContainsKey("Content-Encoding") && data.ResponseHeaders["Content-Encoding"].Contains("gzip")) { data.ResponseHeaders["Content-Length"] = GZip.Zip(responseString).Length.ToString(); } else { data.ResponseHeaders["Content-Length"] = responseString.Length.ToString(); } if (PrintResponseInfo) { data.Log(new LogEntry($"Content-Length: {data.ResponseHeaders["Content-Length"]}", Colors.LightPink)); } } // Get cookies if (PrintResponseInfo) { data.Log(new LogEntry("Received cookies:", Colors.Goldenrod)); } foreach (Cookie cookie in cookies.GetCookies(uri)) { data.Cookies[cookie.Name] = cookie.Value; if (PrintResponseInfo) { data.Log(new LogEntry($"{cookie.Name}: {cookie.Value}", Colors.LightGoldenrodYellow)); } } // Print source data.ResponseSource = responseString; if (PrintResponseInfo) { data.Log(new LogEntry("Response Source:", Colors.Green)); data.Log(new LogEntry(data.ResponseSource, Colors.GreenYellow)); } // Error on 302 status if (ErrorOn302 && response.StatusCode == HttpStatusCode.Redirect) { data.Status = BotStatus.ERROR; } }
public CloudflareSolver(ICaptchaProvider captchaProvider, [Optional] string userAgent) { this.captchaProvider = captchaProvider; defaultUserAgent = userAgent ?? Utils.GetGenerateRandomUserAgent(); captchaDetectResults = new List <DetectResult>(); }
internal CaptchaChallengeSolver(CloudflareHandler handler, Uri siteUrl, DetectResult detectResult, string userAgent, ICaptchaProvider captchaProvider) : base(handler, siteUrl, detectResult, userAgent) { this.captchaProvider = captchaProvider; }
public static void Init(string antigateKey, int bufferSize, bool bBeep) { if (inited) return; lock (locker) { if (inited) return; inited = true; doStop = false; captchaBuf = new List<ResolvedCaptcha>(); buffSize = bufferSize; threadPoolSize = 5; threadPool = new Thread[threadPoolSize]; inResolve = 0; if (String.IsNullOrEmpty(antigateKey)) { captchaProvider = new WinFormsCaptchaProvider(bBeep); } else { captchaProvider = new AntigateCaptchaProvider(antigateKey); } var preCaptchaThread = new Thread(Worker); preCaptchaThread.Start(); } }
public async Task <CaptchaSolveResult> Solve(ICaptchaProvider captchaProvider) { return(await captchaProvider.SolveCaptcha(SiteKey, SiteUrl.AbsoluteUri)); }
public CloudflareSolver(ICaptchaProvider captchaProvider) { this.captchaProvider = captchaProvider; _captchaDetectResults = new List <DetectResult>(); }
internal CaptchaChallengeSolver(HttpClient client, CloudflareHandler handler, Uri siteUrl, DetectResult detectResult, ICaptchaProvider captchaProvider) : base(client, handler, siteUrl, detectResult) { this.captchaProvider = captchaProvider; }