public int GetToken() { int num; int result; if (CheckToken() == 0) { num = 0; } else { CookieContainer cc = new CookieContainer(); string text = Network.GET("https://vk.com/", cc); text = StrWrk.GetBetween(text, "action=\"", "\""); string url = text; text = Network.POST(url, "email=" + login + "&pass="******"_logout")) { if (!text.Contains("captcha_img")) { result = -1; return(result); } Log.Push("Капча при получении токена " + login + ", переключитесь на ручной ввод капчи"); string text2 = StrWrk.qSubstr(text, "captcha.php", false); text2 = StrWrk.GetBetween(text2, "sid=", "\""); string arg = VkCaptchaWorks.SolveManual("https://m.vk.com/captcha.php?s=0&sid=" + text2, text2); text = Network.POST(url, string.Concat(new string[] { "email=", login, "&pass="******"&captcha_sid={0}&captcha_key={1}", text2, arg) }), cc); if (!text.Contains("_logout")) { result = -1; return(result); } } string text3; text = Network.GET("https://oauth.vk.com/authorize?client_id=2685278&scope=1073737727&redirect_uri=https://api.vk.com/blank.html&display=page&response_type=token&revoke=1')", out text3, cc); //Вставить ссылку авторизации if (text3 == null) { text = StrWrk.GetBetween(text, "form method=\"post\" action=\"", "\""); } else { text = text3; } Network.GET(text, out text3, cc); if (!text3.Contains("access_token=")) { Log.Push($"[{login}]: Ошибка авторизации, включена двуфакторная авторизация?"); num = -1; } else { token = StrWrk.GetBetween(text3, "access_token=", "&"); token_status = true; num = 0; } } result = num; return(result); }
public static string APIRequest(string method, string param, string token, string captcha_data = "") { if (captcha_data == "") { param = Uri.EscapeDataString(param); param = param.Replace("%3D", "=").Replace("%26", "&"); } string text; int randomId; while (true) { Random rnd = new Random(); randomId = rnd.Next(100000, 1000000000); text = Network.GET(string.Concat(new string[] { "https://api.vk.com/method/", method, "?", param, "&access_token=", token, captcha_data, "&v=5.92", "&random_id=", randomId.ToString() }), null); if (!text.Contains("\"error_code\":6")) { break; } Thread.Sleep(333); } if (text.Contains("\"error_code\":14")) { string between = StrWrk.GetBetween(text, "\"captcha_sid\":\"", "\""); string url = StrWrk.GetBetween(text, "\"captcha_img\":\"", "\"").Replace("\\", ""); string str = ""; if (VkCaptchaWorks.Enabled) { Log.Push("[captcha]: обработка капчи"); try { str = VkCaptchaWorks.Solve(url, between); } catch (RuCaptchaException ex) { Log.Push("[Ошибка обработки captcha]: " + ex.Message); } return(APIRequest(method, param, token, "&captcha_sid=" + between + "&captcha_key=" + str)); } Log.Push("[captcha]: изображение поставлено в очередь на ручной ввод"); str = VkCaptchaWorks.SolveManual(url, between); return(APIRequest(method, param, token, "&captcha_sid=" + between + "&captcha_key=" + str)); } else { if (text.Contains("\"error_code\"")) { throw new Exception(StrWrk.GetBetween(text, "\"error_msg\":\"", "\"")); } return(text); } }