Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
            }
        }