You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在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

火山引擎 最新活动