Skip to content

About

We will use web-chatgpt as a openai api to create a batch of databases or some checkings.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

ChatGPT Web 网页接口

这是一个基于 Playwright 的 ChatGPT 网页收发接口。它可以在同一个临时对话中反复发送消息、等待回答完成并返回文本,也可以提取回答中的 Markdown 代码块。

本项目有意不让 ChatGPT 操作本机:脚本不会启动 Codex,不执行 ChatGPT 返回的命令,不读写项目文件,也不解析回答为文件操作。脚本只通过网页输入框发送消息、读取网页回答。

工作方式

为避免 Google OAuth 把 Playwright 启动的浏览器识别为“不安全的浏览器”,脚本默认连接一个由用户手动启动、手动登录的普通 Microsoft Edge:

手动启动并登录 Edge
          │
          │ CDP(仅监听 127.0.0.1:9222)
          ▼
chatgpt_WEB.py ──> ChatGPT 网页输入/输出

脚本不会启动或关闭这个 Edge。退出脚本时只断开 CDP 连接,浏览器窗口会继续保持打开。

环境要求

  • Windows
  • Python 3.10 或更高版本
  • 已安装 Microsoft Edge
  • 一个可以正常登录 ChatGPT 的账号
  • Python Playwright

安装依赖:

pip install playwright

脚本连接本机已安装的 Edge,因此通常不需要执行 playwright install。

启动步骤

1. 关闭 Edge

启动带 CDP 端口前,先关闭所有 Edge 窗口。否则 Edge 可能复用已有进程,导致远程调试参数不生效。

2. 手动启动 Edge

在 PowerShell 中执行:

$project = "D:\path\to\your\project"
$profile = Join-Path $project "chatgpt_playwright_profile"
$edge = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"

Start-Process `
    -FilePath $edge `
    -ArgumentList @(
        "--remote-debugging-port=9222",
        "--user-data-dir=$profile",
        "--new-window",
        "https://chatgpt.com/"
    )

如果第一个 Edge 路径不存在,尝试:

$edge = "C:\Program Files\Microsoft\Edge\Application\msedge.exe"

在打开的 Edge 中手动完成 ChatGPT 登录、人机验证和其它安全验证,直到页面可以正常聊天。

3. 检查 CDP 端口

另开一个 PowerShell 窗口执行:

Invoke-WebRequest http://127.0.0.1:9222/json/version

如果返回 JSON,说明 Edge 的 CDP 端口已启动。

4. 启动接口

python .\chatgpt_WEB.py

如果使用 Anaconda 环境,请使用该环境的 Python,例如:

D:\path\to\your\python.exe .\chatgpt_WEB.py

交互式客户端命令:

  • /new:创建新的 ChatGPT 临时对话
  • /exit:退出脚本,但不关闭 Edge

Python 调用

from chatgpt_WEB import ChatGPTWeb

with ChatGPTWeb() as chat:
    first_answer = chat.send("请用一句话解释什么是 Python 生成器")
    print(first_answer)

    # 同一临时对话会保留上下文
    second_answer = chat.send("现在给一个最小代码示例")
    print(second_answer)

    # 本轮回答中的 Markdown 代码块
    print(chat.last_code_blocks)

ask 是 send 的别名:

answer = chat.ask("你好")

创建新的临时对话:

chat.new_chat()

配置

默认连接地址为 http://127.0.0.1:9222。如使用其它端口,可以设置环境变量:

$env:CHATGPT_WEB_CDP_URL = "http://127.0.0.1:9333"

也可以在 Python 中传入:

chat = ChatGPTWeb(cdp_url="http://127.0.0.1:9333")

输入框和回答完成检测的超时时间可以通过构造函数参数调整:

chat = ChatGPTWeb(
    start_timeout_ms=90_000,
    navigation_timeout_ms=120_000,
)

常见问题

无法连接到 Edge / connection refused

确认:

  1. 所有旧 Edge 窗口已关闭;
  2. Edge 是通过 --remote-debugging-port=9222 启动的;
  3. Invoke-WebRequest http://127.0.0.1:9222/json/version 能返回 JSON;
  4. 脚本与 Edge 使用的是同一个端口。

Google 显示“此浏览器或应用可能不安全”

不要在脚本启动的自动化浏览器中进行 Google 登录。关闭脚本后,按照上面的步骤用普通 Edge 手动登录,再重新连接。不要使用 VPN、代理、无痕窗口或反复刷新登录页。

人机验证反复出现

先停止重复尝试,使用普通 Edge、稳定网络和已有登录资料完成验证。验证成功后保持 Edge 登录状态,再启动脚本。如果普通 Edge 本身也持续出现验证,通常是网络/IP 或账号风控问题,需要等待或联系服务提供方。

找不到输入框

ChatGPT 网页 DOM 可能变化。脚本已经兼容常见的 #prompt-textarea、contenteditable 和 ProseMirror 输入框。如果仍然失败,请查看错误中的当前 URL 和页面标题,确认页面不是登录页、验证码页或错误页。

安全注意事项

  • CDP 端口只应监听 127.0.0.1,不要把 9222 暴露到局域网或公网。
  • chatgpt_playwright_profile 中包含登录 Cookie 和浏览器资料,绝对不要提交到 GitHub。
  • 不要把账号密码、Cookie、验证码或个人隐私内容写进代码和 issue。
  • 本项目使用网页界面,不是 OpenAI 官方 API;网页 DOM 或登录流程变化时,接口可能需要调整。

文件说明

文件 用途
chatgpt_WEB.py ChatGPT 网页接口与交互式客户端
chatgpt_playwright_profile/ 本地 Edge 登录资料,不应提交到仓库

About

We will use web-chatgpt as a openai api to create a batch of databases or some checkings.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages