从网站获取指定邮箱的验证码 参数: server_url: 网站URL,例如 "cjrom2ero@portaltrendsarena.com" email: 完整的邮箱地址 retry_interval: 重试间隔(秒) 返回: 成功返回验证码字符串,失败返回None
(server_url, email, retry_interval=3)
| 7 | from urllib.parse import quote |
| 8 | |
| 9 | def get_verification_code(server_url, email, retry_interval=3): |
| 10 | """ |
| 11 | 从网站获取指定邮箱的验证码 |
| 12 | |
| 13 | 参数: |
| 14 | server_url: 网站URL,例如 "cjrom2ero@portaltrendsarena.com" |
| 15 | email: 完整的邮箱地址 |
| 16 | retry_interval: 重试间隔(秒) |
| 17 | |
| 18 | 返回: |
| 19 | 成功返回验证码字符串,失败返回None |
| 20 | """ |
| 21 | # URL编码邮箱地址 |
| 22 | encoded_email = quote(email) |
| 23 | api_url = f"{server_url}/get_code?email={encoded_email}" |
| 24 | |
| 25 | print(f"开始获取邮箱 {email} 的验证码...") |
| 26 | |
| 27 | max_retries = 3 # 增加重试次数 |
| 28 | for attempt in range(max_retries): |
| 29 | try: |
| 30 | print(f"尝试 {attempt+1}/{max_retries}: 请求验证码...") |
| 31 | response = requests.get(api_url, timeout=30) |
| 32 | |
| 33 | if response.status_code == 200: |
| 34 | data = response.json() |
| 35 | if data.get("success") and data.get("code"): |
| 36 | print(f"成功获取验证码: {data['code']}") |
| 37 | return data["code"] |
| 38 | else: |
| 39 | print(f"未找到验证码,响应: {data}") |
| 40 | else: |
| 41 | print(f"请求失败,状态码: {response.status_code}") |
| 42 | |
| 43 | # 如果不是最后一次尝试,等待后重试 |
| 44 | if attempt < max_retries - 1: |
| 45 | retry_wait = retry_interval * (attempt + 1) # 递增等待时间 |
| 46 | print(f"等待 {retry_wait} 秒后重试...") |
| 47 | time.sleep(retry_wait) |
| 48 | |
| 49 | except Exception as e: |
| 50 | print(f"请求出错: {e}") |
| 51 | if attempt < max_retries - 1: |
| 52 | retry_wait = retry_interval * (attempt + 1) |
| 53 | print(f"等待 {retry_wait} 秒后重试...") |
| 54 | time.sleep(retry_wait) |
| 55 | |
| 56 | print("达到最大重试次数,获取验证码失败") |
| 57 | return None |
| 58 | |
| 59 | def check_server_health(server_url): |
| 60 | try: |