目前微信网页版限制登录,wxpy等模块操作微信的手段都无法使用了,前阵时间发现了WechatPCAPI这个模块,通过dll注入的手段实现操作微信,下面分享一下该模块的使用方法。

运行环境

WechatPCAPI这个模块对运行环境的要求还是比较苛刻的,需要使用旧版本微信与python3.7
模块下载地址:
https://github.com/terrywangt/WeChatBot
github下载的模块中包含了旧版本微信,路径如下:

WeChatBot-master.zip\WeChatBot-master\botWeb\bot\Wechat-V2.7.1.82.exe

登录微信

运行以下代码即可弹出微信登录界面,on_message函数用来处理接收到的消息。

from WechatPCAPI import WechatPCAPI
import time
import logging
from datetime import date
from queue import Queue
import threadinglogging.basicConfig(level=logging.INFO)def on_message(message):# 打印接收到的消息print("message->:",message)def main():wx_inst = WechatPCAPI(on_message=on_message, log=logging)wx_inst.start_wechat(block=True)while not wx_inst.get_myself():time.sleep(5)threading.Thread(target=thread_handle_message, args=(wx_inst,)).start()if __name__ == '__main__':main()

使用Queue()处理消息

这一步是非必须的

在这里插from WechatPCAPI import WechatPCAPI
import time
import logging
from datetime import date
from queue import Queue
import threading
from queue import Queuequeue_recved_message = Queue()
logging.basicConfig(level=logging.INFO)def on_message(message):queue_recved_message.put(message)def thread_handle_message(wx_inst):"""消息处理 分流"""while True:message = queue_recved_message.get()print(message)# 往下加入你的消息处理代码def main():wx_inst = WechatPCAPI(on_message=on_message, log=logging)wx_inst.start_wechat(block=True)while not wx_inst.get_myself():time.sleep(5)threading.Thread(target=thread_handle_message, args=(wx_inst,)).start()if __name__ == '__main__':main()

收到的message结构

要想对消息进行处理,首先要了解收到的数据是什么结构的,主要有以下四种结构

收到的好友聊天消息结构如下,type为msg::single

        {'user': '自己的默认微信号,,修改微信号后也不会改变', 'type': 'msg::single', 'data': {'data_type': '1', 'send_or_recv': '0+[收到]', 'from_wxid': '好友默认的微信号,修改微信号后也不会改变', 'time': '2022-01-21 15:11:04', 'msg': '好友发送的信息', 'from_nickname': '好友昵称,不是备注'}}

收到的群聊天消息结构如下,type为msg::chatroom

       {'user': '自己的默认微信号,,修改微信号后也不会改变', 'type': 'msg::chatroom', 'data': {'data_type': '1', 'send_or_recv': '0+[收到]', 'from_chatroom_wxid': '群聊id,形如12756220923@chatroom', 'from_member_wxid': '发消息群员的微信号','time': '2022-01-26 15:30:03', 'msg': '收到的消息', 'from_chatroom_nickname': '群聊名称'}}

还有两个类型的数据 friend::person和friend::chatroom,分别是好友基本信息和群聊基本信息,登录微信后会首先获取这两种数据,可以通过处理这两种数据来获取所有好友和群聊的相关信息

all_users = {}      # 微信所有好友
all_chatroom = {}   # 微信所有群聊
# 捕获friend::person和friend::chatroom,获取全部微信好友和群聊
if message['type'] == 'friend::person':all_users[message['data']['wx_nickname']] = message['data']['wx_id']
if message['type'] == 'friend::chatroom':all_chatroom[message['data']['chatroom_name']] = message['data']['chatroom_id']

发送消息

发送给个人或群聊都通过以下形式

wx_inst.send_text(to_user=微信号或群聊号, msg=要发送的内容)

调用天行机器人自动回复信息

首先从以下网址注册天行机器人接口
https://www.tianapi.com/apiview/47
注册接口后获得一个key,复制key填入下面的代码即可

tx_url = 'http://api.tianapi.com/txapi/robot/index?key={}&question={}'
tx_key = '你注册获得的key'def tx_robot(msg):"""将接收的消息发送给天行机器人,并返回内容"""r = requests.get(tx_url.format(tx_key, msg)).json()code = int(r['code'])msg = r['msg']if code != 200:print(f'【错误】错误代码{code}:{msg},请检查配置项"tx_key"。')return r["newslist"][0]["reply"]def on_message(message):if message['type'] == 'msg::single':wxid = message['data']['from_wxid'] # 好友微信号msg = message['data']['msg']        # 收到的消息name = message['data']['from_nickname']send_or_recv = message['data']['send_or_recv']# 如果不判断send_or_recv会无限制发送消息,自己和自己对话if send_or_recv == '0+[收到]':wx_inst.send_text(to_user=wxid, msg=tx_robot(msg))

