Update nb4x.py
Browse files
nb4x.py
CHANGED
|
@@ -24,6 +24,11 @@ logging.basicConfig(
|
|
| 24 |
)
|
| 25 |
logger = logging.getLogger(__name__)
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
def get_verification_code(driver, email, max_retries=10, delay=2):
|
| 28 |
email_url = f'https://linshiyou.com/#/{email}'
|
| 29 |
|
|
@@ -55,7 +60,7 @@ def get_verification_code(driver, email, max_retries=10, delay=2):
|
|
| 55 |
return verification_code
|
| 56 |
|
| 57 |
except Exception as e:
|
| 58 |
-
logger.error(f"
|
| 59 |
|
| 60 |
time.sleep(delay)
|
| 61 |
logger.info(f"等待验证码,重试第 {_ + 1} 次")
|
|
@@ -122,15 +127,23 @@ def wait_for_url(driver, url, timeout=10):
|
|
| 122 |
|
| 123 |
def wait_for_email_input(driver, timeout=10):
|
| 124 |
"""等待邮箱输入框出现并返回"""
|
|
|
|
|
|
|
| 125 |
start_time = time.time()
|
| 126 |
while time.time() - start_time < timeout:
|
| 127 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
# 获取页面标题
|
| 129 |
logger.info(f"当前页面标题: {driver.title}")
|
| 130 |
|
| 131 |
# 检查页面源代码中是否包含关键元素
|
| 132 |
-
|
| 133 |
-
if "descope-wc" in driver.page_source:
|
| 134 |
logger.info("找到 descope-wc 元素")
|
| 135 |
else:
|
| 136 |
logger.info("未找到 descope-wc 元素")
|
|
@@ -179,6 +192,15 @@ def wait_for_email_input(driver, timeout=10):
|
|
| 179 |
logger.info("等待0.5秒后重试...")
|
| 180 |
time.sleep(0.5)
|
| 181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 182 |
logger.error("邮箱输入框未出现")
|
| 183 |
return False
|
| 184 |
|
|
@@ -221,6 +243,8 @@ def input_verification_code(driver, code):
|
|
| 221 |
|
| 222 |
def registration_process(driver, wait):
|
| 223 |
try:
|
|
|
|
|
|
|
| 224 |
# 生成邮箱地址
|
| 225 |
email = generate_email()
|
| 226 |
if not email:
|
|
|
|
| 24 |
)
|
| 25 |
logger = logging.getLogger(__name__)
|
| 26 |
|
| 27 |
+
# 在文件开头添加配置
|
| 28 |
+
MAX_CONSECUTIVE_FAILURES = 3 # 最大连续失败次数
|
| 29 |
+
ENABLE_FAILURE_STOP = True # 失败停止开关
|
| 30 |
+
consecutive_failures = 0 # 连续失败计数器
|
| 31 |
+
|
| 32 |
def get_verification_code(driver, email, max_retries=10, delay=2):
|
| 33 |
email_url = f'https://linshiyou.com/#/{email}'
|
| 34 |
|
|
|
|
| 60 |
return verification_code
|
| 61 |
|
| 62 |
except Exception as e:
|
| 63 |
+
logger.error(f"获取���证码时发生错误: {str(e)}")
|
| 64 |
|
| 65 |
time.sleep(delay)
|
| 66 |
logger.info(f"等待验证码,重试第 {_ + 1} 次")
|
|
|
|
| 127 |
|
| 128 |
def wait_for_email_input(driver, timeout=10):
|
| 129 |
"""等待邮箱输入框出现并返回"""
|
| 130 |
+
global consecutive_failures # 使用全局计数器
|
| 131 |
+
|
| 132 |
start_time = time.time()
|
| 133 |
while time.time() - start_time < timeout:
|
| 134 |
try:
|
| 135 |
+
# 获取并记录页面源码
|
| 136 |
+
page_source = driver.page_source
|
| 137 |
+
logger.info("当前页面源码:")
|
| 138 |
+
logger.info("=" * 50)
|
| 139 |
+
logger.info(page_source[:500] + "...") # 只打印前500字符
|
| 140 |
+
logger.info("=" * 50)
|
| 141 |
+
|
| 142 |
# 获取页面标题
|
| 143 |
logger.info(f"当前页面标题: {driver.title}")
|
| 144 |
|
| 145 |
# 检查页面源代码中是否包含关键元素
|
| 146 |
+
if "descope-wc" in page_source:
|
|
|
|
| 147 |
logger.info("找到 descope-wc 元素")
|
| 148 |
else:
|
| 149 |
logger.info("未找到 descope-wc 元素")
|
|
|
|
| 192 |
logger.info("等待0.5秒后重试...")
|
| 193 |
time.sleep(0.5)
|
| 194 |
|
| 195 |
+
# 更新失败计数
|
| 196 |
+
if ENABLE_FAILURE_STOP:
|
| 197 |
+
consecutive_failures += 1
|
| 198 |
+
logger.warning(f"连续失败次数: {consecutive_failures}")
|
| 199 |
+
if consecutive_failures >= MAX_CONSECUTIVE_FAILURES:
|
| 200 |
+
logger.critical(f"连续失败达到{MAX_CONSECUTIVE_FAILURES}次,停止脚本运行")
|
| 201 |
+
import sys
|
| 202 |
+
sys.exit(1) # 强制停止脚本
|
| 203 |
+
|
| 204 |
logger.error("邮箱输入框未出现")
|
| 205 |
return False
|
| 206 |
|
|
|
|
| 243 |
|
| 244 |
def registration_process(driver, wait):
|
| 245 |
try:
|
| 246 |
+
global consecutive_failures # 使用全局计数器
|
| 247 |
+
|
| 248 |
# 生成邮箱地址
|
| 249 |
email = generate_email()
|
| 250 |
if not email:
|