Example #1
0
        /// <summary>
        /// The Login
        /// </summary>
        /// <param name="login">The <see cref="string"/></param>
        /// <param name="password">The <see cref="string"/></param>
        /// <returns>The <see cref="Task{bool}"/></returns>
        public static async Task <UserDetail> Login(string login, string password)
        {
            InstaInfo.Login    = login;
            InstaInfo.Password = password;

            InstaInfo.Uuid     = GenerateData.UUID(true);
            InstaInfo.DeviceId = GenerateData.DeviceId();

            var loginDetail = new { Login = login, Password = password };

            new FileInfo(Environment.CurrentDirectory + "\\data\\").Directory.Create();
            File.WriteAllText(Environment.CurrentDirectory + "\\data\\logininfo.dat", JsonConvert.SerializeObject(loginDetail));

            Console.WriteLine($"{InstaInfo.Uuid} - {InstaInfo.DeviceId}");

            InstaInfo.CookieContainer = new CookieContainer();

            Console.WriteLine("try to login");
            if (await Request.SendRequestAsync("si/fetch_headers/?challenge_type=signup&guid=" + GenerateData.UUID(false), null, true))
            {
                Log.WriteLog("Handshake with Instagram success!");
                var postData = new Dictionary <string, string>
                {
                    { "phone_id", GenerateData.UUID(true) },
                    { "_csrftoken", InstaInfo.CsrfToken },
                    { "username", InstaInfo.Login },
                    { "guid", InstaInfo.Uuid },
                    { "device_id", InstaInfo.DeviceId },
                    { "password", InstaInfo.Password },
                    { "login_attempt_count", "0" }
                };
                var post = JsonConvert.SerializeObject(postData).ToString();

                if (await Request.SendRequestAsync("accounts/login/", GenerateData.Signature(post), true))
                {
                    InstaInfo.LoginStatus = true;
                    InstaInfo.RankToken   = InstaInfo.UserNameId + "_" + InstaInfo.Uuid;
                    Log.WriteLog($"Successed login with user {InstaInfo.Login}!");

                    #region test
                    //if (await GetZeroRatingTokenResult())
                    //{
                    //    if (await GetBootstrapUsers())
                    //    {
                    //        var a = "ASd";
                    //    }
                    //    if (await GetQPFetch())
                    //    {

                    //    }
                    //if (await SyncUsersFeaturesAsync())
                    //{
                    //    if (await Direct.GetRankedRecipients("reshare",true))
                    //    {
                    //        if (await Direct.GetRankedRecipients("raven", true))
                    //        {
                    //            if (await Direct.GetInbox())
                    //            {
                    //                if (await GetProfileNotice())
                    //                {
                    //                    if (await People.GetRecentActivityInbox())
                    //                    {
                    //                        if (await GetQPFetch())
                    //                        {

                    //                        }
                    //                    }
                    //                }
                    //            }
                    //        }
                    //    }
                    //}
                    //}
                    #endregion test



                    if (await SyncUsersFeaturesAsync())
                    {
                        Console.WriteLine("Sync Features ok!");
                        Console.WriteLine("Get RecentActivity ok!");
                        var userInfoData = new Dictionary <string, string>()
                        {
                            { "login", InstaInfo.Login },
                            { "password", InstaInfo.Password },
                            { "username_id", InstaInfo.UserNameId },
                            { "csrftoken", InstaInfo.CsrfToken },
                            { "uuid", InstaInfo.Uuid },
                            { "device_id", InstaInfo.DeviceId },
                            { "rank_token", InstaInfo.RankToken },
                            { "mid", InstaInfo.Mid },
                            { "sessionid", InstaInfo.SessionId }
                        };
                        var userInfo = JsonConvert.SerializeObject(userInfoData).ToString();

                        new FileInfo(Environment.CurrentDirectory + "\\data\\").Directory.Create();
                        File.WriteAllText(Environment.CurrentDirectory + "\\data\\" + login + "-session.dat", Hash.Encrypt(userInfo, password));

                        if (await GetUsernameInfoAsync(InstaInfo.UserNameId))
                        {
                            var userDetail = JsonConvert.DeserializeObject <UserDetail>(InstaInfo.LastResponse);
                            if (userDetail != null)
                            {
                                return(userDetail);
                            }
                        }

                        //return true;
                    }
                }
                else
                {
                    Log.WriteLog("faild to login: "******"Asd";
                }
            }
            return(null);
        }