如何在ChatGPT网站新增安全机制下实现自动化?
更新安全机制后ChatGPT自动化实现方案
背景回顾
之前可通过页面扩展调用ChatGPT的/conversation私有API实现自动化,只需传入消息ID、父消息ID等参数即可,这类方式曾被OpenAI客服允许。但现在OpenAI新增了sentinel验证流程,需先调用/backend-api/sentinel/chat-requirements接口,携带未知来源的p参数,返回的密钥需用于后续请求,手动解析压缩的页面代码推导token逻辑难度极大,直接调用旧接口会触发「检测到异常活动」错误。
可行解决方案
1. 用无头浏览器模拟用户操作
直接操控ChatGPT官方网页,让页面自身完成所有验证流程(包括sentinel的token生成、请求签名等),无需自行解析加密逻辑。推荐使用Playwright或Puppeteer工具:
- 优势:完全模拟真实用户行为,绕过所有网页端的验证机制,不会触发异常检测
- 示例(Playwright Python):
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch(headless=False) # 首次运行需手动登录,之后可保存会话 context = browser.contexts[0] if browser.contexts else browser.new_context(storage_state="chatgpt_session.json") page = context.new_page() page.goto("https://chatgpt.com") # 等待页面加载完成,输入消息 page.locator("textarea[data-id='root']").fill("你好,请介绍一下Python") page.locator("button[data-testid='send-button']").click() # 等待回复完成并提取内容 reply_locator = page.locator("div[data-testid='conversation-turn-1']") reply_locator.wait_for() print(reply_locator.text_content()) # 保存会话状态,下次无需登录 context.storage_state(path="chatgpt_session.json") browser.close()
2. 改用官方合规API
放弃网页端私有API,使用OpenAI官方提供的Chat Completions API,这是官方支持的自动化方式,无验证障碍:
- 优势:文档完善,参数清晰,完全合规,不会触发异常检测
- 示例(Python):
from openai import OpenAI client = OpenAI(api_key="你的API密钥") response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "你是一个专业助手"}, {"role": "user", "content": "你好,请介绍一下Python"} ] ) print(response.choices[0].message.content)
3. 参考已适配的开源扩展逻辑
关注已更新适配新验证机制的开源ChatGPT扩展,查看其代码实现,复用他们解析sentinel流程的逻辑,避免自行逆向工程页面压缩代码:
- 核心思路:通过注入脚本到页面中,直接调用页面内置的验证逻辑函数,获取所需的
p参数和后续请求的签名密钥,而非手动推导。
内容的提问来源于stack exchange,提问作者B''H Bi'ezras -- Boruch Hashem




