示例#1
0
        public static void Login()
        {
            LocalizationController.SetLanguage(Core.Config.language);
            Logger.Logger.Info("Logining ");

            // Get big token
            var tempuid = string.Empty;

            var baseAddress     = new Uri("https://portal.pixelfederation.com/");
            var cookieContainer = new CookieContainer();
            var loc_cookies     = Cookies.ReadCookiesFromDisk();

            //var pxcookie = loc_cookies.GetCookies(new Uri("https://portal.pixelfederation.com"));
            //if (pxcookie.Count != 0)
            //{

            //        if (pxcookie["_pf_login_server_token"].Value == Core.Config.server_token)
            //        {
            //            cookieContainer = loc_cookies;
            //        }

            //}

            using (var handler = new HttpClientHandler {
                CookieContainer = cookieContainer
            })
                using (var client = new HttpClient(handler)
                {
                    BaseAddress = baseAddress
                })
                {
                    cookieContainer.Add(baseAddress, new Cookie("_pf_login_server_token", Core.Config.server_token));
                    Logger.Logger.Info(Localization.NETWORKING_LOGIN_1);
                    client.DefaultRequestHeaders.UserAgent.ParseAdd(
                        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36");

                    try
                    {
                        var result = client.GetAsync("en/seaport/").Result;

                        result = client.GetAsync("en/seaport/").Result;
                        Logger.Logger.Info(Localization.NETWORKING_LOGIN_2);
                        var stringtext = result.Content.ReadAsStringAsync().Result;
                        var regex      = new Regex(
                            "portal.pixelfederation.com\\/(_sp\\/\\?direct_login=portal&portal_request=(.*))\" allowfullscreen>");
                        var match = regex.Match(stringtext);
                        if (match.Success)
                        {
                            var data = client.GetAsync(match.Groups[1].Value).Result.Content.ReadAsStringAsync().Result;
                            Logger.Logger.Info(Localization.NETWORKING_LOGIN_3);
                            regex = new Regex(@"session_id': '(.*)', 'test");

                            Core.Ssid = regex.Match(data).Groups[1].Value;
                            regex     = new Regex(@"pid': '(.*)', 'platform");
                            tempuid   = regex.Match(data).Groups[1].Value;
                            Logger.Logger.Info(Localization.NETWORKING_LOGIN_SUCCESS + Core.Ssid);
                            regex = new Regex(@"'definition_filelist_url1': 'https:\/\/r4a4v3g4\.ssl\.hwcdn\.net\/definitions\/filelists\/(.+)\.xml', 'definition_filelist_url2'");
                            var mtch = regex.Match(data);
                            if (mtch.Success)
                            {
                                DefenitionCache.Update(mtch.Groups[1].Value);
                            }

                            regex = new Regex(
                                @"loca_filelist_url2': 'https:\/\/static\.seaportgame\.com\/localization\/(.+?)\.xml', '");
                            mtch = regex.Match(data);
                            if (mtch.Success)
                            {
                                LocalizationCache.Update(mtch.Groups[1].Value);
                            }

                            regex = new Regex("clientPath = \"(.+)\";");
                            mtch  = regex.Match(data);
                            if (mtch.Success)
                            {
                                Client.DefaultRequestHeaders.Referrer = new Uri(mtch.Groups[1].Value);
                            }

                            Client.DefaultRequestHeaders.Host = "portal.pixelfederation.com";
                            Client.DefaultRequestHeaders.Add("Origin", "https://r4a4v3g4.ssl.hwcdn.net");
                            Client.DefaultRequestHeaders.AcceptEncoding.TryParseAdd("gzip, deflate, br");
                            Client.DefaultRequestHeaders.Accept.TryParseAdd(@"*/*");
                            Client.DefaultRequestHeaders.AcceptLanguage.TryParseAdd(
                                "en-GB,en-US;q=0.9,en;q=0.8,ru;q=0.7,uk;q=0.6");
                            Client.DefaultRequestHeaders.Add("DNT", "1");
                            Client.DefaultRequestHeaders.Add("X-Requested-With", "ShockwaveFlash/32.0.0.114");
                        }
                        else
                        {
                            Logger.Logger.Fatal(Localization.NETWORKING_LOGIN_CANT_LOGIN);
                            return;
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Logger.Fatal(Localization.NETWORKING_LOGIN_CANT_LOGIN + e);
                    }
                }

            var values = new Dictionary <string, string> {
                { "pid", tempuid }, { "session_id", Core.Ssid }
            };
            var s = SendRequest(values, "client.login");

            SendRequest(values, "client.update");
            if (s.StartsWith("<xml>"))
            {
                Core.GlobalData = Parser.ParseXmlToGlobalData(s);
                var rand = new Random();

                var loadtime = rand.Next(5000, 13000);
                if (!Core.Debug)
                {
                    Logger.Logger.Info(string.Format(Localization.NETWORKING_LOGIN_FAKE_LOAD, loadtime / 1000D));
                    Thread.Sleep(loadtime);
                    Logger.Logger.Info(
                        string.Format(Localization.NETWORKING_LOGIN_FAKE_LOAD_ELAPSED, loadtime / 1000D));
                }

                values.Add("loading_time", loadtime.ToString());
                SendRequest(values, "tracking.finishedLoading");
                Cookies.WriteCookiesToDisk(cookieContainer);
                Events.Events.LoginedEvent.Logined.Invoke();
                StatisticsWriter.Start();
            }
            else
            {
                Logger.Logger.Fatal("Server responded " + s);
                Core.StopBot();
            }
        }