Skip to content

gtoxlili/wechat-chatGPT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeChat-chatGPT

具有微信公众号被动回复用户消息功能的 ChatGPTBot 实现

食用指南

  1. 编译项目,注意在编译时将 $(Token) 替换为你的微信公众号 Token
  2. 通过 关于如何在服务器上获取 cf_clearance 获取 config.json
  3. 在 config.json 文件中填入chat.openai.com 里 Cookie 中的 __Secure-next-auth.session-token
  4. 部署到服务器中 默认监听本机 127.0.0.1:7458, 请自行通过 Nginx 或 Caddy 等反向代理工具进行转发
  5. 在微信公众平台中设置服务器地址为你的反向代理地址或域名地址,与微信公众号绑定的路由为 /weChatGPT

编译命令

GOOS=linux GOARCH=amd64 GOARM= GOMIPS= \
CGO_ENABLED=0 \                                                   
go build -trimpath -o ./dist/weChatGPT \                          
-ldflags "-X 'main.wxToken=$(Token)' -w -s -buildid="

注意事项

  1. config.json 文件请放置与可执行文件同一目录下
  2. cf_clearance 可用于绕过 Cloudflare 的防火墙,但请保证获取 cf_clearance 时的 UA 与 IP 与项目实际运行时一致
  3. 由于 chatGPT 接口时常变动, 部署前请先在 config.json 中填入本机访问 chat.openai.com 时的 session-token、UA 与 cf_clearance,运行后通过 curl 127.0.0.1:7458/healthCheck 进行可用性检查

效果图

关于如何在服务器上获取 cf_clearance

  1. 在服务器上安装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
  2. 安装xvfb

    sudo apt-get install xvfb
  3. 然后在服务器上创建一个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()
  4. get_cf.py 所在目录下执行

    xvfb-run python3 get_cf.py > config.json
  5. get_cf.py 所在目录下的 config.json 文件复制至项目所在目录下

其他

这其实是一篇没什么用的README

由于微信公众号的 5s限制 ,虽然本项目已经通过技术将这个限制提升至了 15s, 但绝大多数情况下通过逆向得到的ChatGPT接口的相应速率都超过了这个时间限制。

故本 Bot 几乎无法正常工作,可能以后等 ChatGPT 的正式接口出来,会重构本项目的代码。

About

实现微信公众号被动返回接口的ChatGPT

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages