/// <summary> /// Load InstaApi session /// </summary> async void LoadSession() { try { var file = await LocalFolder.GetFileAsync(StateFileName); var json = await FileIO.ReadTextAsync(file); if (string.IsNullOrEmpty(json)) { return; } InstaApi = InstaApiBuilder.CreateBuilder() .SetUser(UserSessionData.Empty) .Build(); InstaApi.LoadStateDataFromString(json); if (!InstaApi.IsUserAuthenticated) { InstaApi = null; return; } UsernameText.Text = InstaApi.GetLoggedUser().UserName; PasswordText.Password = InstaApi.GetLoggedUser().Password; "Connected".ChangeAppTitle(); } catch { InstaApi = null; } }
/// <summary> /// Load InstaApi session /// </summary> async void LoadSession() { try { var file = await LocalFolder.GetFileAsync(StateFileName); var json = await FileIO.ReadTextAsync(file); if (string.IsNullOrEmpty(json)) { return; } var userSession = new UserSessionData { // no need to set username password // but we have to set something in it UserName = "******", Password = "******" }; InstaApi = InstaApiBuilder.CreateBuilder() .SetUser(userSession) .Build(); InstaApi.LoadStateDataFromString(json); if (!InstaApi.IsUserAuthenticated) { InstaApi = null; return; } UsernameText.Text = InstaApi.GetLoggedUser().UserName; PasswordText.Password = InstaApi.GetLoggedUser().Password; "Connected".ChangeAppTitle(); } catch { InstaApi = null; } }
async Task RealtimeSub() { var user = _instaApi.GetLoggedUser().LoggedInUser; var dic = new Dictionary <string, List <string> > { { "sub", new List <string> { GraphQLSubscriptions.GetAppPresenceSubscription(), GraphQLSubscriptions.GetZeroProvisionSubscription(_instaApi.GetCurrentDevice().DeviceGuid.ToString()), GraphQLSubscriptions.GetDirectStatusSubscription(), GraphQLSubscriptions.GetDirectTypingSubscription(user?.Pk.ToString()), GraphQLSubscriptions.GetAsyncAdSubscription(user?.Pk.ToString()) } } }; var json = JsonConvert.SerializeObject(dic); var bytes = Encoding.UTF8.GetBytes(json); var dataStream = new MemoryStream(512); using (var zlibStream = new ZlibStream(dataStream, CompressionMode.Compress, CompressionLevel.Level9, true)) { await zlibStream.WriteAsync(bytes, 0, bytes.Length); } var compressed = dataStream.GetWindowsRuntimeBuffer(0, (int)dataStream.Length); var publishPacket = new PublishPacket(QualityOfService.AtLeastOnce, false, false) { Payload = compressed, PacketId = (ushort)CryptographicBuffer.GenerateRandomNumber(), TopicName = "/ig_realtime_sub" }; await FbnsPacketEncoder.EncodePacket(publishPacket, _outboundWriter); }
public static string GetEncryptedPassword(this IInstaApi api, string password, long?providedTime = null) { var pubKey = api.GetLoggedUser().PublicKey; var pubKeyId = api.GetLoggedUser().PublicKeyId; byte[] randKey = new byte[32]; byte[] iv = new byte[12]; secureRandom.NextBytes(randKey, 0, randKey.Length); secureRandom.NextBytes(iv, 0, iv.Length); long time = providedTime ?? DateTime.UtcNow.ToUnixTime(); byte[] associatedData = Encoding.UTF8.GetBytes(time.ToString()); var pubKEY = Encoding.UTF8.GetString(Convert.FromBase64String(pubKey)); byte[] encryptedKey; using (var rdr = PemKeyUtils.GetRSAProviderFromPemString(pubKEY.Trim())) encryptedKey = rdr.Encrypt(randKey, false); byte[] plaintext = Encoding.UTF8.GetBytes(password); var cipher = new GcmBlockCipher(new AesEngine()); var parameters = new AeadParameters(new KeyParameter(randKey), 128, iv, associatedData); cipher.Init(true, parameters); var ciphertext = new byte[cipher.GetOutputSize(plaintext.Length)]; var len = cipher.ProcessBytes(plaintext, 0, plaintext.Length, ciphertext, 0); cipher.DoFinal(ciphertext, len); var con = new byte[plaintext.Length]; for (int i = 0; i < plaintext.Length; i++) { con[i] = ciphertext[i]; } ciphertext = con; var tag = cipher.GetMac(); byte[] buffersSize = BitConverter.GetBytes(Convert.ToInt16(encryptedKey.Length)); byte[] encKeyIdBytes = BitConverter.GetBytes(Convert.ToUInt16(pubKeyId)); if (BitConverter.IsLittleEndian) { Array.Reverse(encKeyIdBytes); } encKeyIdBytes[0] = 1; var payload = Convert.ToBase64String(encKeyIdBytes.Concat(iv).Concat(buffersSize).Concat(encryptedKey).Concat(tag).Concat(ciphertext).ToArray()); return($"#PWD_INSTAGRAM:4:{time}:{payload}"); }
private async void PanelForm_Load(object sender, EventArgs e) { instaApi = User.SessionApiBuilder(); statusLabel.Text = "Welcome, " + instaApi.GetLoggedUser().LoggedInUser.UserName + "."; var currentUser = await instaApi.UserProcessor.GetCurrentUserAsync(); }
public static async Task <bool> _loadSessionDelay() { try { var us = localSettings.Values["LastUser"] as string; if (string.IsNullOrEmpty(us)) { return(false); } Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.LocalFolder; Windows.Storage.StorageFile File = await storageFolder.GetFileAsync(us + ".txt"); Debug.WriteLine(storageFolder.Path); var json = await Windows.Storage.FileIO.ReadTextAsync(File); Debug.WriteLine(json); var userSession = new UserSessionData { // ina ro nemikhad avaz koni, alaki faghat behesh midim ke tuye code badi error nade UserName = "******", Password = "******" }; // yani inja InstaApi = InstaApiBuilder.CreateBuilder() .SetUser(userSession) //.UseLogger(new DebugLogger(LogLevel.Exceptions)) .SetRequestDelay(RequestDelay.FromSeconds(5, 15)) .Build(); InstaApi.LoadStateDataFromString(json); _user = _lastUser = InstaApi.GetLoggedUser().UserName; _pass = InstaApi.GetLoggedUser().Password; Debug.WriteLine($"{_user} logged in successfully. passesh ham ine: {_pass}"); if (InstaApi.IsUserAuthenticated) { return(true); } } catch { } return(false); }
private async Task SendPing() { try { if (_outboundWriter == null) { return; } var packet = PingReqPacket.Instance; await FbnsPacketEncoder.EncodePacket(packet, _outboundWriter); Log($"[{_instaApi?.GetLoggedUser()?.UserName}] " + "Pinging realtime server"); } catch (Exception) { Log($"[{_instaApi?.GetLoggedUser()?.UserName}] " + "Failed to ping realtime server. Shutting down."); Shutdown(); await Task.Delay(5000); Restart(); } }
private static async Task <byte[]> ToThrift() { var device = InstaApi.GetCurrentDevice(); var cookies = InstaApi.HttpRequestProcessor.HttpHandler.CookieContainer.GetCookies(InstaApi.HttpRequestProcessor.Client.BaseAddress); var sessionId = cookies["sessionid"]?.Value ?? string.Empty; await WriteString(CLIENT_ID, device.DeviceGuid.ToString().Substring(0, 20)); #region Write struct ClientInfo await WriteStructBegin(CLIENT_INFO); await WriteInt64(USER_ID, InstaApi.GetLoggedUser().LoggedInUser.Pk); await WriteString(USER_AGENT, FbnsUserAgent.BuildFbUserAgent(InstaApi)); await WriteInt64(CLIENT_CAPABILITIES, 183); await WriteInt64(ENDPOINT_CAPABILITIES, _payloadData.EndpointCapabilities); await WriteInt32(PUBLISH_FORMAT, _payloadData.PublishFormat); await WriteBool(NO_AUTOMATIC_FOREGROUND, _payloadData.NoAutomaticForeground); await WriteBool(MAKE_USER_AVAILABLE_IN_FOREGROUND, _payloadData.MakeUserAvailableInForeground); await WriteString(DEVICE_ID, device.DeviceGuid.ToString()); await WriteBool(IS_INITIALLY_FOREGROUND, _payloadData.IsInitiallyForeground); await WriteInt32(NETWORK_TYPE, _payloadData.NetworkType); await WriteInt32(NETWORK_SUBTYPE, _payloadData.NetworkSubtype); if (_payloadData.ClientMqttSessionId == 0) { var difference = DateTime.Today.DayOfWeek - DayOfWeek.Monday; var lastMonday = new DateTimeOffset(DateTime.Today.Subtract(TimeSpan.FromDays(difference > 0 ? difference : 7))); _payloadData.ClientMqttSessionId = DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastMonday.ToUnixTimeMilliseconds(); } await WriteInt64(CLIENT_MQTT_SESSION_ID, _payloadData.ClientMqttSessionId); await WriteListInt32(SUBSCRIBE_TOPICS, new int[] { 88, 135, 149, 150, 133, 146 }); await WriteString(CLIENT_TYPE, "cookie_auth"); await WriteInt64(APP_ID, 567067343352427); await WriteString(DEVICE_SECRET, ""); await WriteByte(CLIENT_STACK, _payloadData.ClientStack); await WriteFieldStop(); await WriteStructEnd(); #endregion await WriteString(PASSWORD, $"sessionid={sessionId}"); await WriteUsername(); await WriteFieldStop(); return(_memoryBufferTransport.GetBuffer()); }
public static void AddInstaApiX(this List <IInstaApi> apis, IInstaApi api) { if (api != null) { if (apis.Count == 0) { apis.Add(api); } else { try { if (!apis.Any(x => x.GetLoggedUser().UserName.ToLower() != api.GetLoggedUser().UserName.ToLower())) { apis.Add(api); } } catch { apis.Add(api); } } } }
public static async void RemoveInstaApi(this List <IInstaApi> apis, IInstaApi api) { try { if (api != null && api.IsUserAuthenticated) { var files = await SessionHelper.LocalFolder.GetFilesAsync(); if (files?.Count > 0) { var username = api.GetLoggedUser().LoggedInUser.UserName.ToLower(); var selectedFile = files.FirstOrDefault(x => x.Path.ToLower().EndsWith(username + SessionFileType)); if (selectedFile != null) { await selectedFile.DeleteAsync(StorageDeleteOption.PermanentDelete); } } apis.Remove(api); } } catch { } }
public static void AddInstaApi(IInstaApi api) { if (api != null) { if (InstaApiList.Count == 0) { InstaApiList.Add(api); } else { try { if (InstaApiList.Any(x => x.GetLoggedUser().UserName.ToLower() != api.GetLoggedUser().UserName.ToLower())) { InstaApiList.Add(api); } } catch { InstaApiList.Add(api); } } } }
private async void loginButton_Click(object sender, EventArgs e) { string username = botPhoneTextBox.Text; string password = botPasswordTextBox.Text; var userSession = new UserSessionData { UserName = username, Password = password }; instaApi = InstaApiBuilder.CreateBuilder() .UseLogger(new DebugLogger(LogLevel.All)) .SetRequestDelay(RequestDelay.FromSeconds(0, 3)) .SetSessionHandler(new FileSessionHandler() { FilePath = "sessions\\session_" + username + ".bin" }) .SetUser(userSession) .Build(); // Load session LoadSession(); if (!instaApi.GetLoggedUser().Password.Equals(password) && instaApi.IsUserAuthenticated) { MessageBox.Show("Wrong password", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (instaApi.IsUserAuthenticated) { this.Visible = false; MainForm mainForm = new MainForm(ref instaApi); mainForm.Show(); //this.Close(); } else { var logInResult = await instaApi.LoginAsync(); if (logInResult.Succeeded) { SaveSession(); this.Visible = false; MainForm mainForm = new MainForm(ref instaApi); mainForm.Show(); //this.Close(); } else { if (logInResult.Value == InstaLoginResult.ChallengeRequired) { var challenge = await instaApi.GetChallengeRequireVerifyMethodAsync(); if (challenge.Succeeded) { if (challenge.Value.SubmitPhoneRequired) { submitPhoneNumberPanel.Enabled = true; submitPhoneNumberPanel.Visible = true; } else { if (challenge.Value.StepData != null) { if (!string.IsNullOrEmpty(challenge.Value.StepData.PhoneNumber)) { phoneChallengeRadio.Checked = false; phoneChallengeRadio.Visible = true; phoneChallengeRadio.Text = challenge.Value.StepData.PhoneNumber; } if (!string.IsNullOrEmpty(challenge.Value.StepData.Email)) { emailChallengeRadio.Checked = false; emailChallengeRadio.Visible = true; emailChallengeRadio.Text = challenge.Value.StepData.Email; } challengeRequiredPanel.Enabled = true; challengeRequiredPanel.Visible = true; } } } else { MessageBox.Show(challenge.Info.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } // Two factor is required else if (logInResult.Value == InstaLoginResult.TwoFactorRequired) { // Open a panel so user can send two factor code twoFAPanel.Visible = true; twoFAPanel.Enabled = true; loginPanel.Enabled = false; } else { MessageBox.Show(logInResult.Value.ToString(), "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
public async Task TransferPushSocket() { //return; if (!_instaApi.IsUserAuthenticated || _runningTokenSource.IsCancellationRequested) { return; } if (DontTransferSocket) { return; } Log($"[{_instaApi.GetLoggedUser().UserName}] " + "Transferring sockets"); await SendPing().ConfigureAwait(false); await Task.Delay(TimeSpan.FromSeconds(3.5)); // grace period Shutdown(); await Socket.CancelIOAsync(); Socket.TransferOwnership( SOCKET_ID , null, TimeSpan.FromSeconds(KEEP_ALIVE - 60) ); //Socket.Dispose(); }
public long GetPk() { return(_api.GetLoggedUser().LoggedInUser.Pk); }
public HttpRequestMessage GetDefaultRequest(HttpMethod method, Uri uri, AndroidDevice deviceInfo) { var currentCulture = GetCurrentCulture(); #if !NET452 System.Globalization.CultureInfo.CurrentCulture = EnglishCulture; #endif var userAgent = deviceInfo.GenerateUserAgent(_apiVersion); var request = new HttpRequestMessage(method, uri); var cookies = _httpRequestProcessor.HttpHandler.CookieContainer.GetCookies(_httpRequestProcessor.Client .BaseAddress); var mid = cookies[InstaApiConstants.COOKIES_MID]?.Value ?? string.Empty; var dsUserId = cookies[InstaApiConstants.COOKIES_DS_USER_ID]?.Value ?? string.Empty; var shbid = cookies[InstaApiConstants.COOKIES_SHBID]?.Value ?? string.Empty; var shbts = cookies[InstaApiConstants.COOKIES_SHBTS]?.Value ?? string.Empty; var rur = cookies[InstaApiConstants.COOKIES_RUR]?.Value ?? string.Empty; var igDirectRegionHint = cookies[InstaApiConstants.COOKIES_IG_DIRECT_REGION_HINT]?.Value ?? string.Empty; request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_APP_LOCALE.ToLower() : InstaApiConstants.HEADER_X_IG_APP_LOCALE, InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_")); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_DEVICE_LOCALE.ToLower() : InstaApiConstants.HEADER_X_IG_DEVICE_LOCALE, InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_")); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_MAPPED_LOCALE.ToLower() : InstaApiConstants.HEADER_X_IG_MAPPED_LOCALE, InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_")); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_PIGEON_SESSION_ID.ToLower() : InstaApiConstants.HEADER_PIGEON_SESSION_ID, deviceInfo.PigeonSessionId.ToString()); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_PIGEON_RAWCLINETTIME.ToLower() : InstaApiConstants.HEADER_PIGEON_RAWCLINETTIME, $"{DateTime.UtcNow.ToUnixTime()}.0{Rnd.Next(10, 99)}"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_CONNECTION_SPEED.ToLower() : InstaApiConstants.HEADER_X_IG_CONNECTION_SPEED, "-1kbps"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BANDWIDTH_SPEED_KBPS.ToLower() : InstaApiConstants.HEADER_X_IG_BANDWIDTH_SPEED_KBPS, deviceInfo.IGBandwidthSpeedKbps); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALBYTES_B.ToLower() : InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALBYTES_B, deviceInfo.IGBandwidthTotalBytesB); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALTIME_MS.ToLower() : InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALTIME_MS, deviceInfo.IGBandwidthTotalTimeMS); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_APP_STARTUP_COUNTRY.ToLower() : InstaApiConstants.HEADER_IG_APP_STARTUP_COUNTRY, InstaApiConstants.HEADER_IG_APP_STARTUP_COUNTRY_VALUE); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BLOKS_VERSION_ID.ToLower() : InstaApiConstants.HEADER_X_IG_BLOKS_VERSION_ID, _apiVersion.BloksVersionId); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BLOKS_PANORAMA_ENABLED.ToLower() : InstaApiConstants.HEADER_X_IG_BLOKS_PANORAMA_ENABLED, "true"); var wwwClaim = _instaApi.GetLoggedUser()?.WwwClaim; if (!string.IsNullOrEmpty(wwwClaim)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_WWW_CLAIM.ToLower() : InstaApiConstants.HEADER_X_WWW_CLAIM, wwwClaim); } else { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_WWW_CLAIM.ToLower() : InstaApiConstants.HEADER_X_WWW_CLAIM, InstaApiConstants.HEADER_X_WWW_CLAIM_DEFAULT); } var authorization = _instaApi.GetLoggedUser()?.Authorization; if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_AUTHORIZATION.ToLower() : InstaApiConstants.HEADER_AUTHORIZATION, authorization); } request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BLOKS_IS_LAYOUT_RTL.ToLower() : InstaApiConstants.HEADER_X_IG_BLOKS_IS_LAYOUT_RTL, "false"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_BLOKS_ENABLE_RENDERCODE.ToLower() : InstaApiConstants.HEADER_X_IG_BLOKS_ENABLE_RENDERCODE, "false"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_DEVICE_ID.ToLower() : InstaApiConstants.HEADER_X_IG_DEVICE_ID, deviceInfo.DeviceGuid.ToString()); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_ANDROID_ID.ToLower() : InstaApiConstants.HEADER_X_IG_ANDROID_ID, deviceInfo.DeviceId); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_CONNECTION_TYPE.ToLower() : InstaApiConstants.HEADER_IG_CONNECTION_TYPE, InstaApiConstants.IG_CONNECTION_TYPE); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_CAPABILITIES.ToLower() : InstaApiConstants.HEADER_IG_CAPABILITIES, _apiVersion.Capabilities); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_APP_ID.ToLower() : InstaApiConstants.HEADER_IG_APP_ID, InstaApiConstants.IG_APP_ID); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_IG_TIGON_RETRY.ToLower() : InstaApiConstants.HEADER_X_IG_TIGON_RETRY, "False"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_USER_AGENT.ToLower() : InstaApiConstants.HEADER_USER_AGENT, userAgent); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_ACCEPT_LANGUAGE.ToLower() : InstaApiConstants.HEADER_ACCEPT_LANGUAGE, InstaApiConstants.ACCEPT_LANGUAGE); if (!string.IsNullOrEmpty(mid)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_MID.ToLower() : InstaApiConstants.HEADER_X_MID, mid); } if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization) && !string.IsNullOrEmpty(igDirectRegionHint)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_U_DIRECT_REGION_HINT.ToLower() : InstaApiConstants.HEADER_IG_U_DIRECT_REGION_HINT, igDirectRegionHint); } if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization) && !string.IsNullOrEmpty(shbid)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_U_SHBID.ToLower() : InstaApiConstants.HEADER_IG_U_SHBID, shbid); } if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization) && !string.IsNullOrEmpty(shbts)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_U_SHBTS.ToLower() : InstaApiConstants.HEADER_IG_U_SHBTS, shbts); } if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_U_DS_USER_ID.ToLower() : InstaApiConstants.HEADER_IG_U_DS_USER_ID, dsUserId); } if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization) && !string.IsNullOrEmpty(rur)) { request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_IG_U_RUR.ToLower() : InstaApiConstants.HEADER_IG_U_RUR, rur); } request.Headers.TryAddWithoutValidation(InstaApiConstants.HEADER_ACCEPT_ENCODING, InstaApiConstants.ACCEPT_ENCODING2); request.Headers.Add(InstaApiConstants.HOST, InstaApiConstants.HOST_URI); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_FB_HTTP_ENGINE.ToLower() : InstaApiConstants.HEADER_X_FB_HTTP_ENGINE, "Liger"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_FB_HTTP_IP.ToLower() : InstaApiConstants.HEADER_X_FB_HTTP_IP, "True"); request.Headers.Add(IsNewerApis ? InstaApiConstants.HEADER_X_FB_SERVER_CLUSTER.ToLower() : InstaApiConstants.HEADER_X_FB_SERVER_CLUSTER, "True"); #if !NET452 System.Globalization.CultureInfo.CurrentCulture = currentCulture; #endif return(request); }
public HttpRequestMessage GetDefaultRequest(HttpMethod method, Uri uri, AndroidDevice deviceInfo) { var userAgent = deviceInfo.GenerateUserAgent(_apiVersion); var request = new HttpRequestMessage(method, uri); var cookies = _httpRequestProcessor.HttpHandler.CookieContainer.GetCookies(_httpRequestProcessor.Client .BaseAddress); var mid = cookies[InstaApiConstants.COOKIES_MID]?.Value ?? string.Empty; var dsUserId = cookies[InstaApiConstants.COOKIES_DS_USER_ID]?.Value ?? string.Empty; var sessionId = cookies[InstaApiConstants.COOKIES_SESSION_ID]?.Value ?? string.Empty; request.Headers.Add(InstaApiConstants.HEADER_X_IG_APP_LOCALE, InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_")); request.Headers.Add(InstaApiConstants.HEADER_X_IG_DEVICE_LOCALE, InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_")); request.Headers.Add(InstaApiConstants.HEADER_PIGEON_SESSION_ID, deviceInfo.PigeonSessionId.ToString()); request.Headers.Add(InstaApiConstants.HEADER_PIGEON_RAWCLINETTIME, $"{DateTime.UtcNow.ToUnixTime()}.0{Rnd.Next(10, 99)}"); request.Headers.Add(InstaApiConstants.HEADER_X_IG_CONNECTION_SPEED, "-1kbps"); request.Headers.Add(InstaApiConstants.HEADER_X_IG_BANDWIDTH_SPEED_KBPS, deviceInfo.IGBandwidthSpeedKbps); request.Headers.Add(InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALBYTES_B, deviceInfo.IGBandwidthTotalBytesB); request.Headers.Add(InstaApiConstants.HEADER_X_IG_BANDWIDTH_TOTALTIME_MS, deviceInfo.IGBandwidthTotalTimeMS); request.Headers.Add(InstaApiConstants.HEADER_IG_APP_STARTUP_COUNTRY, InstaApiConstants.HEADER_IG_APP_STARTUP_COUNTRY_VALUE); ////request.Headers.Add(InstaApiConstants.HEADER_X_IG_EXTENDED_CDN_THUMBNAIL_CACHE_BUSTING_VALUE, "1000"); //if (!string.IsNullOrEmpty(_apiVersion.BloksVersionId)) // request.Headers.Add(InstaApiConstants.HEADER_X_IG_BLOKS_VERSION_ID, _apiVersion.BloksVersionId); //else // request.Headers.Add(InstaApiConstants.HEADER_X_IG_BLOKS_VERSION_ID, InstaApiConstants.CURRENT_BLOKS_VERSION_ID); var wwwClaim = _instaApi.GetLoggedUser()?.WwwClaim; if (string.IsNullOrEmpty(wwwClaim)) { request.Headers.Add(InstaApiConstants.HEADER_X_WWW_CLAIM, InstaApiConstants.HEADER_X_WWW_CLAIM_DEFAULT); } else { request.Headers.Add(InstaApiConstants.HEADER_X_WWW_CLAIM, wwwClaim); } var authorization = _instaApi.GetLoggedUser()?.Authorization; if (!string.IsNullOrEmpty(dsUserId) && !string.IsNullOrEmpty(authorization)) { request.Headers.Add(InstaApiConstants.HEADER_AUTHORIZATION, authorization); } request.Headers.Add(InstaApiConstants.HEADER_X_IG_BLOKS_IS_LAYOUT_RTL, "false"); request.Headers.Add(InstaApiConstants.HEADER_X_IG_BLOKS_ENABLE_RENDERCODE, "false"); request.Headers.Add(InstaApiConstants.HEADER_X_IG_DEVICE_ID, deviceInfo.DeviceGuid.ToString()); request.Headers.Add(InstaApiConstants.HEADER_X_IG_ANDROID_ID, deviceInfo.DeviceId); request.Headers.Add(InstaApiConstants.HEADER_IG_CONNECTION_TYPE, InstaApiConstants.IG_CONNECTION_TYPE); request.Headers.Add(InstaApiConstants.HEADER_IG_CAPABILITIES, _apiVersion.Capabilities); request.Headers.Add(InstaApiConstants.HEADER_IG_APP_ID, InstaApiConstants.IG_APP_ID); request.Headers.Add(InstaApiConstants.HEADER_USER_AGENT, userAgent); request.Headers.Add(InstaApiConstants.HEADER_ACCEPT_LANGUAGE, InstaApiConstants.ACCEPT_LANGUAGE); if (!string.IsNullOrEmpty(mid)) { request.Headers.Add(InstaApiConstants.HEADER_X_MID, mid); } request.Headers.TryAddWithoutValidation(InstaApiConstants.HEADER_ACCEPT_ENCODING, InstaApiConstants.ACCEPT_ENCODING2); request.Headers.Add(InstaApiConstants.HOST, InstaApiConstants.HOST_URI); request.Headers.Add(InstaApiConstants.HEADER_X_FB_HTTP_ENGINE, "Liger"); return(request); }