本文最后更新于 2025-03-06,文章内容可能已经过时的喵~(≧^.^≦)~。

0x00项目背景:

最近在折腾 QQ 机器人,想接入一个 AI,首先想到的是 Deepseek 系列,但是官方 api 已经废了,索性转战第三方,在试了试免费的后感觉效果并不好,有一定概率不回复(或者回复太慢了)。后来又用了付费的,嗯,效果确实好了。BUT!不知道哪个入机拿 3 个号压测我 bot,导致我的 API 余额被刷没了。

然后,我看到了我在 VS Code 中安装的插件,(此处省略 200 字,懒得写了)然后就有了下面的程序。

0x01逆向过程:

1.找到Chat网页

emm,很简单,利用强大的搜索引擎,很快就找到了(PS:可以直接在插件中找到浏览器试用)

网页版连接:https://fc.fittentech.com/

2.获取请求方式

登陆后打开 F12,选择“网络”,然后随便发送一些东西(比如:你好),这时就会看到如下请求

获取请求参数1

在分析后我们可以发现:

发送请求时需要在 URL 拼接一个 apikey 参数,并且需要在请求头中设置 authorization 的 Bearer 值(如图)

分析请求参数

请求的内容为 json 字符串,格式如下

请求body

在”响应“中我们可以看到返回的内容并不是普通的字符串,而是一段经过处理的 JSON 文本(如图)

分析返回内容

将以上文本交给 Deepseek 后得知

解密返回内容

至此,原理差不多明白了,接下来验证猜想

3.验证

试用接口测试插件来验证猜想(这里使用 VS Code 里的 Thunder Client)

设置 apikey

验证001

设置 Auth

验证002

设置 Body(请求内容,以”你好“为例)

验证003

然后发送!!!

返回如下:

测试返回

至此原理已经了解,接下来就是手搓代码了。

0x02实现兼容OpenAI的格式:

(我太懒了,直接交给 bobo 吧)

目录结构

  • .gitignore:用于指定 Git 版本控制中需要忽略的文件和文件夹。
  • LICENSE.mdLICENSE_CN.md:许可证文件,规定了该项目的使用和分发规则。
  • api.py:主要的 Python 代码文件,实现了 Flask 应用的各种功能。
  • build.bat:Windows 批处理脚本,用于构建可执行文件。
  • config.ini:配置文件,存储 Fittentech 的登录信息和 API Key。
  • requirements.txt:列出了项目所需的 Python 依赖包。

主要文件介绍

requirements.txt

该文件列出了项目所需的 Python 依赖包,包括:

  • Flask:用于构建 Web 应用。
  • requests:用于发送 HTTP 请求。
  • chardet:用于检测文件编码。

config.ini

配置文件,包含以下配置项:

  • username:Fittentech 的登录用户名。
  • password:Fittentech 的登录密码。
  • api_key:提供给客户端的 API Key。

api.py

主要的 Python 代码文件,实现了以下功能:

全局变量
  • Ft_username:Fittentech 的用户名。
  • Ft_password:Fittentech 的密码。
  • Ft_access_token:访问令牌。
  • Ft_refresh_token:刷新令牌。
  • Ft_user_id:用户 ID。
  • API_KEY:API Key。
主要函数
  • initaliaze():初始化函数,从config.ini文件中读取配置信息,并调用get_auth_token()函数获取访问令牌。
  • get_auth_token():登录 Fittentech 并获取访问令牌、刷新令牌和用户 ID。
  • refresh_auth_token():刷新 Fittentech 的访问令牌。
  • generate_random_id():生成一个指定长度的随机字符串,用于生成响应的 ID。
  • get_response():调用 Fittentech 的 API 获取响应。
  • parse_response():解析 Fittentech 的 API 返回的响应。
Flask 路由
  • /v1/models:返回模型信息。
  • /v1/chat/completions:聊天接口,接收用户输入,调用 Fittentech 的 API 获取响应,并返回解析后的结果。

build.bat

Windows 批处理脚本,用于构建可执行文件。主要步骤包括:

  • 删除旧的可执行文件api.exe
  • 使用pyinstallerapi.py打包成一个单独的可执行文件。
  • 将生成的可执行文件复制到当前目录。
  • 删除临时生成的distbuild文件夹和api.spec文件。

0x03Github开源地址:传送门