声明:<TEST安全>公众号分享的安全工具、漏洞复现和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。
大部分开源微x机器人项目非常复杂,且很难嵌入到自己的项目中而WeChatFerry可定制化非常高,整个代码使用也比较简单,下面介绍一款笔者正在使用的一款机器人,相比源代码稍微做了一些修改,同时本次也会讲到跨几门编程语言开发方式,WeChatFerry使用Python开发,也就是如果你熟悉Python可以直接使用Python直接开发,如果你不熟悉Python也可以使用Go语言进行开发,当然你可以可以使用易语言进行开发,本套源码里面我会提供Python源码、go语言开发Demo、易语言开发Demo方便开发者直接开发,可以选择你熟悉的编程,当然稍作修改你也可以实现使用php进行开发,该框架目前是完全免费的,近期测试大量机器人框架,最后选定这款,当然也有其他收费的框架,但是这款框架的功能完全足够使用,你只需要参照作者文章即可实现自己的机器人开发。
1、需要安装指定版本3.9.10.27,下面提供两个下载地址,任选其一,下载完成后直接安装
https://www.xsssql.com/wp-content/uploads/2024/10/WeChatSetup-3.9.10.27.ziphttps://github.com/lich0821/WeChatRobot/releases/tag/v39.2.4.0
安装python安装 Python>=3.9(Python 12 需要自己编译依赖,慎选,本文使用的是例如 3.10.11 ,下载地址如下
https://www.python.org/ftp/python/3.10.11/python-3.10.11-amd64.exe然后解压源码 主程序源码
# 升级 pippython -m pip install -U pip# 安装必要依赖pip install -r requirements.txt# ChatGLM 还需要安装一个 kernelipython kernel install --name chatglm3 --user
安装完成后需要先启动Demo,如果你是go语言开发则直接在其他程序联合开发Demogo语言目录运行
go run main.go然后直接运行main.py
然后扫码登录,登录成功后需要把自动更新功能取消
运行main.py后go语言可以得到如下提示
此时直接使用微信发消息测试,私聊可发送 任意文字,将收到回复如图
群聊可以发送 hello 或 你好 或@你登录的微信 将收到如图回复
争对go语言具体逻辑可在下面的代码片段自行开发即可
// 处理接收到的数据func handleData(conn net.Conn, data []byte) {messageStr := string(data)parts := strings.Split(messageStr, "=_^||^_=")if len(parts) < 5 { // 如果成员不足 5 个则打印并返回fmt.Println("Invalid data received:", messageStr)return}// 创建 Message 结构体并赋值message := Message{PrimaryCmd: parts[0],SecondaryCmd: parts[1],WeChatGroupID: parts[2],WeChatID: parts[3],WeChatMsg: parts[4],}replyMsg := Message{PrimaryCmd: "发送消息",WeChatGroupID: message.WeChatGroupID,WeChatID: message.WeChatID,}// 处理不同类型的消息switch message.PrimaryCmd {case "收到闲聊":replyMsg.MsgType = 0replyMsg.WeChatMsg = "来自Go的回复,我收到一个闲聊信息,你好啊"sendData(conn, replyMsg)case "收到群聊":replyMsg.MsgType = 1switch message.WeChatMsg {case "hello":replyMsg.WeChatMsg = "来自Go的回复,你好啊,我现在在群里呢"case "你好":replyMsg.WeChatMsg = "666"}if replyMsg.WeChatMsg != "" {sendData(conn, replyMsg)}case "群聊被艾特":replyMsg.MsgType = 2replyMsg.WeChatMsg = "有什么事吗?"sendData(conn, replyMsg)}// 打印结构体内容fmt.Printf("Parsed Message: %+vn", message)}
如果你是python用户可在"主程序源码"robot.py文件 下面代码片段直接开发相关功能
def processMsg(self, msg: WxMsg) -> None:"""当接收到消息的时候,会调用本方法。如果不实现本方法,则打印原始消息。此处可进行自定义发送的内容,如通过 msg.content 关键字自动获取当前天气信息,并发送到对应的群组@发送者群号:msg.roomid 微信ID:msg.sender 消息内容:msg.contentcontent = "xx天气信息为:"receivers = msg.roomidself.sendTextMsg(content, receivers, msg.sender)"""testinput = msg.roomid+"/"+msg.senderself.LOG.info("-----------------当接收到消息的时候,会调用本方法 @---------AAAAAAAAAAAA-----------"+testinput)# 群聊消息if msg.from_group():# 如果在群里被 @if msg.roomid not in self.config.GROUPS: # 不在配置的响应的群列表里,忽略 收到正常的群聊消息self.LOG.info("-----------------在群里被 @---------777777777777-----------")tcpbotsend.tcp_send_data("收到群聊","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去returnif msg.is_at(self.wxid): # 被@self.LOG.info("-----------------在群里被 @---------888888888888-----------")#self.toAt(msg) 被@接入机器人tcpbotsend.tcp_send_data("群聊被艾特","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去else: # 其他消息self.LOG.info("-----------------在群里被 @---------999999999999-----------")tcpbotsend.tcp_send_data("收到群聊", "",msg.roomid,msg.sender, msg.content) # 将收到的数据通过TCP发送出去self.toChengyu(msg)return # 处理完群聊信息,后面就不需要处理了# 非群聊信息,按消息类型进行处理if msg.type == 37: # 好友请求self.autoAcceptFriendRequest(msg)tcpbotsend.tcp_send_data("好友请求", "", msg.roomid, msg.sender, msg.content) # 将收到的数据通过TCP发送出去elif msg.type == 10000: # 系统信息self.sayHiToNewFriend(msg)tcpbotsend.tcp_send_data("系统信息", "", msg.roomid, msg.sender, msg.content) # 将收到的数据通过TCP发送出去elif msg.type == 0x01: # 文本消息# 让配置加载更灵活,自己可以更新配置。也可以利用定时任务更新。self.LOG.info("-----------------收到文本消息--------------------111")if msg.from_self():if msg.content == "^更新$":self.config.reload()self.LOG.info("已更新")else:#self.toChitchat(msg) # 闲聊 收到用户发送的普通文本消息 接入机器人处理self.LOG.info("----------------闲聊----------A444444444444----------")tcpbotsend.tcp_send_data("收到闲聊","",msg.roomid,msg.sender,msg.content) #将收到的数据通过TCP发送出去
如果你是易语言用户可在下面代码片段直接开发相关功能
.版本 2.支持库 EThread.子程序 TCP_收到数据.参数 pSender, 整数型.参数 dwConnID, 整数型.参数 pData, 整数型.参数 iLength, 整数型.局部变量 局部_DATA, 字节集, , , UTF8数据.局部变量 局部_队列, TCP队列.局部变量 局部_收到数据分割, 字节集, , "0".局部变量 bot, 机器人消息进入许可区 (全局_许可证_机器人)全局_dwConnID = dwConnID退出许可区 (全局_许可证_机器人)局部_队列.TCP数据 = 到字节集 (“”)局部_DATA = 指针到字节集 (pData, iLength)局部_队列.TCP数据 = 局部_DATA局部_队列.是否已处理 = 假提示 (#换行符 + “收到TCP数据:” + 编码_Utf8到Ansi_通用 (局部_DATA) + #换行符)局部_收到数据分割 = 分割字节集 (局部_DATA, 编码_Ansi到Utf8_通用 (“=_^||^_=”), ).如果真 (取数组成员数 (局部_收到数据分割) ≥ 5)bot.一级指令 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [1])bot.二级指令 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [2])bot.微信群ID = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [3])bot.微信ID = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [4])bot.微信消息 = 编码_Utf8到Ansi_通用 (局部_收到数据分割 [5])bot.微信消息 = 删首尾空 (子文本替换 (bot.微信消息, “?”, “”, , , 真)).如果真 (bot.一级指令 = “收到闲聊”)提示 (“机器人一级指令:” + bot.一级指令)bot.消息类型 = 0 ' 0=收到闲聊 1=收到群聊 2=群聊被@回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “来自易语言的回复,我收到一个闲聊信息,你好啊”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事返回 ().如果真结束.如果真 (bot.一级指令 = “收到群聊”)提示 (“机器人一级指令:” + bot.一级指令)bot.消息类型 = 1 ' 0=收到闲聊 1=收到群聊 2=群聊被@.如果真 (bot.微信消息 = “hello”) ' 只有收到hello的时候才回复回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “你好啊,我在群里的”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事.如果真结束.如果真 (bot.微信消息 = “你好”) ' 在群里面收到你好的时候 回复 666回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “666”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事.如果真结束返回 ().如果真结束.如果真 (bot.一级指令 = “群聊被艾特”)提示 (“机器人一级指令:” + bot.一级指令)bot.消息类型 = 2 ' 0=收到闲聊 1=收到群聊 2=群聊被@' 当在群里有人@你时 回复 有什么事吗?回复微信消息 (“发送消息”, “”, bot.微信群ID, bot.微信ID, “有什么事吗?”, , bot.消息类型) ' 发送消息 为固定的 Python 收到前面几个字为发送消息说明要给用户发送消息了 二级指令 填写空 方便二次开发的时候 发送消息里面处理更多事返回 ().如果真结束
如果你不会go语言或python可直接使用易语言进行开发提示,运行 机器人发送信息Demo.e 如图 点击发送消息给用户即可发送想要的消息,然后具体逻辑自行开发
最后由于时间关系,文章没有写java用户demo,java或其他编程用户,只需在本机监听TCP监听8866端口后运行main.py,即可接收到用户发来的消息,如果需要给用户发送消息可以使用TCP按照如下连接字符串发送即可
发送消息=_^||^_=null=_^||^_=群IDl=_^||^_=微信id=_^||^_=要发送的内容=_^||^_=参考资料
https://github.com/lich0821/WeChatFerry
https://github.com/lich0821/wcf-client-rust
https://github.com/lich0821/WeChatRobot
https://github.com/microsoft/vcpkg/releases
https://mp.weixin.qq.com/s/CGLfSaNDy8MyuyPWGjGJ7w
https://github.com/CliffHan/wechat-bot
关注公众号<TEST安全>回复机器人即可获取下载地址,欢迎添加作者交流
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...