基于 Mirai , MiraiGo 的 OneBot Go语言(易语言)实现的框架,部分java代码实现的签名服务器
主要框架为来自Mrs4s大佬的go-cqhttp机器人框架
签名服务器为来自fuqiuluo大佬的服务器部署
脚本程序为Python语言编写,可在仓库中找到各个版本的Python源代码,可自取。请在合法条件下使用或修改源程序! 若没有Python编译器,可去Python官网下载,或直接使用已经编译好的exe文件
如何配置go-cqhttp
-
可进入Mrs4s大佬的go-cqhttp项目库,自行配置,其中教学文档有引导部分,可供学习参考。
-
若不会配置可跟随下方步骤进行配置:
步骤如下
- 首先下载适合自己系统的最新的
go-cqhttp.exe
文件,最新下载地址,或者直接导入本库中的go-cqhttp.exe文件,注意:本库中的go-cqhttp为amd64版本
- 下载后,点击
go-cqhttp.exe
,会弹窗(如图配置go-cq步骤1),直接一路确认然后会在此目录下生成一个go-cqhttp.bat
文件,点击bat文件。
配置go-cq步骤1
- 此时会生成一个如下图所示的弹窗,可以按照自身需求输入0~3,本程序以输入0为例子。输入后回车会生成一个
config.yml
文件,打开后可以进行修改(可用记事本方式打开),这里推荐用Sublime Text软件进行查看。点击此处进入懒人界面1
配置go-cq步骤2
-
首先将QQ号和相对应的密码进行输入,
输入密码时记得在引号中输入
。后续将# 是否允许发送临时会话消息 allow-temp-session: false
改为:
# 是否允许发送临时会话消息 allow-temp-session: true
然后移到文件 最后 ,将
server
中加入如下代码( 注意:缩进一定要准确,同时post
中的监听地址端口号
要为5700
,反向HTTP POST端口号
要为5701
,因为程序中的监听端口号
和反向HTTP POST端口号
分别为5700
和5701
,但如果你想要监听其他端口或者由于端口5700
和端口5701
已经被占用,请将go-cqhttp中的端口和程序源码中的监听端口同步修改 ,若您使用的是2.0.0
版本,则只需要在程序内部进行修改,保证与go-cqhttp中一致即可。 ):- http: # HTTP 通信设置 address: 0.0.0.0:5700 # HTTP监听地址 version: 11 # OneBot协议版本, 支持 11/12 timeout: 5 # 反向 HTTP 超时时间, 单位秒,<5 时将被忽略 long-polling: # 长轮询拓展 enabled: false # 是否开启 max-queue-size: 2000 # 消息队列大小,0 表示不限制队列大小,谨慎使用 middlewares: <<: *default # 引用默认中间件 post: # 反向HTTP POST地址列表 - url: 'http://127.0.0.1:5701' # 地址 secret: '' # 密钥 max-retries: 3 # 最大重试,0 时禁用 retries-interval: 1500 # 重试时间,单位毫秒,0 时立即
修改后的
server
部分如下图所示,可自行比对检查:
配置go-cq步骤3
注:如果不知道自己的端口是否被占用,点击此处学习如何查看和怎么清理后台文件。
-
此时保存
config.yml
文件,再次点击go-cqhttp.bat
文件,此时会生成一个device.json
文件,此时观察弹窗中的信息,如果未遇到code 45
错误,或者并未警告,账号有较高风险,则推荐继续向下操作。未有报错或警告时,弹窗中会有以下信息(如图配置go-cq步骤4所示)配置go-cq步骤4
推荐输入1后回车,这时弹窗会显示
请前往该地址验证->网址
,将网址复制到浏览器打开,完成滑条验证后关闭,若此时弹窗无报错,可能会出现类似以下信息:该QQ有设置密保: 1.给手机***...***发送消息 2.手机QQ扫码验证
可自行选择1或2后回车,按照相对应的流程完成验证后,一般会正常登录。
若出现在滑条验证中输入
1.自动提交
时,验证网址一直加载不出来的情况(最近出现较多),请选择2.手动抓取提交
,如果不知道怎么手动抓取,点击此处进行学习若刚开始或完成滑块验证后有风险或遇到
code 45
错误,请配置签名服务器,并对相应的config.yml
文件进行修改。
- 首先下载适合自己系统的最新的
如何配置签名服务器
提醒:运行该签名服务器前需要配置
java环境
,所以若还未配置java环境可先去java官网进行下载,然后进行配置(若java版本过低无法运行后续bat脚本,可直接利用java命令进行更新),如果不会配置,请点击此处进入配置java环境教学部分
问题:为什么要用签名服务器?为减少风控,减少
code45
风控报错,最好对签名服务器进行配置
-
可进入fuqiuluo大佬的签名服务器项目,并进行部署。或者更快捷的参考rhwong大佬的一键部署项目,并进行部署。
-
若不会配置可跟随下方步骤进行配置:
步骤如下
-
首先查看目前
go-cqhttp.exe
支持的签名服务器版本号(应该是向下兼容的),然后在大佬的签名服务器项目下载页面进行下载自己想要的版本。或者直接下载本项目中已经下载好的签名服务器。注意:本库中的签名服务器版本为1.1.0版本
(若下载本库中的请直接将本库的签名服务器
文件夹下载完全,其中包三个文件夹:bin
,lib
,txlib
和一个start.bat
文件) -
下载后打开会发现有一个
start.bat
脚本(如果在大佬的项目中没有找到,可以自行编写,源码可查看本项目中的start.bat脚本源代码
)或直接复制以下代码:bin\unidbg-fetch-qsign.bat --library=txlib\8.9.63 --port=8080 --count=1 --android_id= --host=0.0.0.0
-
打开
start.bat
文件进行编辑(可用记事本方式打开),会发现android_id
变量还未填入,此时返回找到在配置go-cqhttp时产生的device.json
文,打开该文件,找到该文件中的android_id
变量,复制变量值后( 只复制引号中的值 ),粘贴到start.bat
文件中的android_id=
后进行赋值( 赋值后--host
部分与你所复制的值之间应该有一个空格),赋值后代码应该形如:bin\unidbg-fetch-qsign.bat --library=txlib\8.9.63 --port=8080 --count=1 --android_id=xxxx...xxxx --host=0.0.0.0
此处还有一个重点就是
library
变量的值,此处代表QQ的协议值,只用关心8.9.63
这个值 ,看其是否与打开go-cqhttp.bat
时,系统弹窗上显示的使用协议是否一致例如打开
go-cqhttp.bat
后出现以下提示:__[INFO]: 使用协议: Android Pad 8.9.63.11390
说明使用协议为
8.9.63
版本,与library
变量的值一致,若不一致,则需要修改library
变量的值与go-cqhttp版本中一致。保存点击
start.bat
文件,打开后如果有系统弹窗运行且没有显示有问题,就说明签名服务器配置成功(另一方面,也可以通过查看go-cqhttp中是否显示签名服务器有问题来判断是否配置成功)。 一般若运行成功会在最后一行出现以下代码:[FEKit_]info: task_handle.h:74 TaskSystem not allow
此时返回找到配置go-cqhttp时生成的
config.yml
文件,打开将签名服务器填入,即将代码# 服务器可使用docker在本地搭建或者使用他人开放的服务 sign-server: '-'
修改为:
# 服务器可使用docker在本地搭建或者使用他人开放的服务 sign-server: 'http://localhost:8080'
或者修改为:
# 服务器可使用docker在本地搭建或者使用他人开放的服务 sign-server: 'http://127.0.0.1:8080'
保存
config.yml
后打开go-cqhttp.bat
脚本(此时要保证start.bat
脚本生成的签名服务器在后台运行,即生成的系统弹窗未关闭)。后续按照上述未有报错或警告时的操作进行操作。由于部分原因,可能在第一次正常登录后,后续登录就不需要再挂上签名服务器,直接点击
go-cqhttp.bat
脚本进行启动即可。若不放心,认为还有封号风险,可以在后续登录时先启动start.bat
脚本然后再启动go-cqhttp.bat
脚本。
-
-
如果go-cqhttp正常运行,则会出现以下提示:
[INFO]: 正在检查协议更新... [INFO]: 登录成功 欢迎使用: 您的QQ昵称 [INFO]: 开始加载好友列表... [INFO]: 共加载 *** 个好友. [INFO]: 开始加载群列表... [INFO]: 共加载 *** 个群. [INFO]: 资源初始化完成, 开始处理信息. [INFO]: アトリは、高性能ですから! [INFO]: HTTP POST上报器已启动: http://127.0.0.1:5701/ (此处应该是config.yml文件中您配置的反向HTTP POST监听端口号) [INFO]: CQ HTTP 服务器已启动: [::]:5700 (此处应该是config.yml文件中您配置的HTTP监听地址端口号) [INFO]: 正在检查更新. [INFO]: 检查更新完成. 当前已运行最新版本. [INFO]: 开始诊断网络情况 [INFO]: 收到服务器地址更新通知, 将在下一次重连时应用. [INFO]: 网络诊断完成. 未发现问题
若未正常运行,则不会有此提示。常见错误见常见go-cqhttp报错以及处理方式
-
如果程序出现上述提示后正常运行时,出现类似以下警告,是正常现象,不用担心。
[WARNING]: 上报 Event 数据到 http://127.0.0.1:5701(您配置的反向HTTP POST端口号)/ 失败: Post "http://127.0.0.1:5701/": dial tcp 127.0.0.1:5701: connectex: No connection could be made because the target machine actively refused it. 将进行第 n 次重试
- 第一次正常登录后,会生成一个
session.token
文件,可以通过此,来判断是否正常登录。
-
signsever报错 :说明签名服务器配置有问题,建议检查签名服务器的配置过程是否正确,并且请查看您的签名服务器是否在后台正常运行。
-
在几次正常登录后,又提醒类似
您的账号被风控
的字眼 :大概率说明账号被封号了,直接进行解封就可以
。 -
若出现正常登录时的提示,但是中间有类似
5700(您在config.yml文件配置的两个端口)被占用,将在5秒内关闭bot
的字眼 :说明您的端口被占用,解决方式请见如何查看端口状态和清理端口工作问题。 请将config.yml文件中您配置的端口换成未被占用的端口,并将程序中的两个对应监控端口位置进行修改,您可以通过修改py文件源码实现此修改(若您使用2.0.0版本程序,可以直接在程序内部进行修改)。注意:一定要使程序监听端口一定要与
config.yml文件中一致,否则程序会无响应。
-
出现
code 45
问题,并显示登录失败:你当前使用的QQ版本过低,请前往QQ官网下载最新版qq后重试
,说明当前协议版本过低,不支持登录,需要升级协议版本。如果您不会升级,请查看如何解决协议版本过低的问题
提醒:在使用程序前,请查看前置配置是否完成,同时注意保证在使用该程序时,您的QQ已经在go-cqhttp上登录
再次提醒:程序监听端口一定要与
config.yml
文件中一致,否则程序会无响应
-
本程序在
1.1.0
版本后,需要安装在 有权限更改文件的目录 下,如果程序打不开,请使用管理员模式打开exe程序。 -
打开程序后会在同目录下生成一个
user_data
文件夹(版本1.0.0
不会生成),为正常现象,若未生成说明程序未正常打开,请用 管理员模式 运行。 -
请根据程序的使用帮助界面,进行合法化合理化使用。
-
若程序在您输入相应要求后,只进行监控并在监控区有文本显示,而不发送消息,说明您的反向HTTP POST端口没有问题,而HTTP监控端口被占用 。为进一步确定是否为该问题,您可以将go-cqhttp挂在后台运行,然后点击浏览器输入网址
127.0.0.1:(config.yml文件中您填入的HTTP监控端口)/send_msg?message_type=private&user_id=某个好友的QQ&message=测试成功
, 如果没有成功给您的好友发送消息“测试成功”,则说明存在该问题,此时建议将当前HTTP监控端口更换未被占用的端口(注意:修改时,两个端口在程序和go-cqhttp中要一致。
)。若成功发送,且不知道如何解决,可联系开发者或者直接进行提问。 -
若程序在您输入相应要求后,没有进行监控并在监控区没有文本显示,同时也不发送消息,说明您的反向HTTP POST端口有问题 ,同上进行更换。
-
若程序在第一次正常运行,而后续再次启用时,无法正常使用功能,大概率是因为您没有关闭完全程序的后台运行,解决此问题请查看如何查看端口状态和清理端口工作问题 ,若无法解决,
可尝试重启电脑或者更换最新版本程序。若实在不知道该如何进行,可联系开发者或者直接进行提问。
如有其他问题,请联系开发者或直接进行提问。
详细情况点击查看
- 为程序的第一版,只是实现了最初监控某个特定QQ群中包含某些关键词的功能。
- 在第一版基础上,新增一个监控窗口并显示监控内容。
- 在上一版基础上,对关闭程序后flask线程仍然要手动关闭的问题进行修复,并添加一个安全退出按键和终止监控功能,同时为了更加清晰是否检测到关键词,将接受消息中的关键词进行标红处理。
-
当前最新版本,应该在未来很长时间不会新增功能和优化,只会修改部分反馈bug。
-
修复了 部分导致程序异常崩溃的问题(不填入群聊或其他消息直接点击开始监控导致的程序崩溃,正常运行后点停止监控再点击安全退出导致的程序崩溃) 。
-
相对版本1.X.X升级页面。
-
有人在群聊中发送其他消息时,消息无法显示,而显示乱码的问题进行优化。
-
新增
定时功能
,选择“检测关键词并发消息”次数的功能
,修改监控对象和发送对象功能
(其他新加功能在使用过程中可以发现)。在另一方面,为了优化关键词的选择,不那么单调,新增了“或和并”选择关键词方法。
-
程序的源码部分可以自行获取,但请在
合法合理情况
下使用。 -
本程序源码以及衍生产物 不允许在权限未授予的情况下
商业化
使用 ,否则根据本项目的license:Apache License 2.0,可以 侵犯权益 的名义上诉。 -
由于本程序的某些特殊性质,可能会在
未来某时停更或者删除本项目
,还请大家见谅。 -
但是也不必太过于严肃,程序设计初衷也是为了方便大家,希望大家在使用程序时获取便利,最后,just enjoy yourself now!
-
关于程序会导致
QQ封号
的问题,在此进行解释,本程序不会导致封号,导致封号的原因在于QQ对QQ机器人框架的异常状态处理,但这不证明程序(本程序,go-cqhttp,签名服务器)代码有问题,只是问题产生在于QQ的风控检测上
,QQ封号一般为短期封号,可以直接进行解冻。在此声明: QQ封号与本程序和提供的一切服务均没有关系,故您在使用本程序时,造成QQ封号,本人不会承担任何责任与赔偿! -
对于本程序中需要使用的签名服务器,如果是公用API,那么可能会导致以下问题,
如果您自建服务器失败,还是建议您 尽量少使用 公共服务器。
使用他人搭建的服务器会导致部分信息泄露(如下)
可能会泄露以下信息 不会泄露的信息: 登录账号 账号密码 登录时间 账号 session
登录后发送的消息内容 群列表/好友列表 登录后发送消息的群号/好友ID 接收的消息 除发送消息外的任何历史记录
注:本程序(不包括本项目所使用的go-cqhttp和签名服务器)并不会泄露您的任何信息!
- 本项目由于 特殊原因(开发者只有一个,而且
很懒
) ,所以并没有开启(还有一个原因,开发者并非长期关注github的用户),所以提交bug或者想要新功能,在release处留言或者直接 email me at 开发者的邮箱(2378145658@qq.com),开发者会定时查看大家的反馈。
Footnotes
-
进入懒人界面可直接复制完整版的
config.yml
文件。 ↩