微信群总有人发广告?用Python写一个自动化机器人消灭他
时间:2025-11-05 11:54:58 出处:数据库阅读(143)

微信群牛皮癣,微信指的群总器人是在微信群里毫无下限的群发小广告的用户,是有人微信群主最痛恨的一波人。如果熟悉早起的发广读者可以知道我有一个技术交流群,但是告用自从建群以来就饱受小广告的困扰。他们伪装成正常人混进群然后不停的写个消灭发送广告轰炸,严重的自动打乱了群内的技术交流气氛。

或者是化机一声不吭的去骚扰每一个群成员。

虽然不清楚是微信什么能够驱使他们这样不折不扣的努力成为最强微信群牛皮癣(可能是钞能力),但在经历太多次的群总器人骚扰之后,我开始思考是有人否可以用Python消灭他们。
第一回合
其实一开始的发广思路很简单,总共分两步,告用首先成功识别出这些人再用Python将他们踢出去即可。高防服务器写个消灭
但是自动这两步,每一步都不简单,先来说说第一步如何准确的识别这些用户,网上没有数据也没有一个好的鉴别标准,只能用我的大脑完成特征识别。经过这几个月,近百份发广告用户的样本训练,我这个“人工智能”基本可以判断一个非正常用户至少满足下面几条中的三条以上:
没有设置微信号 头像为网红女生 微信名为特殊符号或者表情 没发过朋友圈 没有朋友圈背景图 通过后不会有除进群申请外的其他回复并且根据历史数据,符合1、3条的用户有极大概率为小广告爱好者,那么接下来要做的就是用Python写代码找出微信里面的这些人。在总结出这一规律后很乐观的认为实现这一需求并不困难,因为我在几年前就曾拿过Python研究微信好友,不论是wxpy还是itchat操作起来应该都不复杂,但是事实确证明我还是太年轻了
不知从何时起,虽然这些库还能安装使用但是微信基本已经禁止了大部分人的源码下载网页版微信登陆权限,因此当我使用多个微信号分别扫完登陆微信的二维码之后,无一例外的提示我
<error><ret>1203</ret><message> 为了你的帐号安全,此微信号已不允许登录网页微信。 你可以使用Windows微信或Mac微信在电脑端登录。 </message></error>这就让人头疼了,总不能手动的去一个一个check我的几千个微信好友吧,于是我开始思考是否有其他的解决办法。
第二回合
如果你经常写Python爬虫,那么你会知道在有些情况下,与其使用Requests对付一些恶心的反爬措施,不如Selenium操作起来方便。所以在发现想使用基于微信API的思路失效后,我将目光转向了相对笨一点的方法————pynput
pynput是一款使用Python来控制和监控电脑鼠标、键盘的第三方库,说到这里你大概明白我想怎么做了,直接用API取数据搞不定,那么我就像Selenium一样,模拟点击一个一个好友来实现我想要的操作。IT技术网
下面简单说一下这个库,因为没有太多依赖库所以安装起来很简单,直接pip install pynput即可,使用起来也很简单,对于鼠标操作只依赖坐标,看个demo👇

就像上面GIF演示的一样,先导入pynput并实例一个鼠标控制器,接着将微信在状态栏的位置提交给mouse.position,这样鼠标就会移动到该位置,再使用mouse.press来模拟鼠标点击即可自动打开微信。那么问题来了,如何获得我想要的位置的坐标?总不能一点一点试吧!
pynput除了使可以使用Controller来控制鼠标,也可以监控鼠标,比如使用下面的代码就可以记录下程序启动后鼠标的每一个点击操作所在的位置👇
from pynput import mouse def on_move(x, y ): print(鼠标移动至 .format( (x,y))) def on_click(x, y , button, pressed): print( 在坐标 {1}.format(鼠标点击 if pressed else 鼠标释放, (x, y))) if not pressed: return False while True: with mouse.Listener(on_moveon_move = on_move,on_clickon_click = on_click) as listener: listener.join()
那么接下来的任务就简单了,我们只需要保持微信窗口不移动,在记录下每一个关键位置的坐标(微信图标位置,群聊窗口位置,单个群成员头像位置)之后,比如我们想对上面说的第一条规则进行判断即获取每一个群成员微信号是否设置,就可以按照模拟以下操作实现:
点击微信app 点击需要的群聊 依次点击每一个群成员头像 移动到微信号的位置 双击该微信号 复制该微信号判断是否为初始微信号在上面的过程中,值得说的是最后一步,复制我们可以使用pynput中的键盘控制器,在双击选中对应微信号之后通过下面的代码实现模拟键盘输入Command + C完成复制操作
from pynput.keyboard import Key from pynput.keyboard import Controller as Controller1 keyboard = Controller1() with keyboard.pressed(Key.cmd): keyboard.press(c) keyboard.release(c)但是粘贴则不需要使用pynput通过模拟command+c来粘贴到另一个编辑中复杂过程,我们可以使用第三方库pyperclip,直接通过下面两行代码即可将复制好的文字转为字符串
import pyperclip pyperclip.paste()在将群成员的微信号转换为字符串后,不论我们是通过判断字符串的长度还是用正则表达式或者是其他的方法都可以轻松的判断该成员的微信号是否为初始微信号,实现规则1的判断,下面的代码与动态图就是获取第一个群成员微信号的完整过程
from pynput.mouse import Button, Controller import time from pynput.keyboard import Key from pynput.keyboard import Controller as Controller1 import pyperclip mouse = Controller() # 点击微信 mouse.position = (1046.14453125, 4.546875) time.sleep(2) mouse.press(Button.left) mouse.release(Button.left) #点击头像 mouse.position = (1194.140625, 441.05859375) time.sleep(1) mouse.press(Button.left) mouse.release(Button.left) # 点击选中文本 mouse.position = (965.60546875, 284.0390625) time.sleep(1) mouse.click(Button.left, 2) keyboard = Controller1() with keyboard.pressed(Key.cmd): keyboard.press(c) keyboard.release(c) time.sleep(1) wechatid = pyperclip.paste() print(f"微信号{wechatid}疑似广告号" if len(wechatid) > 20 else f"微信号{wechatid}不是广告号")
可以看到成功将早小起的微信从广告号中排除

