写一个新的Python微信机器人

前言

之前写的Python微信机器人系列,看数据倒是有一些人关注,交流群也有两百多人,但是真正使用的没几个,而会去看文章学习原理的没有一个。

Python其实并不适合做hook,注入Python去实现hook和主动调用甚至都不如frida,因为注入特征太明显,Python会将所有的dll都会加载到目标进程,而frida只会加载一个dll到目标进程。

当然,注入Python在实现和写代码上是比frida要方便的,比如定义结构体,调用函数等,还可以使用Python丰富的第三方库。那有没有方法既能隐蔽注入和hook,又能使用Python呢?

更好的方式

我们其实可以使用C++来做核心,C++有着非常多成熟的hook开源库,github上的一些无痕hook代码都是C++的,例如利用VEH异常处理机制hook,或是从驱动层做hook。这些hook方式不会修改内存字节码,能轻松过crc检测。

然后在主程序里加载Python作为脚本语言使用,并和C++写的dll做通信的话,既能隐蔽hook,也能使用Python丰富的第三方库。不过,封不封并非只靠客户端来判断,还有服务端的异常行为判断,比如频繁加好友等异常行为。

测试用一个注册两周的号来做视频号自动解析群,已经正常运行一个月了,有需要自动解析的,也可以进群测试一下,免费的。

不开源

有人说,开源可以让更多人帮忙写代码,但其实,哪有人无私给你奉献代码,仓库的维护人永远只是那么几个人。大部分人即使优化了代码,也只会是想着这代码怎么才能卖钱。

所以这个版本不开源,而且收费,不过会给一个试用期(两个月),如果觉得好用再按月付费。另外,一些灰色产业相关的功能就别问了,不会添加,这个只是给个人提供一些可玩性。

使用门槛

如果你只需要当前已有的插件的一些功能,那基本不需要什么门槛,就只需要当一个exe执行一下。但是你如果想自定义插件实现自己的需求,那么需要会Python的基础语法。不要一来就问Python代码怎么写了。

功能列表

这里只做个概述,后面会写文章说明每个插件怎么写的,用了哪些功能,还有效果展示。

发送消息:
  • 文本消息
  • 图片消息
  • AT消息
  • xml消息
  • 表情消息
  • 名片消息
  • 拍一拍消息
  • 文件消息
  • 小程序消息
  • 引用消息
  • 转发消息
  • 撤回消息
CDN下载:
  • 下载视频
  • 下载图片
  • 下载文件
其他功能:
  • 获取微信文件路径
  • 获取自己的登录信息
  • 获取语音文本内容
  • 获取语音内容
  • 接收转账
  • 退还转账
好友相关:
  • 网络获取好友信息
  • 编辑好友备注
  • 内存获取好友信息
  • 获取好友列表
  • 检测好友状态
  • 同意好友请求
群相关:
  • 获取群列表
  • 邀请好友进群
  • 修改自己的群昵称
  • 修改群名称
  • 设置群公告
  • 发送群邀请
  • 删除群成员
  • 获取群成员昵称
  • 获取群成员列表

使用步骤

依赖环境

微信(版本3.9.6.32) ,下载地址: https://www.123pan.com/s/ihEKVv-u4Ox.html 提取码:yw41

里面有两个文件,zip是从exe用7zip解压得到的,可以作为绿色版直接使用(这样可以不用卸载之前安装的微信)。

hook程序下载:https://github.com/kanadeblisst00/pywxrobot

启动

先以管理员权限启动微信并登录, 打开pywxrobot.exe就会加载pyrobot目录下的main.py,相当于运行python main.py,只不过exe提供了一些功能函数给python使用。

main.py里的代码只是用于初始化插件,也就是plugins目录里的代码。

pyrobot目录结构
  • .vscode: vscode的配置,用于配置语法提示
  • packages: 依赖的一些其他包可以放在这个目录,这个目录默认已经加到sys.path
  • plugins: 由pywxrobot的插件目录,可以是py文件或者文件夹(需包含init.py)。
  • other_plugins: 不依赖消息机制的插件,可以在命令行使用pywxrobot.exe 插件.py执行。
  • settings: 配置文件目录,文件名需和插件名一样
  • test: 没什么用,我写的一些测试脚本
  • .env: 可以设置packages的路径,这样引用packages里的包在vscode里就有语法提示了
  • main.py: 启动文件
  • requirements.txt: 依赖包,便携版Python已经带了这些依赖。如果想用安装版Python需要自己安装这些依赖
已有的插件列表

消息插件:

  • auto_accept_friend.py: 自动接受好友请求
  • auto_download_file.py: 自动下载聊天文件
  • auto_download_img.py: 自动下载聊天图片,可以配置auto_download_img.json里的save_path来解密保存到其他目录
  • auto_download_video.py: 自动下载聊天视频
  • auto_recv_transfer.py: 自动接收转账
  • auto_save_emotion.py: 将接收到的表情包保存到指定路径,
  • auto_save_voice.py: 将收到的语音保存到指定路径(格式silk)
  • debug.py: 控制台和日志打印所有消息,可通过配置文件关闭
  • echo_revoke_msg.py: 打印撤回的消息
  • enter_room_tip.py: 设置进群提示语,例子请看配置文件
  • interactive_console.py: 如果启用,会在控制台开启一个python的交互式终端
  • keyword_invite_to_room.py: 根据关键词邀请进群,会判断两个内容,聊天消息和加好友的验证消息
  • sysmsg_manager.py: 内置插件,不需要管
  • xml_manager.py: 内置插件,不需要管

其他插件:

  • foreach_check_friends_status.py: 无感知检测所有好友状态(删除、拉黑和好友)
  • export_friends.py: 导出好友列表
  • export_rooms.py: 导出关键词列表
  • export_bizs.py: 导出公众号列表

