示例#1
0
        const string INSTAGRAM_APPLICATION_NAME = "Instagram"; // for Realtime features
#pragma warning restore IDE0051                                // Remove unused private members

        // todo: implement Realtime status like "message seen"
        public static string BuildFbUserAgent(IInstaApi insta, string appName = FBNS_APPLICATION_NAME, string userLocale = "en_US")
        {
            var device = insta.GetCurrentDevice();
            var dpi    = int.Parse(device.Dpi.Replace("dpi", ""));
            var res    = device.Resolution.Split('x');
            var width  = res[0];
            var height = res[1];
            var fields = new Dictionary <string, string>
            {
                { "FBAN", appName },
                { "FBAV", insta.GetApiVersionInfo().AppVersion },
                { "FBBV", insta.GetApiVersionInfo().AppApiVersionCode },
                { "FBDM",
                  $"{{density={Math.Round(dpi/ 160f, 1):F1},width={width},height={height}}}" },
                { "FBLC", userLocale },
                { "FBCR", "" },   // We don't have cellular
                { "FBMF", device.HardwareManufacturer },
                { "FBBD", device.HardwareManufacturer },
                { "FBPN", InstaApiConstants.INSTAGRAM_PACKAGE_NAME },
                { "FBDV", device.HardwareModel },
                { "FBSV", device.AndroidVer.VersionNumber },
                { "FBLR", "0" },  // android.hardware.ram.low
                { "FBBK", "1" },  // Const (at least in 10.12.0)
                { "FBCA", AndroidDevice.CPU_ABI }
            };
            var mergeList = new List <string>();

            foreach (var field in fields)
            {
                mergeList.Add($"{field.Key}/{field.Value}");
            }

            var userAgent = "";

            foreach (var field in mergeList)
            {
                userAgent += field + ';';
            }

            return('[' + userAgent + ']');
        }
示例#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);
        }
        HttpRequestMessage GetRequest(ulong position)
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, _requestUri);

            System.Globalization.CultureInfo currentCulture = GetCurrentCulture();
            System.Globalization.CultureInfo.CurrentCulture = EnglishCulture;

            request.Headers.Add(InstaApiConstants.HEADER_USER_AGENT, InstagramApiSharp.ExtensionHelper.GenerateUserAgent(_instaApi.GetCurrentDevice(), _instaApi.GetApiVersionInfo(), _instaApi));

            request.Headers.Add(InstaApiConstants.HEADER_ACCEPT_LANGUAGE, _instaApi.AcceptLanguage);

            request.Headers.Add(InstaApiConstants.HEADER_X_FB_HTTP_ENGINE, "Liger");

            request.Headers.Add(InstaApiConstants.HEADER_X_FB_HTTP_IP, "True");

            request.Headers.Add(InstaApiConstants.HEADER_X_FB_SERVER_CLUSTER, "True");

            request.Headers.Range = new System.Net.Http.Headers.RangeHeaderValue((long)position, null);

            if (!string.IsNullOrEmpty(_etagHeader))
            {
                request.Headers.Add("If-Match", _etagHeader);
            }

            if (!string.IsNullOrEmpty(_lastModifiedHeader))
            {
                request.Headers.Add("If-Unmodified-Since", _lastModifiedHeader);
            }

            System.Globalization.CultureInfo.CurrentCulture = currentCulture;
            return(request);
        }