Beispiel #1
0
        /// <summary>
        /// Login to store more cookies
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        public LoginResult LogIn()
        {
            try
            {
                // Get bootstrap cookie
                var bootstrapRequest = HttpRequestBuilder.Get("https://www.instagram.com/accounts/login/", mCoockieC);
                bootstrapRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
                bootstrapRequest.Headers["Upgrade-Insecure-Requests"] = "1";
                using (var bootstrapResponse = bootstrapRequest.GetResponse() as HttpWebResponse)
                {
                    mCoockieC.Add(bootstrapResponse.Cookies);
                }
            }
            catch (Exception bex)
            {
                Debug.WriteLine("Bootstrap progress meet exception " + bex.Message);
                throw bex;
            }

            try
            {
                var data    = $"username={Username}&password={Password}";
                var content = Encoding.ASCII.GetBytes(data);

                var request = HttpRequestBuilder.Post("https://www.instagram.com/accounts/login/ajax/", mCoockieC);
                // Missing referer get 403 - forbiden status code
                request.Referer                     = "https://www.instagram.com/accounts/login/";
                request.ContentType                 = "application/x-www-form-urlencoded";
                request.ContentLength               = content.Length;
                request.KeepAlive                   = true;
                request.Headers["Origin"]           = "https://www.instagram.com";
                request.Headers["X-CSRFToken"]      = mCoockieC.GetCookies(new Uri("https://www.instagram.com"))["csrftoken"].Value;
                request.Headers["X-Instagram-AJAX"] = "1";
                request.Headers["X-Requested-With"] = "XMLHttpRequest";

                // Send login data
                using (var requestStream = request.GetRequestStream())
                {
                    requestStream.Write(content, 0, content.Length);
                    using (var response = request.GetResponse() as HttpWebResponse)
                        using (var responsStream = response.GetResponseStream())
                            using (var streamReader = new StreamReader(responsStream))
                            {
                                var responseData = streamReader.ReadToEnd();

                                return(JsonConvert.DeserializeObject <LoginResult>(responseData));
                            }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Login progress occur exception " + ex.Message);
                throw ex;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Retrieve user public info
        /// This method doesn't require logged in
        /// </summary>
        public static PublicInfoResult GetPublicInfo(string username)
        {
            var request = HttpRequestBuilder.Get($"https://www.instagram.com/{username}/?__a=1");

            request.Referer = $"https://www.instagram.com/{username}/";
            request.Headers["X-Requested-With"] = "XMLHttpRequest";
            using (var response = request.GetResponse() as HttpWebResponse)
                using (var responseStream = response.GetResponseStream())
                    using (var gzipStream = new GZipStream(responseStream, CompressionMode.Decompress))
                        using (var streamReader = new StreamReader(gzipStream))
                        {
                            var data = streamReader.ReadToEnd();
                            return(JsonConvert.DeserializeObject <PublicInfoResult>(data));
                        }
        }
Beispiel #3
0
        /// <summary>
        /// Get user profile => need logged in
        /// </summary>
        /// <returns></returns>
        private ProfileResult GetProfile()
        {
            Debug.WriteLine("Get profile");
            var request = HttpRequestBuilder.Get("https://www.instagram.com/accounts/edit/?__a=1", mCoockieC);

            request.Referer = $"https://www.instagram.com/{Username}/";
            request.Headers["X-Requested-With"] = "XMLHttpRequest";
            request.AllowAutoRedirect           = false;
            using (var response = request.GetResponse() as HttpWebResponse)
            {
                mCoockieC.Add(response.Cookies);
                using (var responseStream = response.GetResponseStream())
                    using (var gzipStream = new GZipStream(responseStream, CompressionMode.Decompress))
                        using (var streamReader = new StreamReader(gzipStream))
                        {
                            var data = streamReader.ReadToEnd();
                            return(JsonConvert.DeserializeObject <ProfileResult>(data));
                        }
            }
        }
 /// <summary>
 /// Retrieve user public info
 /// This method doesn't require logged in
 /// </summary>
 public PublicInfoResult.RootObject GetPublicInfo(string username)
 {
     try
     {
         var request = HttpRequestBuilder.Get($"https://www.instagram.com/{username}/?__a=1", mCoockieC);
         request.Referer = $"https://www.instagram.com/{username}/";
         request.Headers["X-Requested-With"] = "XMLHttpRequest";
         request.Timeout = 10000; // 10 seconds
         using (var response = request.GetResponse() as HttpWebResponse)
             using (var responseStream = response.GetResponseStream())
                 using (var gzipStream = new GZipStream(responseStream, CompressionMode.Decompress))
                     using (var streamReader = new StreamReader(gzipStream))
                     {
                         var data = streamReader.ReadToEnd();
                         return(JsonConvert.DeserializeObject <PublicInfoResult.RootObject>(data));
                     }
     }
     catch (Exception ex)
     {
         throw;
     }
 }