You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从本地DB获取OTP的双因子认证自动化脚本需求咨询

自动化登录实现脚本

技术栈说明

  • 浏览器自动化:Selenium
  • 数据库连接:以MySQL为例,使用pymysql驱动,其他数据库可替换为对应驱动包
  • 依赖安装命令:pip install selenium pymysql webdriver-manager

完整实现代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import pymysql

# 从数据库获取预存静态OTP码
def get_static_otp_from_db():
    # *以下数据库连接参数需替换为实际业务配置*
    db_conn = pymysql.connect(
        host="你的数据库地址",
        user="数据库用户名",
        password="数据库密码",
        database="存储OTP的库名",
        port=3306
    )
    cursor = db_conn.cursor()
    # *SQL查询语句需替换为实际OTP存储表结构对应的查询逻辑*
    cursor.execute("SELECT otp_code FROM user_otp WHERE user_account = '你的登录用户名' LIMIT 1")
    otp_code = cursor.fetchone()[0]
    db_conn.close()
    return str(otp_code)

def auto_login():
    # 初始化Chrome浏览器
    driver = webdriver.Chrome(ChromeDriverManager().install())
    # *替换为实际登录页地址*
    driver.get("https://你的应用登录页地址")
    wait = WebDriverWait(driver, 10)

    try:
        # 第一步:输入用户名密码并点击登录
        # *以下元素选择器需替换为实际页面对应元素的定位规则*
        username_input = wait.until(EC.presence_of_element_located((By.ID, "username_input_id")))
        password_input = driver.find_element(By.ID, "password_input_id")
        login_btn = driver.find_element(By.ID, "login_btn_id")

        # *替换为实际登录账号密码*
        username_input.send_keys("你的登录用户名")
        password_input.send_keys("你的登录密码")
        login_btn.click()

        # 第二步:获取OTP并填入校验
        otp_input = wait.until(EC.presence_of_element_located((By.ID, "otp_input_id")))
        static_otp = get_static_otp_from_db()
        otp_input.send_keys(static_otp)

        # 提交OTP校验
        otp_submit_btn = driver.find_element(By.ID, "otp_submit_btn_id")
        otp_submit_btn.click()

        # 校验是否登录成功,可根据实际页面登录成功后的特征元素判断
        wait.until(EC.presence_of_element_located((By.ID, "登录后首页的特征元素ID")))
        print("登录成功")

    except Exception as e:
        print(f"登录流程出错:{str(e)}")
    finally:
        # 按需设置是否自动关闭浏览器
        # driver.quit()
        pass

if __name__ == "__main__":
    auto_login()

注意事项

  • 页面元素的定位规则(ID、XPATH、CSS_SELECTOR等)需要根据实际应用前端页面的实际情况调整
  • 若使用的不是MySQL数据库,只需替换get_static_otp_from_db函数中的数据库连接逻辑即可
  • 可根据实际需求添加登录成功后的后续业务操作逻辑

内容的提问来源于stack exchange,提问作者praveenpaulraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:42:03