那么接下来只需要记录下每两个群成员之间间隔的坐标距离,之后循环去模拟滚动或者下拉来实现上述过程,就可以将群里所有成员的微信号根据规则1进行判断,找到异常的那些成员单独进行判断。

可以看到最终是找到了6个疑似广告号的微信,接下来通过其他规则的手动判断最终将两个用户判定为广告高风险用户并移除。
写在最后
通过上面的操作,虽然成功的踢出了两个疑似广告号,但总体来说还是败了。因为依旧很难去判断是否真的踢对了人,如果踢错了,那么则粉丝-1,同时也可以发现想用Python准确找到群里的牛皮癣还是非常困难的,使用pynput最多可以完成微信名、微信号及头像(使用识图API)的判断,但是朋友圈隐藏的更多信息却很难提取挖掘。
同时pynput有着和selenium同样的缺点,那就是由于模拟真人操作而导致的速度慢,并且它的定位方式仅支持坐标,所以还需要保证在操作的过程中微信窗口不可以被移动,否则之前记录的元素将全部失效,此处建议开发者可以升级更多的定位方式。
猜你喜欢
- 密码错误后自锁多久?解析密码错误自动锁定功能的作用与设置(密码错误自动锁定的时间设置和安全保护)
- 电脑密码错误的原因及解决方法(为什么电脑会出现密码错误?如何解决密码错误问题?)
- 现在,年轻人通过互联网看电视,已经是一种挡不住的趋势。在 Ubuntu 平台,收看电视直播的途径比不上其他操作系统多,但也足够用。1、点击启动 Firefox,访问电视直播网站。直播地址可以通过百度搜索得到。2、进入一个直播频道,等待广告播完,直播窗口中将会出现“需要安装插件,请点击左上角允许安装请求”的提示。3、将鼠标移动到 Firefox 左上角,它的地址栏左侧有个绿色的拼图形状的图标,我们点击它,可以看到当前被 Firefox 阻止的直播插件提示。4、点击“允许”按钮,Firefox 开始下载直播插件软件,并且很快就弹出插件安装对话框。我们直接点击“立刻安装”。5、安装过程也很快,最后 Firefox 提示重启浏览器。6、重启 Firefox,进入直播网站,尽情享受网络电视直播带给我们的新鲜画面吧。直播窗口自带播放控件,从左至右三个椭圆内的三个控件分别是:播放/暂停,音量,全屏切换。7、这个网站的直播频道还是挺全的。可以自由选择各种来源的直播频道。8、Firefox 中已经安装的插件,在其“附加附件”功能中进行管理。点击浏览器右上角的汉堡菜单——>“附加组件”。9、进入附加组件管理页面,可以方便地禁用、移除相关组件。
- OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,允许创建的VPN使用公开密钥、数字证书、或者用户名/密码来进行身份验证。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista/7以及Android和iOS上运行,并包含了许多安全性的功能。配置OpenVPN 2.0的第一步是建立一个PKI(public key infrastructure 公钥基础设施)。PKI包括:服务端和每个客户端都有一个证书(也称做公钥)和私钥首先,我们必须安装OpenVPN软件。在Ubuntu 15.04和其它带有‘apt’包管理器的Unix系统中,可以通过如下命令安装:复制代码代码如下:注意: 所有接下来的命令要以超级用户权限执行,如在使用sudo -i命令后执行,或者你可以使用sudo -E作为接下来所有命令的前缀。开始之前,我们需要拷贝“easy-rsa”到openvpn文件夹。然后进入到该目录复制代码代码如下:第三,我们需要加载环境变量,这些变量已经在前面一步中编辑好了。生成密钥的最后一步准备工作是清空旧的证书和密钥,以及生成新密钥的序列号和索引文件。可以通过以下命令完成。复制代码代码如下:在对话中,我们可以看到默认的变量,这些变量是我们先前在“vars”中指定的。我们可以检查一下,如有必要进行编辑,然后按回车几次。对话如下Generating a 2048 bit RSA private key复制代码代码如下:该命令的对话如下:Generating a 2048 bit RSA private key复制代码代码如下:该命令的输出样例如下Generating DH parameters, 2048 bit long safe prime, generator 2复制代码代码如下:现在,生成完毕,我们可以移动所有生成的文件到最后的位置中。最后,我们来创建OpenVPN配置文件。让我们从样例中拷贝过来吧:然后编辑我们需要指定密钥的自定义路径一切就绪。在重启OpenVPN后,服务器端配置就完成了。Unix的客户端配置复制代码代码如下:加载环境变量然后创建客户端密钥我们将看到一个与先前关于服务器密钥生成部分的章节描述一样的对话,填入客户端的实际信息。假如需要密码保护密钥,你需要运行另外一个命令,命令如下在此种情况下,在建立VPN连接时,会提示你输入密码。现在,我们需要将以下文件从服务器拷贝到客户端/etc/openvpn/keys/文件夹。服务器文件列表:ca.crt,复制代码代码如下:在此之后,我们需要重启OpenVPN以接受新配置。好了,客户端配置完成。安卓客户端配置复制代码代码如下:所有这些文件我们必须移动我们设备的SD卡上。然后,我们需要安装一个OpenVPN Connect 应用。接下来,配置过程很是简单:打开 OpenVPN 并选择“Import”选项虽然OpenVPN初始配置花费不少时间,但是简易的客户端配置为我们弥补了时间上的损失,也提供了从任何设备连接的能力。此外,OpenVPN提供了一个很高的安全等级,以及从不同地方连接的能力,包括位于NAT后面的客户端。因此,OpenVPN可以同时在家和企业中使用。
- 硬盘电路板损坏的后果及解决方法(深入分析硬盘电路板故障对数据存储的影响及恢复方案)
- 苹果电脑5105f错误及解决方法(探索苹果电脑5105f错误的原因以及如何修复)
- 密码保护策略的重要性(定期更改密码的必要性)
- 惠普电脑,预装ubuntu系统如何通过应用商店安装软件1、进入桌面,主机联网,点击“Ubuntu软件中心”2、进入软件中心,选择自己喜欢的软件3、以SpeedCrunch为例子,在附件内可以选择。点击此软件选择“安装”4、安装完成后,假如要卸载,点击“卸载”即可
- Ubuntu 14.10已于前段时间发布。想知道如何从 Ubuntu 14.04 升级到 Ubuntu 14.10 么?别担心,这很容易做到。事实上,只要网络连接速度好,升级只是点击几下鼠标的事情而已。你需要从 Ubuntu 14.04 切换到 Ubuntu 14.10 么 在你升级到Ubuntu 14.10之前,请确定你真的想为升级 14.10 而抛弃 Ubuntu 14.04。一个很重要的原因是你不能从Ubuntu 14.10 回归到14.04。 你需要完全重新安装。Ubuntu 14.04是长期支持(LTS)版本。这意味着有更多的稳定性和更长的支持周期。假如升级到14.10,你将被迫在9个月后从Ubuntu 14.10 升级到15.04,而14.04将会持续3年以上。此外,目前Ubuntu 14.10没有很多的新功能使吸引用户切换到14.10。当然了,你肯定会得到最前沿的操作系统。所以,在这之前是否升级到Ubuntu 14.10是你自己的决定。从Ubuntu 14.04 升级到 Ubuntu 14.10 要从Ubuntu 14.04 升级到 Ubuntu 14.10,遵循下面的步骤:步骤 1: 打开 软件和更新.进入更新选项卡。这里要确保Ubuntu有新版本时通知我 设置成对于任何新版本。默认Ubuntu只会在另一个LTS发布时通知你。你必须要把它改成在任何中间版本都升级。步骤 2: 现在运行 软件升级。升级完成后,它应该会提示一个可用的新版本。点击升级,接着按照提示的步骤来。我希望该文教程可以帮助你从 Ubuntu 14.04 升级到 Ubuntu 14.10。虽然本教程是为Ubuntu写的,但是你可以用同样的步骤升级到 Xubuntu 14.10、Kubuntu 14.10 或者Lubuntu。敬请期待下一篇Ubuntu 14.10相关文章。谢谢阅读,希望能帮到大家,请继续关注脚本之家,我们会努力分享更多优秀的文章。