Python откройте URL-адрес в браузере, дождитесь ручного входа в систему, прочитайте URL-адрес адресной строки из браузера

#python #url #browser

Вопрос:

Я пытаюсь автоматизировать получение токена обновления API eBay с помощью Python. Что мне нужно для этого, так это:

  1. Откройте определенный URL-адрес в браузере по умолчанию
  2. Подождите, пока пользователь войдет в систему
  3. Прочитайте новый URL-адрес из адресной строки браузера

Код, который я только что получил, будет получать только HTML-код из URL-адреса, а затем фактический URL-адрес из браузера, но, очевидно, не открывает страницу в браузере, чтобы позволить пользователю войти в систему. Я только что использовал страницу входа в систему Google, так как не могу указать URL страницы, которую я использую, поскольку она содержит очень конфиденциальные данные для входа.

 from urllib import request
url = "https://accounts.google.com/ServiceLogin?hl=enamp;passive=trueamp;continue=https://www.google.co.uk/amp;ec=GAZAmgQ"
response = request.urlopen(url)
new_url = response.geturl()
print(new_url)
 

Комментарии:

1. Общий способ добиться этого-открыть локальный веб-сервер с python, отправить его URL-адрес в качестве цели перенаправления для любого входа, который вы хотите, позволить браузеру пользователю выполнить свою задачу, закончив перенаправлением на ваш веб-сервер, а затем отреагировать соответствующим образом. Конечно, это зависит от того, примет ли целевой веб-сайт такое перенаправление.

2. Читайте о потоке Oauth

Ответ №1:

Ладно, похоже, это делает то, что я хочу. Драйвер selenium для Chrome должен быть в системном пути, чтобы он работал.

 from selenium import webdriver
from time import sleep

url = "https://accounts.google.com/ServiceLogin?hl=enamp;passive=trueamp;continue=https://www.google.co.uk/amp;ec=GAZAmgQ"

driver = webdriver.Chrome()
driver.get(url)

while True:
    get_url = driver.current_url
    if "Login" not in get_url:
        break
    sleep(1)
print(get_url)
driver.close()
 

Тем не менее, Google говорит, что браузер небезопасен, когда я его тестирую, но он может работать с eBay — я попробую, когда мне понадобится, и сообщу об этом…