待开发插件

  • 关键词回复
  • 导出群成员列表
  • 对接大模型回复,例如kimi、gpt等
  • 群聊成员去重
  • 公众号消息监听
  • 公众号直播提醒
  • ...

如何开发插件

编写插件

首先需要知道两个点:

  • 如何获取到聊天消息
  • 如何主动调用函数

编写好的插件放到pyrobot/plugins目录,然后关闭重新打开pywxrobot.exe就会生效。如果是不依赖消息的插件,放到pyrobot/other_plugins目录下, 在命令行运行pywxrobot.exe pyrobot\other_plugins\插件.py就能运行。

如何获取到聊天消息

broadcast_service.listen(消息类型, 处理函数)

当收到这个类型的消息,就会调用处理函数,具体可以参考其他插件的写法。每个处理函数是一个单独的线程,使用公共资源时需要加锁。

所有消息的类型定义在wxstruct.py里的MsgTypeXmlMsgTypeSysMsgType

MsgType有以下属性:

  • TEXT: 文本消息
  • IMAGE: 图片消息
  • VIDEO: 视频消息
  • VOICE: 语音消息
  • ADDFRIEND: 好友请求
  • CARD: 名片消息
  • EMOTION: 表情消息
  • LOCATION: 位置消息
  • XML: XML消息,可能是文件、转账、文章、小程序、聊天记录等
  • VOIP : 语音、视频通话
  • NOTICE: 通知消息,可能是进群提示、红包、拍一拍等
  • SYSMSG: 系统消息, 很多我也不知道是什么

xml_manager插件会进一步处理XML类型消息,生成以下类型消息:

  • BIZMSG: 分享的文章
  • FILE: 文件
  • SHARE_LOCATION: 位置共享
  • MULTI_MSG: 合并发送的多条消息
  • STEP_RANK_MSG: 微信运行发送的步数消息
  • APPMSG: 分享的小程序
  • FEED: 视频号
  • REFERENCE_MSG: 引用回复
  • ROOM_ANNOUNCEMENT: 群公告
  • TRANSFER: 转账

如果有些消息没有定义,你可以在wxstruct.py里定义一个名称,值是消息里msg_type的值。定义完成后,broadcast_service.listen就可以监听该类型的消息。

如何导入外部依赖

如果是安装版Python,用pip安装即可。如果是便携版,你需要从安装版里复制出来放到packages下,或者是用便携版Python下载一个pip,再用pip安装到指定文件夹。有些库这么操作可能会报错,这个自行解决或者直接使用安装版Python。

如何主动调用函数

导出微信函数的模块名是wxfunc,所有函数列表可以看wxfunc.pyi,使用案例请看docs目录下的文档

例如你想在插件里发送文本消息:

import wxfunc

wxfunc.SendTextMsg("filehelper", "测试消息")

待补充

详细版的文档后面补充,后面的更新插件会在: https://github.com/kanadeblisst00/pywxrobot

功能介绍 ### 好友功能 针对微信好友的一些功能,如自动通过好友申请,与使用机器人好友聊天等 #### 1.自动通过好友申请 可匹配好友申请时的消息中关键字,例如:请求添加好友说明中包含"加群",则通过申请,其他则不做处理! #### 2.机器人聊天 目前聊天仅支持文字 wxpy库已经深度整合图灵机器人与小i机器人,目前暂时只接入图灵机器人,后面可实现管理员口令自动切换 管理员可远程控制开关。 ### 群功能 #### 1.机器人群聊 群聊中回复好友,默认开启并且需要@机器人,可在`config.py`修改默认配置! 如果配置了机器人管理员则可以用关键字远程控制相关配置。 #### 2.监控群分享 群中如果有谁发分享文章,机器人则会转发至机器人管理员,方便管理员第一时间监控是否有人发广告! 默认关闭,开启需要`config.py`中配置监控群。 管理员可远程控制开关。 #### 3.监听某人 监听某人(如老板)在群聊中的消息,只要他在某群中发布了消息则将消息转发至管理员! 默认关闭,开启需要config.py中配置监听群。 管理员可远程控制开关。 #### 4.转发至群 如果开启转发模式,管理员发送消息给机器人后,机器人将消息转发至指定群,如转发至:Python交流1群...Python交流n群。 默认关闭,开启需要`config.py`中配置转发群。 管理员可远程控制开关。 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
2021年最Python微信机器人一个基于Python编程语言的应用程序,旨在通过与微信平台的互动来提供自动化、智能化的服务。 这个Python微信机器人可以通过登录微信账号,获得相应的授权,然后通过微信提供的API接口进行消息的发送与接收。它可以实现自动回复、群发消息、朋友圈操作等各种功能。 为了开发一个高效的微信机器人,我们可以使用第三方库,比如wxpy、itchat等,它们提供了简洁易用的接口,方便我们与微信平台进行交互。 具体而言,我们可以使用Python代码来实现以下功能: 1. 自动回复:通过监听接收到的消息,可以根据消息内容自动回复相应的内容。可以设置关键词触发回复,也可以根据正则表达式匹配进行回复。 2. 智能聊天:结合自然语言处理技术,可以实现一些简单的对话功能。比如,将接收到的问题转化为语义,然后根据预先定义好的回答模板来生成回答。 3. 微信好友管理:可以获取好友列表、添加删除好友等功能。 4. 群发消息:可以实现向多个好友或者群聊发送相同内容的消息。 5. 其他功能:还可以实现一些特定的功能,比如朋友圈的自动点赞、自动评论等。 总之,通过开发一个Python微信机器人,我们可以实现自动化回复、智能聊天、微信好友管理等多种功能,为用户在微信平台提供更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值