/// <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; } }
/// <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)); } }
/// <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; } }