结尾

WechatPCAPI模块基本的操作就是这些了,剩下的就是加入你的消息处理代码,可以实现群发、自动回复等功能,也可以通过向自己的文件传输助手发送特定的信息来控制这些功能的开关。
笔者通过WechatPCAPI写了一个包含图灵/天行机器人自动回复、模板式自动回复、群发功能的程序,有兴趣的读者可通过下面链接进行下载。
微信自动回复、群发程序

利用python实现微信自动回复群发等操作(不需要登录网页版微信)相关推荐

  1. 为什么你会被限制登录网页版微信?

    有一个词叫做"三月爬虫",指的是有些学生临到毕业了,需要收集数据写毕业论文,于是在网上随便找了几篇教程,学了点requests甚至是urllib和正则表达式的皮毛,就开始写爬虫疯狂 ...

  2. 微信群控系统制作系列一——java模拟登录网页版微信

    PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...

  3. 快速解决无法登录网页版微信的问题,亲测有效

    在公司开发测试阶段,需要使用网页版微信对开发页面进行调试,但是我的两个微信号在扫码登录网页版微信时,都出现了以下提示: 为了你的帐号安全,此微信号不能登录网页微信.你可以使用Windows微信或Mac ...

  4. python登录网页版微信发送消息

    # coding=utf-8 import datetime import time from selenium import webdriverurl = "https://wx2.qq. ...

  5. Python+机器人:(wxpy问题)我的微信号不能登录网页版微信,还能使用微信机器人吗?

  6. 网页版微信自动群发消息

    操作步骤: 登陆网页版微信 打开开发者工具 打开 console 控制台 粘贴一下代码到控制台并回车 实现原理 遍历好友列表 修改输入框文本 点击发送 // 拿到所有聊天对象(仅限当前网页上展示的内容 ...

  7. python爬虫+网页版微信实时获取消息程序

    项目需求: 目的是24小时爬取各种软件的讯息并且以一种统一的方式集中发送给自己. 实现方法: 利用python的requests库以及wxpy库,前者用来爬取网页,后者用来将爬到的内容发送给自己. 程 ...

  8. 再见,itchat!再见,网页版微信!

    点击上方"编程派",选择设为"设为星标" 优质文章,第一时间送达! 有一个词叫做"三月爬虫",指的是有些学生临到毕业了,需要收集数据写毕业论 ...

  9. 利用python进行png图像的读写操作

    利用python进行png图像的读写操作 最近遇到了对png灰度图像进行读取,并统计图像中众数的需求,现将代码记录如下.ps:适用于单波段图,形如(X,Y). 1.导入需要的包 import matp ...

最新文章

  1. 【重磅】斯坦福李飞飞最新《注意力与Transformer》总结,84页ppt下载!
  2. pthread_mutex_lock 和 pthread_mutex_unlock
  3. Apache软件基金会宣布Apache Unom成为顶级项目
  4. 帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML
  5. 鸿蒙HI3516-HAP的编译-2021426
  6. Windows学习总结(8)——DOS窗口查看历史执行过的命令的三种方式
  7. petshop4.0 详解之五(PetShop之业务逻辑层设计)(转帖)
  8. Element UI 官网以及其他技术文档
  9. Fences中关于Explorer非正常关闭问题
  10. 【学会了学会了】Flink官网翻译——Flink集群部署概览
  11. 张江男曲折的出国梦_IT新闻_博客园
  12. MATLAB频数表-tabulate/hist
  13. 台积电、高通“示好”华为:恢复供货?
  14. c语言编程cosx近似值,编程利用公式求 cosx 的近似值(精度为10-6):
  15. 测试人员如何管理项目与风险预警
  16. MS Office for Mac的Clipart错误
  17. nyoj 1239-引水工程 //并查集
  18. 清单革命 <<读后感>> _(:з」∠)_
  19. Docker的文件系统
  20. 111个Python数据分析实战项目,代码已跑通,数据可下载

热门文章

  1. SQL优化步骤(建议收藏)
  2. 华硕服务器如何重装系统,华硕win10重装系统步骤
  3. Kubernetes监控:Dashbaord 2.0.0部署方式
  4. MATLAB用相干解调DSB信号,AM DSB信号解调的MATLAB实现
  5. (4)Dojo学习之动画学习
  6. remix Web3 provider连接不上探究
  7. 图文讲解 WiFi 驱动移植过程,很肝~
  8. 社会生活中的著名法则- -
  9. 【HDFS】HDFS文件块大小(重点)
  10. 产品可靠性研究不可不知的知识之MTTF