群发技术-使用python3给微信好友群发消息
本文介绍如何给个人微信好友群发消息。
微信个人号中的群发助手可以一次给30个发送消息,如果要给所有所有群发,则需要自己手动发送多次,或者借助程序实现了。本文即是程序实现教程
一、原理
在微信的官方网站上 https://weixin.qq.com/,提供了一个网页版的微信,地址为
https://wx.qq.com/
登录该网页版微信后,可以在网页上给对方发送消息,通过抓包分析网页交互,可以得到发送消息的接口,然后使用程序调用该接口,就可以给好友发送消息了。
把所有好友都找出来,然后排列依次给他们发送消息,这样就是群发。
二、itchat库
如果我们需要自己来分析这个接口,也不是不可以,但需要费时费力。github用户littlecodersh已经做好了这个工作,它把接口都找出来,封装成python语言下的itchat库。我们直接调用这个库就可以了。
三、使用方法
由于这是一个python下的库,我们需要安装python。下载安装很简单,百度上就可以找到很多方法,这里就不多说了。
安装好后,需要安装该库。
使用命令
pip install itchat
安装好之后,在程序中引用该库
import itchat
调用登录接口
itchat.auto_login(hotReload=True)
程序会在命令行返回信息
并返回一个二维码用于扫码登录
扫描之后,提示登录成功,显示自己的微信昵称
然后拉取好友列表
使用命令
friends = itchat.get_friends()
拉取到的好友列表如下所示
第一个是自己
好友的数据格式是这样子的
{
"MemberList":<ContactList: []>,
"Uin":0,
"UserName":"@80d139ab364336b3eec88bab24ef227b37b60eadd7f25a0a3501bb56f13f51c3",
"NickName":"白加黑",
"HeadImgUrl":"/cgi-bin/mmwebwx-bin/webwxgeticon?seq=620814557&username=@80d139ab364336b3eec88bab24ef227b37b60eadd7f25a0a3501bb56f13f51c3&skey=@crypt_369d833a_713bf12e3cf985301ee19ce3c14b8316",
"ContactFlag":3,
"MemberCount":0,
"RemarkName":"",
"HideInputBarFlag":0,
"Sex":2,
"Signature":"情人节快乐。",
"VerifyFlag":0,
"OwnerUin":0,
"PYInitial":"BJH",
"PYQuanPin":"baijiahei",
"RemarkPYInitial":"",
"RemarkPYQuanPin":"",
"StarFriend":0,
"AppAccountFlag":0,
"Statues":0,
"AttrStatus":4161,
"Province":"北京",
"City":"海淀",
"Alias":"",
"SnsFlag":17,
"UniFriend":0,
"DisplayName":"",
"ChatRoomId":0,
"KeyWord":"",
"EncryChatRoomId":"",
"IsOwner":0
}
其中的UserName字段,就代表用户的唯一标识,给这个标识发信息,对方就能收到。
然后循环遍历好好列表,并调用接口给好友发送信息
代码如下
itchat.send("情人节快乐", toUserName=friends[i]['UserName'])
这样就可以给所有用户发送这一消息了。
发送效果如下
从中可以看到,有的人把自己清除掉了,以牙还牙,我们也把对方从好友删除掉。
四、注意事项
新注册的微信账号没有网页版登录权限
群发的时候,每次发送最好间隔比较长的时间,至少2秒以上。
五、群发代码下载
关注微信公众号方倍工作室,在公众号聊天窗口中,回复 1347 ,凭积分兑换
最新文章
- c# 我所理解的 值类型 and 引用类型
- 【技巧】“Plugin execution not covered by lifecycle configuration...“异常的处理
- Java操作SFTP
- [转载]NoSQL数据库的基础知识
- MySQL分区表的使用
- meta的Name为apple-itunes-app 是什么意思
- 结构体dtuple_t
- NET Portability Analyzer
- Java面试题之Class.forName的作用
- c#有关udp可靠传输(包传输数据包) 升级
- hadoop环境中误删除tmp文件夹的恢复
- JQ 标签相关知识
- 勤拂拭软件 java web 开发教程(1) - 开发环境搭建
- IntelliJ IDEA 使用 Git 并将 GitHub 作为远程代码仓库
- 1ci
- 伪分布式hbase2.6.5和hbase1.1.2的配置
- 推送证书p12文件转换成pem的命令
- {python}完成完整的温度转换程序 猜数字游戏(猜价格,猜年龄等) 解析身份证号、学号不同片段的含义
- [原创]Allegro 导入DXF文件,保留布好的线路信息
- 六角填数|2014年蓝桥杯B组题解析第七题-fishers