如何利用Web版微信接口查看是否被好友删除

前两天朋友圈被一篇文章《黑科技,Python 脚本帮你找出微信上删除你好友的人》刷屏了。
这篇文章说道,以为Github上的大神Ox5e利用Python写了一个脚本自动帮你测试哪些好友把你删了,并且不会打扰到对方。
这个项目在Github上短短几天时间就获取到了3000多个Star。
这是什么概念?
如果你在Github上获得了100个Star,去腾讯应聘的话可以免掉笔试。
Python最出名的Web框架django一共有17000多个Star。
很多朋友很奇怪这是这么实现的了?
笔者在读完他的源码后,大概了解了背后的原理。
下面就跟着笔者一起来揭秘这个背后的原理吧!
原理就是用微信网页版的接口,新建群组,如果加不进来就是被删好友了(不要在群组里讲话,别人是看不见的)
具体的技术上的实现原理如下:
获取uuid
打开Web版微信,使用chrome的审查元素,查看network请求,可以找到jslogin
请求,如下图,这个请求返回QRLogin
的uuid,正是生成二维码登陆的必要参数。
获取登陆二维码
拿到uuid之后,我们直接访问带uuid的链接即可获取登陆二维码
链接如下:
https://login.weixin.qq.com/qrcode/Iamuwcej-Q==
登陆
当我们拿起手机扫二维码的时候,我们发现,微信web端发起一个请求
并进入等待状态,当我们手机按下确认登陆按钮是,Web端登陆成功,并返回登陆成功。
访问redirect_uri,即可获得,登陆信息
初始化页面
拿到上面的信息之后,需要初始化微信界面,微信是通过以下方式初始化的
初始化的之后,可以获得当前用户信息
获取联系人
这时候点击已经登陆的页面的查看过联系人,可以发现,会有以下请求,返回结果可以得到所有联系人(包括公众号/服务号,群聊,联系人等等),筛选出所有联系人即可。
创建群聊
手动点击创建群聊,并选中部分好友,会有以下请求:
创建群聊
添加好友
通过返回状态码,即可判断是否被删除(MemberStatus=4,表示被对方删除)如下图:
最后,要说的是,查询的结果会引起心理上的不适,请谨慎使用(刚发现十几个女生都把我删了,不说了,让我去哭一会)
参考:
https://github.com/xiangzhai/qwx/blob/master/doc/protocol.md
https://github.com/0x5e/wechat-deleted-friends/blob/master/wdf.py