mirror of
https://github.com/cnlimiter/codex-register.git
synced 2026-06-29 11:11:36 +08:00
feat(core): 实现了 Outlook 邮箱验证码获取改进方案
1. 增强邮件识别逻辑 (_is_openai_verification_mail)
- 严格验证发件人必须是 OpenAI
- 验证主题/正文包含验证关键词
- 验证收件人匹配目标邮箱
2. 邮件时间戳过滤
- 基于 otp_sent_at 过滤发送前的旧邮件
- 预留 60 秒时钟偏差容忍
3. 验证码提取优化 (_extract_code_from_mail)
- 优先从主题提取 6 位数字
- 语义正则匹配("code is", "验证码")
- 兜底任意 6 位数字
4. 验证码去重机制
- 新增 _used_codes 实例变量
- 避免重复使用同一验证码
5. 渐进式邮件检查
- 前 3 次轮询只检查未读邮件
- 之后检查所有邮件(避免已读邮件被忽略)
6. 可配置超时时间
- 新增配置项 email_code_timeout(默认 120 秒)
- 新增配置项 email_code_poll_interval(默认 3 秒)
7. 详细时间戳日志
- 记录 IMAP 连接耗时
- 记录邮件搜索耗时
- 记录总耗时和轮询次数
This commit is contained in:
@@ -118,6 +118,29 @@ OTP_WAIT_TIMEOUT = 120 # 秒
|
||||
OTP_POLL_INTERVAL = 3 # 秒
|
||||
OTP_MAX_ATTEMPTS = 40 # 最大轮询次数
|
||||
|
||||
# 验证码提取正则(增强版)
|
||||
# 简单匹配:任意 6 位数字
|
||||
OTP_CODE_SIMPLE_PATTERN = r"(?<!\d)(\d{6})(?!\d)"
|
||||
# 语义匹配:带上下文的验证码(如 "code is 123456", "验证码 123456")
|
||||
OTP_CODE_SEMANTIC_PATTERN = r'(?:code\s+is|验证码[是为]?\s*[::]?\s*)(\d{6})'
|
||||
|
||||
# OpenAI 验证邮件发件人
|
||||
OPENAI_EMAIL_SENDERS = [
|
||||
"noreply@openai.com",
|
||||
"no-reply@openai.com",
|
||||
"@openai.com", # 通配符匹配
|
||||
]
|
||||
|
||||
# OpenAI 验证邮件关键词
|
||||
OPENAI_VERIFICATION_KEYWORDS = [
|
||||
"verify your email",
|
||||
"verification code",
|
||||
"验证码",
|
||||
"your openai code",
|
||||
"code is",
|
||||
"one-time code",
|
||||
]
|
||||
|
||||
# 密码生成
|
||||
PASSWORD_CHARSET = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
DEFAULT_PASSWORD_LENGTH = 12
|
||||
|
||||
Reference in New Issue
Block a user