mirror of
https://github.com/cnlimiter/codex-register.git
synced 2026-05-14 17:27:37 +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,7 @@ class RegistrationEngine:
|
||||
self.session: Optional[cffi_requests.Session] = None
|
||||
self.session_token: Optional[str] = None # 会话令牌
|
||||
self.logs: list = []
|
||||
self._otp_sent_at: Optional[float] = None # OTP 发送时间戳
|
||||
|
||||
def _log(self, message: str, level: str = "info"):
|
||||
"""记录日志"""
|
||||
@@ -346,6 +347,9 @@ class RegistrationEngine:
|
||||
def _send_verification_code(self) -> bool:
|
||||
"""发送验证码"""
|
||||
try:
|
||||
# 记录发送时间戳
|
||||
self._otp_sent_at = time.time()
|
||||
|
||||
response = self.session.get(
|
||||
OPENAI_API_ENDPOINTS["send_otp"],
|
||||
headers={
|
||||
@@ -371,7 +375,8 @@ class RegistrationEngine:
|
||||
email=self.email,
|
||||
email_id=email_id,
|
||||
timeout=120,
|
||||
pattern=OTP_CODE_PATTERN
|
||||
pattern=OTP_CODE_PATTERN,
|
||||
otp_sent_at=self._otp_sent_at,
|
||||
)
|
||||
|
||||
if code:
|
||||
|
||||
Reference in New Issue
Block a user