具有微信公众号被动回复用户消息功能的 ChatGPTBot 实现
- 编译项目,注意在编译时将
$(Token)
替换为你的微信公众号 Token - 通过 关于如何在服务器上获取
cf_clearance
获取 config.json - 在 config.json 文件中填入
chat.openai.com
里 Cookie 中的 __Secure-next-auth.session-token - 部署到服务器中 默认监听本机 127.0.0.1:7458, 请自行通过 Nginx 或 Caddy 等反向代理工具进行转发
- 在微信公众平台中设置服务器地址为你的反向代理地址或域名地址,与微信公众号绑定的路由为
/weChatGPT
GOOS=linux GOARCH=amd64 GOARM= GOMIPS= \
CGO_ENABLED=0 \
go build -trimpath -o ./dist/weChatGPT \
-ldflags "-X 'main.wxToken=$(Token)' -w -s -buildid="
config.json
文件请放置与可执行文件同一目录下cf_clearance
可用于绕过Cloudflare
的防火墙,但请保证获取cf_clearance
时的 UA 与 IP 与项目实际运行时一致- 由于 chatGPT 接口时常变动, 部署前请先在
config.json
中填入本机访问chat.openai.com
时的 session-token、UA 与 cf_clearance,运行后通过curl 127.0.0.1:7458/healthCheck
进行可用性检查
-
在服务器上安装vvanglro/cf-clearance
pip install --upgrade cf-clearance
该项目需要
playwright
的支持,最新版Ubuntu镜像貌似是自带的(较老的Ubuntu版本需要自行安装),但还需要装一些依赖内容:playwright install sudo apt-get install libatk1.0-0 libatk-bridge2.0-0 libcups2 libatspi2.0-0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libxkbcommon0 libpango-1.0-0 libcairo2 libasound2
-
安装xvfb
sudo apt-get install xvfb
-
然后在服务器上创建一个
get_cf.py
脚本,内容如下:from playwright.sync_api import sync_playwright from cf_clearance import sync_cf_retry, sync_stealth import json config = { "session-token": "", "cf_clearance": "", "user-agent": "", "debug": False, "log-level": "info" } if __name__ == '__main__': with sync_playwright() as p: browser = p.chromium.launch(headless=False) page = browser.new_page() sync_stealth(page) page.goto('https://chat.openai.com/chat') res = sync_cf_retry(page) if res: cppkies = page.context.cookies() for cookie in cppkies: if cookie.get('name') == 'cf_clearance': config["cf_clearance"]=cookie.get('value') break ua = page.evaluate('() => {return navigator.userAgent}') config["user-agent"]=ua else: print("fail") print(json.dumps(config)) browser.close()
-
在
get_cf.py
所在目录下执行xvfb-run python3 get_cf.py > config.json
-
将
get_cf.py
所在目录下的config.json
文件复制至项目所在目录下
这其实是一篇没什么用的README由于微信公众号的 5s限制 ,虽然本项目已经通过技术将这个限制提升至了 15s, 但绝大多数情况下通过逆向得到的ChatGPT接口的相应速率都超过了这个时间限制。
故本 Bot 几乎无法正常工作,可能以后等 ChatGPT 的正式接口出来,会重构本项目的代码。