
微信群中的广告骚扰,通常被称为“牛皮癣”,是群主们最为痛恨的一类用户。这些用户在群里毫无顾忌地发布小广告,严重影响了群内的交流氛围。早期的读者或许知道,我有一个技术交流群,但自从建立以来,就一直受到小广告的困扰。广告者伪装成正常用户,持续不断地发送广告信息,扰乱了我们原本良好的交流环境。

此外,他们还会悄无声息地骚扰每一个群成员。

虽然不清楚是什么原因驱使他们不遗余力地成为微信群的广告狂,但在经历了多次骚扰后,我开始思考是否可以利用Python来解决这个问题。
第一步
最初,我的思路非常简单,主要分为两步:首先识别出这些广告用户,然后用Python将他们踢出群聊。然而,这两步都并不容易。首先是如何准确识别这些用户,网上缺乏相关数据和有效的鉴别标准,因此我只能依靠自己的思维进行特征识别。经过几个月的观察和近百个广告用户的样本训练,我的“人工智能”基本可以判断出一个非正常用户至少满足以下几条中的三条以上:
- 未设置微信号
- 头像为网红女生
- 微信名为特殊符号或表情
- 未发过朋友圈
- 没有朋友圈背景图
- 通过后没有其他回复(除了进群申请)
根据历史数据,符合第一条和第三条的用户很可能是小广告爱好者。接下来,我的目标是用Python编写代码,找出这些用户。然而,随着我对这一规律的总结,我原本乐观地认为实现这一需求并不复杂。几年前,我就曾研究过Python与微信好友的关系,使用wxpy或ITchat都不算困难,但现实告诉我,我还是太年轻了。
不知从何时起,虽然这些库仍然可以安装,但微信已经基本禁止大部分用户通过网页版登录。因此,当我尝试用多个微信号扫描登录二维码时,无一例外都收到了提示:
1203 为了你的帐号安全,此微信号已不允许登录网页微信。你可以使用Windows或Mac版微信在电脑端登录。
这让我感到非常棘手,毕竟不可能手动逐一检查我的几千个微信好友。于是,我开始思考其他解决方案。
第二步
如果你经常编写Python爬虫,你可能知道在某些情况下,与其使用requests处理复杂的反爬措施,不如使用Selenium来操作更为便捷。因此,当发现基于微信API的方法失效后,我转向了另一个相对简单的方法——pynput。
pynput是一个可以使用Python控制和监控电脑鼠标和键盘的第三方库。现在你大概明白我想做的事情了。如果直接用API获取数据不可行,那我就像Selenium一样,模拟点击每一个好友以实现我的目标。
接下来简单介绍一下这个库。由于依赖库不多,安装非常简单,只需通过命令 即可,使用起来也很方便,对于鼠标操作只依赖坐标,下面是一个简单的演示。
