/// <summary> /// Метод решения ImagesCaptcha /// </summary> /// <param name="URLToCaptcha">Ссылка на Captcha</param> /// <param name="account">Аккаунт</param> /// <returns></returns> public static string GetImagesCaptcha(string URLToCaptcha, CookieDictionary cookieDictionary, string account) { try { SaveData.WriteToLog(account, "Решаем ImagesCaptcha"); using (HttpRequest request = new HttpRequest()) { request.Cookies = cookieDictionary; var base64 = Convert.ToBase64String(request.Get(URLToCaptcha).ToBytes()); string json = $"{{\"clientKey\":\"{ClientKey}\",\"task\":{{\"type\":\"ImageToTextTask\",\"body\":\"{base64}\",\"phrase\":false,\"case\":false,\"numeric\":false,\"math\":0,\"minLength\":0,\"maxLength\":0}}}}"; string taskID = request.Post("https://api.anti-captcha.com/createTask ", json, "application/json").ToString(); taskID = taskID.Substring("\"taskId\":", "}"); for (int i = 0; i < 50; i++) { Thread.Sleep(5000); string result = request.Post("https://api.anti-captcha.com/getTaskResult", $"{{\"clientKey\": \"{ClientKey}\",\"taskId\": {taskID}}}", "application/json").ToString(); if (result.Contains("\"errorId\":0,\"status\":\"ready\"")) { SaveData.WriteToLog(account, "ImagesCaptcha решена."); return(result.Substring("\"text\":\"", "\"")); } } } } catch (Exception exception) { MessageBox.Show(exception.Message); } SaveData.WriteToLog("Captcha", "Не смогли решить ImagesCaptcha"); return(""); }
public static void StartThread() { try { SaveData.WriteToLog("SYSTEM", $"Начало работы программы. Режим {WorkWithAccount.OperatingMode}"); Threads.Clear(); SaveData.WriteToLog("SYSTEM", $"Создаем потоки"); for (int i = 0; i < countThread; i++) { Thread thread = new Thread(() => WorkWithAccount.StartWork()) { IsBackground = true }; thread.Name = $"Поток {i}"; Threads.Add(thread); Threads[i].Start(); } SaveData.WriteToLog("SYSTEM", $"Создано {Threads.Count.ToString()} потоков"); new Thread(() => CheckCompletion()) { IsBackground = true }.Start(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// Метод решения ReCaptcha /// </summary> /// <param name="websiteURL">Ссылка на сайт, на котором решаем ReCaptcha</param> /// <param name="websiteKey">SiteKey</param> /// <param name="account">Аккаунт</param> /// <returns></returns> public static string GetRecaptcha(string websiteURL, string websiteKey, string account) { try { SaveData.WriteToLog(account, "Решаем ReCaptcha"); using (HttpRequest request = new HttpRequest()) { string json = $"{{\"clientKey\":\"{ClientKey}\",\"task\":{{\"type\":\"RecaptchaV2TaskProxyless\",\"websiteURL\":\"{websiteURL}\",\"websiteKey\":\"{websiteKey}\"}},\"softId\":0,\"languagePool\":\"en\"}}"; string taskID = request.Post("https://api.anti-captcha.com/createTask ", json, "application/json").ToString(); taskID = taskID.Substring("\"taskId\":", "}"); for (int i = 0; i < 50; i++) { Thread.Sleep(5000); string result = request.Post("https://api.anti-captcha.com/getTaskResult", $"{{\"clientKey\": \"{ClientKey}\",\"taskId\": {taskID}}}", "application/json").ToString(); if (result.Contains("\"errorId\":0,\"status\":\"ready\"")) { SaveData.WriteToLog(account, "ReCaptcha решена."); return(result.Substring("\"gRecaptchaResponse\":\"", "\"")); } } } } catch (Exception exception) { MessageBox.Show(exception.Message); } SaveData.WriteToLog("Captcha", "Не смогли решить ReCaptcha"); return(""); }
public static void StartWork() { try { SaveData.WriteToLog(null, "Начал свою работу"); if (OperatingMode == "Регистратор") { RegistrationAccount(); } } catch (Exception exception) { MessageBox.Show(exception.Message); } }
public static string GetResult(string tzid, string option) { for (int i = 0; i < 85; i++) { try { using (var request = new HttpRequest()) { request.UserAgent = Http.ChromeUserAgent(); request.EnableEncodingContent = true; string Response = request.Get("api.sms-reg.com/getState.php", new RequestParams() { ["tzid"] = tzid, ["apikey"] = APIKey }).ToString(); // Ожидаем выдачу номера/получение смс. if (Response.Contains("TZ_INPOOL") || Response.Contains("TZ_NUM_WAIT")) { Thread.Sleep(10000); continue; } // Нету подходящих номеров if (Response.Contains("WARNING_NO_NUMS")) { SaveData.WriteToLog("Sms-Reg", "Не нашелся подходящий номер"); return(null); } // Номер успешно выдан / Пришел код if (Response.Contains("TZ_NUM_PREPARE") || Response.Contains("TZ_NUM_ANSWER")) { return(Response.BetweenOrEmpty(option, "\"")); } if (Response.Contains("TZ_OVER_OK") || Response.Contains("TZ_OVER_EMPTY") || Response.Contains("TZ_OVER_NR") || Response.Contains("TZ_DELETED")) { return(null); } if (Response.Contains("WARNING_TOO_MANY_REQUESTS")) { SaveData.WriteToLog("Sms-Reg", "WARNING_TOO_MANY_REQUESTS"); Thread.Sleep(60000); } } } catch (Exception exception) { MessageBox.Show(exception.Message); } } return(null); }
public static (string tzid, string number) GetNumber() { string Response; try { for (int i = 0; i < 20; i++) { using (var request = new HttpRequest()) { request.UserAgent = Http.ChromeUserAgent(); request.EnableEncodingContent = true; var UrlParams = new RequestParams { ["country"] = Country, ["service"] = Service, ["apikey"] = APIKey }; lock (locker) { Response = request.Get("api.sms-reg.com/getNum.php", UrlParams).ToString(); if (Response.Contains("WARNING_WAIT15MIN")) { SaveData.WriteToLog("Sms-Reg", "Ждем 15 минут, на получение номера"); Thread.Sleep(901000); } } if (Response.Contains("response\":\"1\"")) { string tzid = Response.BetweenOrEmpty("tzid\":\"", "\""); return(tzid, GetResult(tzid, "number\":\"")); } else { Thread.Sleep(5000); } } } } catch (Exception exception) { MessageBox.Show(exception.Message); } return(null, null); }
public static void CheckCompletion() { try { while (true) { Thread.Sleep(500); if (!IsAlive()) { MessageBox.Show("Программа закончила свою работу"); SaveData.WriteToLog("SYSTEM", $"Программа закончила свою работу"); isAliveTimer = false; return; } } } catch (Exception exception) { MessageBox.Show(exception.Message); } }
public static void RegistrationAccount() { try { string Password, UserAgent, NameSurname; string proxyLog = ""; ProxyClient proxyClient; while (true) { SaveData.WriteToLog($"System", "Попытка получить номер"); (string tzid, string number)number = GetSmsReg.GetNumber(); #region Выдача аккаунтов lock (locker) { if (SaveData.UsedRegistration < CountAccountForRegistration) { (string NameSurname, string Password)DataForRegistration = GetNameSurnamePassword.Get(); if (String.IsNullOrEmpty(DataForRegistration.NameSurname) || String.IsNullOrEmpty(DataForRegistration.Password) || string.IsNullOrEmpty(number.number)) { continue; } NameSurname = DataForRegistration.NameSurname; Password = DataForRegistration.Password; SaveData.UsedRegistration++; SaveData.SaveAccount($"{number.number}:{Password}", SaveData.ProcessedRegistrationList); } else { break; } UserAgent = GetUserAgent.get(); proxyClient = GetProxy.get(); proxyLog = proxyClient == null ? "" : $";{proxyClient.ToString()}"; } #endregion #region Вызов метода регистрации, и проверка результата SaveData.WriteToLog($"{number.number}:{Password}", "Попытка зарегестрировать аккаунт"); (Status status, CookieStorage cookie)Data; for (int i = 0; i < countRequest; i++) { Data = GoRegistrationAccount(NameSurname, number, Password, UserAgent, proxyClient); switch (Data.status) { case Status.True: SaveData.GoodRegistration++; SaveData.WriteToLog($"{number.number}:{Password}", "Аккаунт успешно зарегестрирован"); SaveData.SaveAccount($"{number.number}:{Password}{proxyLog}|{UserAgent}", SaveData.GoodRegistrationList); Data.cookie.SaveToFile($"out/cookies/{number.number}.jar", true); break; case Status.False: SaveData.InvalidRegistration++; SaveData.WriteToLog($"{number.number}:{Password}", "Аккаунт не зарегестрирован"); SaveData.SaveAccount($"{number.number}:{Password}{proxyLog}|{UserAgent}", SaveData.InvalidRegistrationList); break; default: SaveData.WriteToLog($"{number.number}:{Password}", "Неизвестная ошибка, повторяем."); UserAgent = GetUserAgent.get(); proxyClient = GetProxy.get(); continue; } break; } int sleep = rand.Next(minPauseRegistration, maxPauseRegistration); SaveData.WriteToLog($"System", $"Засыпаем на {sleep/60000} минут"); Thread.Sleep(sleep); #endregion } } catch (Exception exception) { MessageBox.Show(exception.Message); } }