Пример #1
0
        public async Task <bool> LoginAsync(string userName, string password)
        {
            try
            {
                var userSession = new UserSessionData
                {
                    UserName = userName,
                    Password = password
                };

                var device = new AndroidDevice
                {
                    AndroidBoardName      = "HONOR",
                    DeviceBrand           = "HUAWEI",
                    HardwareManufacturer  = "HUAWEI",
                    DeviceModel           = "PRA-LA1",
                    DeviceModelIdentifier = "PRA-LA1",
                    FirmwareBrand         = "HWPRA-H",
                    HardwareModel         = "hi6250",
                    DeviceGuid            = new Guid("be897499-c663-492e-a125-f4c8d3785ebf"),
                    PhoneGuid             = new Guid("7b72321f-dd9a-425e-b3ee-d4aaf476ec52"),
                    DeviceId            = ApiRequestMessage.GenerateDeviceIdFromGuid(new Guid("be897499-c663-492e-a125-f4c8d3785ebf")),
                    Resolution          = "1080x1812",
                    Dpi                 = "480dpi",
                    FirmwareFingerprint = "HUAWEI/HONOR/PRA-LA1:7.0/hi6250/95414346:user/release-keys",
                    AndroidBootloader   = "4.23",
                    DeviceModelBoot     = "qcom",
                    FirmwareTags        = "release-keys",
                    FirmwareType        = "user"
                };

                var delay = RequestDelay.FromSeconds(1, 1);

                _instaApi = InstaApiBuilder.CreateBuilder()
                            .SetUser(userSession)
                            .UseLogger(new DebugLogger(LogLevel.Exceptions))
                            .SetRequestDelay(delay)
                            .Build();

                _instaApi.SetDevice(device);
                _instaApi.SetAcceptLanguage("tr-TR");

                const string stateFile = "state.bin";
                try
                {
                    if (File.Exists(stateFile))
                    {
                        using (var fs = File.OpenRead(stateFile))
                        {
                            _instaApi.LoadStateDataFromStream(fs);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                if (!_instaApi.IsUserAuthenticated)
                {
                    // login
                    Console.WriteLine($"Logging in as {userSession.UserName}");
                    delay.Disable();
                    var logInResult = await _instaApi.LoginAsync();

                    delay.Enable();
                    if (!logInResult.Succeeded)
                    {
                        Console.WriteLine($"Unable to login: {logInResult.Info.Message}");
                        return(false);
                    }
                }
                var state = _instaApi.GetStateDataAsStream();
                using (var fileStream = File.Create(stateFile))
                {
                    state.Seek(0, SeekOrigin.Begin);
                    state.CopyTo(fileStream);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            return(false);
        }