Files
macm1new/gpt-accesstoken.py
chengchongzhen d48b1a9d6d Add initial implementation of Cursor Pro Keep Alive tool
- Created .gitignore to exclude unnecessary files.
- Added config.ini for account configuration.
- Implemented cursor_auth_manager.py for managing authentication.
- Developed cursor_pro_keep_alive.py for automated account management.
- Included CursorKeepAlive.spec for packaging.
- Added gpt-accesstoken.py for obtaining ChatGPT access tokens.
- Created README.md with usage instructions.
- Updated requirements.txt with necessary dependencies.
- Added run_cursor.bat for script execution.
- Implemented update_cursor_auth.py for updating authentication details.
- Included turnstilePatch for handling CAPTCHA challenges.
- Added logging functionality in log.txt for tracking script execution.
- Created dist folder with packaged executable and necessary files.
2024-12-28 15:14:40 +08:00

167 lines
5.3 KiB
Python

from DrissionPage import ChromiumOptions, Chromium
import random
import time
def handle_turnstile(tab):
"""处理 Turnstile 验证"""
print("准备处理验证")
try:
while True:
if tab.ele('@id=email-input', timeout=2):
print("无需验证 - 邮箱输入框已加载")
return True
if tab.ele('@id=password', timeout=2):
print("无需验证 - 密码输入框已加载")
return True
try:
challenge_element = (tab.ele("@name=cf-turnstile-response", timeout=2)
.parent()
.shadow_root
.ele("tag:iframe")
.ele("tag:body")
.sr("tag:input"))
if challenge_element:
print("验证框加载完成")
time.sleep(random.uniform(1, 3))
challenge_element.click()
print("验证按钮已点击,等待验证完成...")
time.sleep(2)
return True
except:
pass
time.sleep(2)
except Exception as e:
print(f"验证处理出错: {str(e)}")
print('跳过验证')
return False
account = 'your_chatgpt_account'
password = 'your_chatgpt_password'
co = ChromiumOptions()
co.add_extension("turnstilePatch")
# co.headless()
co.set_user_agent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.92 Safari/537.36')
co.set_pref('credentials_enable_service', False)
co.set_argument('--hide-crash-restore-bubble')
co.auto_port()
browser = Chromium(co)
tab = browser.latest_tab
tab.run_js("try { turnstile.reset() } catch(e) { }")
print("\n步骤1: 开始访问网站...")
tab.get('https://chatgpt.com')
print('等待页面加载...')
print("\n步骤2: 开始登录...")
for _ in range(5):
try:
if tab.ele('xpath:/html/body/div[1]/div[1]/main/div[1]/div[1]/div/div[1]/div/div[3]/div/button[1]'):
signin_btn = tab.ele('xpath:/html/body/div[1]/div[1]/main/div[1]/div[1]/div/div[1]/div/div[3]/div/button[1]')
print("找到黑色登录按钮:", signin_btn.text)
break
if tab.ele('@data-testid=login-button'):
signin_btn = tab.ele('@data-testid=login-button')
print("找到蓝色登录按钮:", signin_btn.text)
break
if tab.ele("@name=cf-turnstile-response"):
print('加载页面时出现CF验证, IP 质量太差, 请更换 IP 重新尝试!')
browser.quit()
exit()
time.sleep(3)
except Exception as e:
print(f"处理登录按钮时出错: {str(e)}")
for _ in range(5):
try:
if signin_btn:
signin_btn.click()
print("点击登录按钮")
break
except Exception as e:
print(f"处理登录按钮时出错: {str(e)}")
time.sleep(3)
else:
print("尝试点击登录按钮失败,程序退出")
exit()
handle_turnstile(tab)
print("\n步骤3: 输入邮箱...")
for _ in range(5):
try:
if tab.ele('@id=email-input'):
tab.actions.click('@id=email-input').type(account)
time.sleep(0.5)
tab.ele('@class=continue-btn').click()
print("输入邮箱并点击继续")
break
except Exception as e:
print(f"加载邮箱输入框时出错: {str(e)}")
time.sleep(3)
else:
print("尝试加载邮箱输入框失败,程序退出")
browser.quit()
exit()
handle_turnstile(tab)
print("\n步骤4: 输入密码...")
for _ in range(5):
try:
if tab.ele('@id=password'):
print("密码输入框加载完成")
tab.actions.click('@id=password').input(password)
time.sleep(2)
tab.ele('@type=submit').click('js')
# tab.actions.click('@type=submit')
print("输入密码并JS点击登录")
break
except Exception as e:
print(f"输入密码时出错: {str(e)}")
time.sleep(3)
else:
print("尝试加载密码输入框失败,程序退出")
browser.quit()
exit()
for _ in range(5):
try:
if tab.ele('有什么可以帮忙的?'):
print('登录成功!')
break
if tab.ele('重新发送电子邮件'):
print('提示需要邮箱验证码,脚本终止,请手动获取')
exit()
except Exception as e:
print(f"登录可能遇到问题: {str(e)}")
time.sleep(3)
else:
print("登录失败,程序退出")
browser.quit()
exit()
time.sleep(random.uniform(1,2))
print('\n',"步骤5: 获取access_token...")
browser.new_tab('https://chatgpt.com/api/auth/session')
tab = browser.latest_tab
time.sleep(1)
response_json = tab.json
if response_json and 'accessToken' in response_json:
access_token = response_json['accessToken']
print('\n',"请复制保存你的access_token:",'\n')
print(access_token)
else:
print("错误:未找到access token")
# input("\n按Enter键关闭浏览器...")
browser.quit()