Использование python для очистки электронной почты на предмет одноразовых паролей (OTP), необходимых для входа в систему.

Эта статья будет полезна, если вы хотите получить доступ к веб-сайтам, требующим OTP после входа в систему, как на картинке выше.
Некоторые предположения / требования
- Gmail используется
- OTP можно получить по электронной почте.
- Google Chrome как выбор браузера
- Python
Начиная
Первым шагом будет доступ к странице входа. Для этого я использовал пакет Selenium для python. Если у вас еще нет селена, вы можете установить его, следуя инструкциям по адресу:
Кроме того, чтобы это работало, вам нужно будет загрузить chromedriver (проверьте свою версию Chrome и загрузите соответствующую):
На этом давайте начнем копаться в реализации. Начните с импорта webdriver из selenium, затем добавьте местоположение вашего chromedriver и URL-адрес страницы входа.
import time
from selenium import webdriver
browser = webdriver.Chrome(
"filepath of your chrome driver")
browser.get('login page url')
Обычный вход
Следующим шагом будет ввод имени пользователя и пароля для веб-сайта. Я использовал путь .find_element_by_xpath, чтобы найти форму имени пользователя и пароля. Затем с помощью .send_keys введите учетные данные для входа, прежде чем нажимать кнопку входа. Чтобы получить XPath элементов, вы можете щелкнуть правой кнопкой мыши по местоположению элемента, к которому вы хотите получить доступ, и нажать «Проверить» на Chrome. Затем щелкните правой кнопкой мыши код HTML и выберите «Копировать XPath».

username_elem = browser.find_element_by_xpath('xpath of username form')
username_elem.send_keys(username)
password_elem = browser.find_element_by_xpath('xpath of password form')
password_elem.send_keys(password)
login_elem = browser.find_element_by_xpath('xpath of login button')
login_elem.click()
После чего вас встретит вторая страница входа, для этой страницы потребуется OTP. В этом примере я предполагаю, что OTP отправлен на вашу электронную почту.
Получение OTP из электронной почты
Это сложный момент. В этой части я столкнулся с довольно большим количеством проблем во время реализации. Я сначала объясню код, прежде чем говорить о некоторых потенциальных проблемах. Кроме того, на эту часть в основном ссылались и адаптировали из:
Для работы нижеприведенного предполагается, что последнее электронное письмо содержит OTP. Большую часть кода лучше объяснить по ссылке выше. Однако основная модификация, которую вам нужно будет сделать, - это строка 45 и ниже. С содержимым электронного письма в теле переменной в виде строки. Чтобы не усложнять задачу, я использовал метод разделения строк, чтобы найти одноразовый пароль, разделив строку до и после одноразового пароля перед добавлением ее в список. Наконец возвращаем список.
Теперь заполняем одноразовый пароль на сайте…
Продолжая с начальной части входа в систему, после входа в систему мы вызовем time.sleep, чтобы дождаться отправки OTP на нашу электронную почту. С помощью функции выше мы можем просто вызвать ее, чтобы получить одноразовый пароль. Затем мы разделяем и вводим приведение OTP к отдельным строкам, чтобы мы могли вызвать их позже.
Используя цикл for, мы можем получить доступ к элементам OTP и заполнить их индивидуально, редактируя XPath и отправляя OTP индивидуально. Прежде чем, наконец, нажать кнопку отправки.
# wait for OTP
time.sleep(10)
# get OTP
otp = get_otp()
otp_split = [str(i) for i in str(otp[0])]
# fills in 4 pin OTP code
for i in range(4):
otp_elem = browser.find_element_by_xpath('//*[@id="loginForm"]/div[1]/div/div[1]/input' + str([i + 1]))
otp_elem.send_keys(otp_split[i])
otp_login_elem = browser.find_element_by_xpath('XPath of submit button')
otp_login_elem.click()
И это все!
Требуются некоторые настройки Gmail
Одна проблема, с которой вы можете столкнуться, - это доступ к вашей электронной почте. Чтобы это сработало, вам нужно изменить настройку Gmail;
- Включите доступ по протоколу IMAP (Gmail ›Настройки› Пересылка и POP / IMAP ›Нажмите« Включить IMAP »)
- Включите менее безопасный доступ к приложениям (https://support.google.com/accounts/answer/6010255)
Замечания
Вот и все, надеюсь, это поможет! Работая над личным проектом по очистке некоторых данных с веб-сайта, для которого требуется OTP, я не нашел много статей, посвященных этой теме. Я подумал, что напишу что-нибудь в помощь!
Это моя первая статья на среднем уровне… и я относительно новичок в программировании. Во многом это основано на пробах и ошибках, чтении руководств и многих статей о stackoverflow. Я знаю, что это, возможно, не лучший способ подойти к этому входу OTP, но он прост и работает для меня!