Как использовать существующий токен для входа в телеграмму с помощью селена Webdriver - PullRequest
1 голос
/ 04 июня 2019

Я пытаюсь прочитать сообщения телеграммы от https://web.telegram.org с селеном.

Когда я открываю https://web.telegram.org в Firefox, я уже вошел в систему, но при открытии той же страницы из селенового веб-драйвера (Firefox) я получаю страницу входа.

Я видел, что Telegram Web не использует куки для аутентификации, а скорее сохраняет значения в локальном хранилище. Я могу получить доступ к локальному хранилищу с помощью селена, и у меня есть такие ключи, как: "dc2_auth_key", "dc2_server_salt", "dc4_auth_key", ... но я не уверен, что с ними делать, чтобы войти (и если я это сделаю тогда нужно что-то с ними делать, почему? это тот же браузер, почему он не работает так же, когда открывается без селена?)

Воспроизвести:

Откройте Firefox и войдите в систему https://web.telegram.org, затем запустите этот код:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://web.telegram.org")
# my code is here but is irrelevant since im at the login page.
driver.close()

1 Ответ

0 голосов
/ 04 июня 2019

Когда вы открываете https://web.telegram.org вручную, используя Firefox , используется Профиль Firefox по умолчанию .Когда вы входите в систему и просматриваете веб-сайт, веб-сайты хранят куки-файлы аутентификации в вашей системе.Поскольку файлы cookie сохраняются в локальном хранилище профиля Firefox по умолчанию даже при повторном открытии браузеров, вы автоматически аутентифицируетесь.

Но когда GeckoDriver инициирует новый сеанс просмотра веб-страниц для ваших тестов каждый раз, когда при запуске Firefox создается временный новый mozprofile *1019*, что видно из следующего журнала:

mozrunner::runner   INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\ATECHM~1\\AppData\\Local\\Temp\\rust_mozprofile.fDJt0BIqNu0n"

Подробное обсуждение можно найти в . Это Firefox или Geckodriver, который создает каталог «rust_mozprofile»

После завершения выполнения теста и quit() вызывается временный mozprofile удаляется в следующем процессе:

webdriver::server   DEBUG   -> DELETE /session/f84dbafc-4166-4a08-afd3-79b98bad1470 
geckodriver::marionette TRACE   -> 37:[0,3,"quit",{"flags":["eForceQuit"]}]
Marionette  TRACE   0 -> [0,3,"quit",{"flags":["eForceQuit"]}]
Marionette  DEBUG   New connections will no longer be accepted
Marionette  TRACE   0 <- [1,3,null,{"cause":"shutdown"}]
geckodriver::marionette TRACE   <- [1,3,null,{"cause":"shutdown"}]
webdriver::server   DEBUG   Deleting session
geckodriver::marionette DEBUG   Stopping browser process

Итак, когда вы открываете ту же страницу, используя Selenium , GeckoDriver и Firefox файлы cookie, которые были сохранены в локальном хранилище профиля Firefox по умолчанию , недоступны, и, следовательно, вы переадресованына страницу входа .


Для хранения и использования файлов cookie в локальном хранилище для автоматической аутентификации необходимо создать и использовать Пользовательский профиль Firefox .

Здесь вы можете найти соответствующее обсуждение webdriver.FirefoxProfile (): можно ли использовать профиль, не создав его копию?

...