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()); }
private static async Task WriteUsername() { var apiVersion = InstaApi.GetApiVersionInfo(); var dic = new Dictionary <string, string> { { "app_version", apiVersion.AppVersion }, { "X-IG-Capabilities", apiVersion.Capabilities }, { "everclear_subscriptions", "{\"inapp_notification_subscribe_comment\":\"17899377895239777\",\"inapp_notification_subscribe_comment_mention_and_reply\":\"17899377895239777\",\"video_call_participant_state_delivery\":\"17977239895057311\",\"presence_subscribe\":\"17846944882223835\"}" }, { "User-Agent", FbnsUserAgent.BuildRTUserAgent(InstaApi) }, { "Accept-Language", InstaApiConstants.ACCEPT_LANGUAGE.Replace("-", "_") }, { "platform", "android" }, { "ig_mqtt_route", "django" }, //{"pubsub_msg_type_blacklist","direct, typing_type"}, { "auth_cache_enabled", "0" }, }; //Debug.WriteLine(JsonConvert.SerializeObject(dic)); await WriteMap(10, dic); }