コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }