ИнстаШарпер Токен - PullRequest
       7

ИнстаШарпер Токен

0 голосов
/ 27 февраля 2020

Я пытаюсь научиться использовать InstaSharper , но у меня проблема. Каждый раз, когда я запускаю свой код, чтобы увидеть, как работает новый код, я должен войти в систему, но если я сделаю это слишком много раз, я буду заблокирован Instagram. Я был заблокирован на двух аккаунтах уже. Поэтому мне нужно решение, чтобы не всегда входить в систему как токен или что-то в этом роде.

Мой логин:

public static async void Login()
        {
            api = InstaApiBuilder.CreateBuilder()
                                 .SetUser(user)
                                 .UseLogger(new DebugLogger(LogLevel.Exceptions))
                                 .SetRequestDelay(RequestDelay.FromSeconds(5, 10))
                                 .Build();
            var loginRequest = await api.LoginAsync();
            if (loginRequest.Succeeded)
            {
                Console.WriteLine("Login In Success!");
                Follow("artofbokeh");
            }
            else
            {
                Console.WriteLine("Login Failed");
            }
        }

1 Ответ

1 голос
/ 27 февраля 2020

Да, вы можете сохранить свое состояние в файле и загрузить его снова.

Пожалуйста, попробуйте этот фрагмент кода, он взят из официального репозитория github, который можно найти по этой ссылке: Github repo

            // create user session data and provide login details
            var userSession = new UserSessionData
            {
                UserName = "username",
                Password =  "password"
            };

            // create new InstaApi instance using Builder
            _instaApi = InstaApiBuilder.CreateBuilder()
                .SetUser(userSession)
                .UseLogger(new DebugLogger(LogLevel.Exceptions)) // use logger for requests and debug messages
                .SetRequestDelay(TimeSpan.FromSeconds(2))
                .Build();

            const string stateFile = "state.bin";
            try
            {
                if (File.Exists(stateFile))
                {
                    Console.WriteLine("Loading state from file");
                    Stream fs = File.OpenRead(stateFile);
                    fs.Seek(0, SeekOrigin.Begin);
                    _instaApi.LoadStateDataFromStream(fs);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            if (!_instaApi.IsUserAuthenticated)
            {
                // login
                Console.WriteLine($"Logging in as {userSession.UserName}");
                var logInResult = await _instaApi.LoginAsync();
                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);
            }

Редактировать функцию для получения данных о состоянии можно следующим образом:

public Stream GetStateDataAsStream()
        {
            var state = new StateData
            {
                DeviceInfo = _deviceInfo,
                IsAuthenticated = IsUserAuthenticated,
                UserSession = _user,
                Cookies = _httpRequestProcessor.HttpHandler.CookieContainer
            };
            return SerializationHelper.SerializeToStream(state);
        }

Так что да, вы сохраняете всю необходимую информацию, чтобы не входить каждый раз. Если это не работает для вас, вы делаете что-то не так. Пожалуйста, оставьте свой код, куда вы загружаете / сохраняете файл состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...