mirror of
https://github.com/yeongpin/cursor-free-vip.git
synced 2025-08-03 04:57:36 +08:00
update control
This commit is contained in:
parent
f358ee9aec
commit
3edef109d4
25
control.py
25
control.py
@ -215,8 +215,17 @@ class BrowserControl:
|
|||||||
def get_verification_code(self):
|
def get_verification_code(self):
|
||||||
"""从邮件中获取验证码"""
|
"""从邮件中获取验证码"""
|
||||||
try:
|
try:
|
||||||
# 查找包含验证码的div,使用更精确的XPath
|
# 使用新的 XPath 定位验证码
|
||||||
code_div = self.browser.ele('xpath://div[contains(@style, "font-family:-apple-system") and contains(@style, "font-size: 28px") and contains(@style, "letter-spacing: 2px") and contains(@style, "color: rgba(32, 32, 32, 1)")]')
|
code_div = self.browser.ele('xpath://div[contains(@style, "font-family:-apple-system") and contains(@style, "font-size:28px") and contains(@style, "letter-spacing:2px") and contains(@style, "color:#202020")]')
|
||||||
|
|
||||||
|
# 如果找不到,尝试备用选择器
|
||||||
|
if not code_div:
|
||||||
|
code_div = self.browser.ele('xpath://div[contains(@style, "font-size:28px") and contains(@style, "letter-spacing:2px") and contains(@style, "line-height:30px")]')
|
||||||
|
|
||||||
|
# 如果还找不到,尝试更宽松的选择器
|
||||||
|
if not code_div:
|
||||||
|
code_div = self.browser.ele('xpath://div[contains(@style, "font-size:28px") and contains(@style, "letter-spacing:2px")]')
|
||||||
|
|
||||||
if code_div:
|
if code_div:
|
||||||
verification_code = code_div.text.strip()
|
verification_code = code_div.text.strip()
|
||||||
if verification_code.isdigit() and len(verification_code) == 6:
|
if verification_code.isdigit() and len(verification_code) == 6:
|
||||||
@ -226,17 +235,11 @@ class BrowserControl:
|
|||||||
print(f"{Fore.RED}Verification Code Format Error | 验证码格式不正确: {verification_code}{Style.RESET_ALL}")
|
print(f"{Fore.RED}Verification Code Format Error | 验证码格式不正确: {verification_code}{Style.RESET_ALL}")
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
# 尝试备用XPath
|
print(f"{Fore.YELLOW}No Verification Code Found | 未找到验证码{Style.RESET_ALL}")
|
||||||
code_div = self.browser.ele('xpath://div[contains(@style, "font-size: 28px") and contains(@style, "letter-spacing: 2px") and contains(@style, "color: rgba(32, 32, 32, 1)")]')
|
|
||||||
if code_div:
|
|
||||||
verification_code = code_div.text.strip()
|
|
||||||
if verification_code.isdigit() and len(verification_code) == 6:
|
|
||||||
print(f"{Fore.GREEN}Found Verification Code | 找到验证码: {verification_code}{Style.RESET_ALL}")
|
|
||||||
return verification_code
|
|
||||||
print(f"{Fore.RED}No Verification Code Found | 未找到验证码{Style.RESET_ALL}")
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"{Fore.RED}Get Verification Code Failed | 获取验证码时发生错误: {str(e)}{Style.RESET_ALL}")
|
print(f"{Fore.RED}Get Verification Code Error | 获取验证码时发生错误: {str(e)}{Style.RESET_ALL}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def fill_verification_code(self, code):
|
def fill_verification_code(self, code):
|
||||||
|
@ -247,7 +247,7 @@ class CursorRegistration:
|
|||||||
print(f"{Fore.YELLOW}{EMOJI['VERIFY']} Handle Turnstile | 处理 Turnstile 验证...{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW}{EMOJI['VERIFY']} Handle Turnstile | 处理 Turnstile 验证...{Style.RESET_ALL}")
|
||||||
|
|
||||||
# 设置最大等待时间(秒)
|
# 设置最大等待时间(秒)
|
||||||
max_wait_time = 5
|
max_wait_time = 10 # 增加等待时间
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@ -255,32 +255,49 @@ class CursorRegistration:
|
|||||||
# 检查是否超时
|
# 检查是否超时
|
||||||
if time.time() - start_time > max_wait_time:
|
if time.time() - start_time > max_wait_time:
|
||||||
print(f"{Fore.YELLOW}{EMOJI['WAIT']} Not Detect Turnstile | 未检测到 Turnstile 验证,继续下一步...{Style.RESET_ALL}")
|
print(f"{Fore.YELLOW}{EMOJI['WAIT']} Not Detect Turnstile | 未检测到 Turnstile 验证,继续下一步...{Style.RESET_ALL}")
|
||||||
|
time.sleep(2) # 添加短暂延迟
|
||||||
break
|
break
|
||||||
|
|
||||||
# 检查是否存在验证框
|
# 检查是否存在验证框
|
||||||
challengeCheck = (
|
try:
|
||||||
self.signup_tab.ele("@id=cf-turnstile", timeout=1)
|
challengeCheck = (
|
||||||
.child()
|
self.signup_tab.ele("@id=cf-turnstile", timeout=1)
|
||||||
.shadow_root.ele("tag:iframe")
|
.child()
|
||||||
.ele("tag:body")
|
.shadow_root.ele("tag:iframe")
|
||||||
.sr("tag:input")
|
.ele("tag:body")
|
||||||
)
|
.sr("tag:input")
|
||||||
|
)
|
||||||
|
|
||||||
if challengeCheck:
|
if challengeCheck:
|
||||||
challengeCheck.click()
|
challengeCheck.click()
|
||||||
time.sleep(2)
|
time.sleep(3) # 增加点击后的等待时间
|
||||||
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} Turnstile Passed | 验证通过{Style.RESET_ALL}")
|
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} Turnstile Passed | 验证通过{Style.RESET_ALL}")
|
||||||
break
|
time.sleep(2) # 确保验证完全完成
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
# 检查是否已经通过验证(检查下一步的元素是否存在)
|
# 检查是否已经通过验证(检查下一步的元素是否存在)
|
||||||
if self.signup_tab.ele("@name=password"):
|
try:
|
||||||
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} Verification Passed | 验证已通过{Style.RESET_ALL}")
|
if (self.signup_tab.ele("@name=password", timeout=0.5) or
|
||||||
break
|
self.signup_tab.ele("@name=email", timeout=0.5) or
|
||||||
|
self.signup_tab.ele("@data-index=0", timeout=0.5)):
|
||||||
|
print(f"{Fore.GREEN}{EMOJI['SUCCESS']} Verification Passed | 验证已通过{Style.RESET_ALL}")
|
||||||
|
time.sleep(2) # 添加短暂延迟
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
except:
|
|
||||||
# 等待短暂时间后继续检查
|
# 等待短暂时间后继续检查
|
||||||
time.sleep(0.5)
|
time.sleep(1)
|
||||||
continue
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"{Fore.RED}{EMOJI['ERROR']} Turnstile Error | Turnstile 处理出错: {str(e)}{Style.RESET_ALL}")
|
||||||
|
time.sleep(2) # 出错时等待更长时间
|
||||||
|
break
|
||||||
|
|
||||||
|
# 最后再等待一下,确保页面加载完成
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
def _get_account_info(self):
|
def _get_account_info(self):
|
||||||
"""获取账户信息和 Token"""
|
"""获取账户信息和 Token"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user