Содержание.

Запуск браузера в режиме headless

Используйте параметр headless_browser для запуска бота с использованием интерфейса командной строки. Этот способ отлично работает при запуске сценариев на локальном компьютере или для развертывания на сервере. Нет графического интерфейса GUI и соответственно меньше нагрузка на процессор. Пример.

Предупреждение: некоторые пользователи не рекомендуют использовать эту функцию, поскольку Instagram может распознать работу браузера в headless режиме !

session = InstaPy(username='test', password='test', headless_browser=True) 

(Альтернативный вариант) Если используемый вами веб-драйвер не поддерживает headless режим (или работа в headless режиме становится очень заметна), вы можете использовать параметр nogui, который отображает окно вне поля зрения экрана. Имейте в виду, что этому параметру тем не менее не хватает поддержки и простоты использования, он поддерживается только операционными системами на базе Linux (или теми, у которых есть программное обеспечение для отображения Xvfb, Xephyr и Xvnc).

session = InstaPy(username='test', password='test', nogui=True)

Обход системы обнаружения подозрительных попыток входа

InstaPy автоматически определяет, активен ли запрос кода безопасности Security Code Challenge, и если да, то попросит ввести его через терминал.

Код безопасности из Instagram отправляется на вашу электронную почту или по SMS , электронная почта является вариантом выбранным по умолчанию, но вы также можете выбрать вариант с SMS, используя следующие значения параметров: bypass_security_challenge_using='sms' или bypass_security_challenge_using='email'.

InstaPy(username=insta_username, password=insta_password, bypass_security_challenge_using='sms')

Двухфакторная аутентификация

InstaPy автоматически определяет, защищена ли учетная запись с помощью двухфакторной аутентификации. Если да, то пользователю InstaPy необходимо передать в конструктор, текущего сеанса работы коды безопасности. Для корректной работы требуется ввести хотя бы один код.

Коды безопасности можно найти в Instagram по следующему пути: Settings -> Security ->Two-Factor-Authentication->Backup Codes.

InstaPy(username=insta_username, password=insta_password, security_codes=(["01234567","76543210","01237654"])

Используем прокси

Вы можете использовать InstaPy через прокси, указав адрес сервера, порт и/или учетные данные для аутентификации на прокси сервере. Этот способ работает как с опцией headless_browser, так и без нее.

Пример простой настройки прокси:

session = InstaPy(username=insta_username, password=insta_password, proxy_address='8.8.8.8', proxy_port=8080)

Настройка прокси с примером аутентификации:

session = InstaPy(username=insta_username, password=insta_password, proxy_username='', proxy_password='', proxy_address='8.8.8.8', proxy_port=4444)

Проверяем состояние интернет-соединения

InstaPy может выполнить несколько типов проверок соединения, включая состояние вашего соединения, а также доступность серверов Instagram. Эти проверки иногда не проходят, потому что Instapy использует сторонние сервисы для их выполнения. Для этого вы можете переопределить настройки проверок с помощью опции want_check_browser.

Значение want_check_browser по умолчанию принято False, но вы можете установить его в True при запуске текущего сеанса работы. Рекомендуем сделать это, если вы хотите осуществлять дополнительные проверки подключения к сети и серверам Instagram.

Например:

session = InstaPy(username=insta_username, password=insta_password, want_check_browser=True)

Запуск сеансов в отдельных потоках

Если вы запускаете InstaPy в отдельных потоках и получите сгенерированное исключение вида ValueError: signal only works in main thread, то вам необходимо корректно завершить сеанс работы. Вы можете сделать это двумя способами.

Завершить сеанс в контексте smart_run:

session = InstaPy()
with smart_run(session, threaded=True):
    """ Активный поток """
    # некоторые действия ...

Завершить сеанс вызвав метод end:

session = InstaPy()
session.login()
# некоторые действия ...
session.end(threaded_session=True)

Выбираем версию браузера

Если, например, в вашей системе установлено несколько версий Firefox или если вы используете его portable версию, вы можете указать InstaPy использовать определенную версию браузера с помощью опции browser_executable_path при инициализации экземпляра класса.

Указав путь к исполняемому файлу Firefox, вы можете получить следующее сообщение об ошибке: selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities. Это свидетельствует о том, что текущая версия браузера не обеспечивает наличия необходимого набора возможностей браузера для дальнейшей работы. Обычно это случается если вы используете старую версию браузера и для дальнейшей работы рекомендуется использовать версию новее.

Пример с операционной системой Windows (с соответствующими путями также будет работать в Linux и macOS).

session = InstaPy(username=insta_username, password=insta_password, browser_executable_path=r"D:\Program Files\Mozilla Firefox\firefox.exe")

Содержание.

1 комментарий

  • Подскажите почему с прокси InstaPy открывает браузер появляется окно ввода логина и пароля от прокси и сразу браузер закрывается. Для аутентификации так же указал логин с паролем

    В консоле показывает много информации но не одна ошибка не указывает на мой файл. Все ссылаются на selenium и instapy

    вот эти строки показываются самом внизу:
    selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None
    Message: Dismissed user prompt dialog: Прокси moz-proxy://212.81.34.172:30010 запрашивает имя пользователя и пароль. Сайт сообщает: «proxy»
    Stacktrace:
    WebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:181:5
    UnexpectedAlertOpenError@chrome://remote/content/shared/webdriver/Errors.jsm:466:5
    GeckoDriver.prototype._handleUserPrompts@chrome://remote/content/marionette/driver.js:2568:13

Оставить комментарий