Files
fws_code/run_migu_cli.py

94 lines
3.3 KiB
Python
Raw Permalink Normal View History

2026-02-27 04:01:33 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
咪咕 miguSM 命令行工具TgeBrowser + DrissionPage
1. 传入手机号 新建浏览器输入手机号点击发送验证码
2. 传入验证码 填写并提交
用法:
set TGEBROWSER_API_KEY=你的API密钥
python run_migu_cli.py --phone 13800138000
python run_migu_cli.py --session-id <上一步返回的session_id> --code 123456
"""
from __future__ import annotations
import argparse
import os
import sys
# 确保 TgeBrowser 客户端和 migu 模块可导入
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from migu_miguSM_dp import (
MIGU_HOME_URL,
connect_dp_to_tgebrowser,
connect_dp_to_ws,
input_code_and_submit,
input_phone_and_send_code,
)
from tgebrowser_client import TgeBrowserClient
def cmd_submit_phone(phone: str, url: str) -> str:
"""步骤一:输入手机号并发送验证码,返回 session_id此处为 env_id 的字符串形式,用于后续填写验证码)。"""
client = TgeBrowserClient()
start_data = client.create_and_start(
browser_name=f"miguSM_{phone[-4:]}",
start_page_url=url,
)
port = start_data.get("port")
ws = start_data.get("ws")
env_id = start_data.get("envId")
if port:
page = connect_dp_to_tgebrowser(port)
elif ws:
page = connect_dp_to_ws(ws)
else:
raise RuntimeError("TgeBrowser 未返回 port 或 ws")
input_phone_and_send_code(page, phone, url=url)
print("输入电话号码成功,请查收短信验证码")
# 保存到全局,供 submit_code 使用CLI 模式只支持单次流程)
cmd_submit_phone._page = page # type: ignore
cmd_submit_phone._client = client # type: ignore
cmd_submit_phone._env_id = env_id # type: ignore
return str(env_id or "ok")
def cmd_submit_code(code: str) -> None:
"""步骤二:填写验证码并提交。"""
page = getattr(cmd_submit_phone, "_page", None)
if not page:
raise RuntimeError("请先执行步骤一python run_migu_cli.py --phone 13800138000")
result = input_code_and_submit(page, code)
print(result.get("message", "验证码已填写"))
def main():
parser = argparse.ArgumentParser(description="咪咕 miguSM 自动化 CLI")
parser.add_argument("--phone", help="手机号码(步骤一)")
parser.add_argument("--code", help="短信验证码(步骤二)")
parser.add_argument("--interactive", "-i", action="store_true", help="步骤一后等待输入验证码(同一进程完成两步)")
parser.add_argument("--url", default=MIGU_HOME_URL, help=f"目标页面,默认 {MIGU_HOME_URL}")
args = parser.parse_args()
if args.phone:
cmd_submit_phone(args.phone, args.url)
if args.interactive:
code = input("请输入短信验证码: ").strip()
if code:
cmd_submit_code(code)
elif args.code:
cmd_submit_code(args.code)
else:
parser.print_help()
print("\n示例:")
print(" python run_migu_cli.py --phone 13800138000 -i # 输入手机号后交互输入验证码")
print(" python run_migu_cli.py --phone 13800138000 # 仅步骤一")
print(" python run_migu_cli.py --code 123456 # 仅步骤二(需在 API 模式或同一进程的步骤一之后)")
if __name__ == "__main__":
main()