微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!

语音控制系统 语音识别执行程序 软件名称: 语音控制系统 v1.0 系统需求: Vista/Windows7/Windows Server 2008 安装 Microsoft .Net Framework 3.5 硬件需求: 装有麦克风以及多媒体声卡 使用方法: 下载附件后解压缩到任意路径下, 双击SoundControl.exe执行. 用麦克风下达指令,程序会自动执行(说白了就是个语音识别的小程序 ) 可用指令请参照readme.txt说明文件 开发环境: VS2008 + Windows 7 立即下载

序幕

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

或者是一声不吭的去骚扰每一个群成员:point_down:

虽然不清楚是什么能够驱使他们这样不折不扣的努力成为最强微信群牛皮癣(可能是钞能力),但在经历太多次的骚扰之后,我开始思考是否可以用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一样, 模拟点击 一个一个好友来实现我想要的操作。

下面简单说一下这个库,因为没有太多依赖库所以安装起来很简单,直接 pip install pynput即可,使用起来也很简单,对于鼠标操作只依赖坐标,看个demo:point_down:

就像上面GIF演示的一样,先导入 pynput 并实例一个鼠标控制器,接着将微信在状态栏的位置提交给 mouse.position ,这样鼠标就会移动到该位置,再使用 mouse.press 来模拟鼠标点击即可自动打开微信。那么问题来了,如何获得我想要的位置的坐标?总不能一点一点试吧!

pynput除了使可以使用 Controller 来控制鼠标,也可以监控鼠标,比如使用下面的代码就可以记录下程序启动后鼠标的每一个点击操作所在的位置:point_down:

from pynput import mouse

def on_move(x, y ):
 print('鼠标移动至 {0}'.format(
  (x,y)))

def on_click(x, y , button, pressed):
 print('{0} 在坐标 {1}'.format('鼠标点击' if pressed else '鼠标释放', (x, y)))
 if not pressed:
  return False

while True:
 with mouse.Listener(on_move = on_move,on_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 同样的缺点,那就是由于 模拟真人操作而导致的速度慢 ,并且它的定位方式 仅支持坐标 ,所以还需要保证在操作的过程中微信窗口不可以被移动,否则之前记录的元素将全部失效,此处建议开发者可以升级更多的定位方式。

此文转载文,著作权归作者所有,如有侵权联系小编删除

原文地址:https://www.tuicool.com/articles/yeEN7jz

 

 

源码获取点这

QQ群监控自动踢人自动撤回.rar QQ群监控,自动踢人,自动关键词撤回,自动@群成员,自动活跃群,自动群发,这些都是可以设置的 立即下载

相关推荐

python实现微信自动回复

使用python 实现微信的自动回复,所有人都会回复,打开就可以直接使用。

铺天盖地都是Python的广告,我也成为了被割的韭菜

导语:Python这两年非常火,随处可见的广告让它逐渐变成了一种老少皆知的存在。虽然问世几十年后,Python才得到编程社区的重视。但是,其发展的势头似乎无人能及。自2010年年初以来,Python一直在蓬勃发展,成为计算机语言中的“大热门”。 写在前面 Python的成功体现在Stack Overflow趋势上,该趋势测量了平台上帖子的标签数量。考虑到Stack Overflow的大小,这确实是衡量语言受欢迎程度的良好指标。 在所有的Stack Overflow问题中,几乎有14%被标记上了“pyth.

m0_59235508的博客 2120

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1919

微信python小课_微信公众号广告案例:Pytnon小课

小编每天都会给大家分享各个广告平台不同的广告案例哟,如果大家需要可以多多关注上海天擎,如果大家需要做广告投放,也可以联系我们!今天小编要跟大家分享的广告案例是Python小课投放的微信公众号广告。Python小课是一个能够为大家提供编程课程的公众号,而这个课程是很适合0基础的新手开始学习编程,我们可以通过Python小课提供的23个关卡,就可以顺利敲下代码,也可以完成编程项目!好啦,我们一起来看看...

weixin_39713317的博客 354

11. TI MSPM0G3507 DMA传输实战:ADC数据自动搬运与电压采集

本文以TI MSPM0G3507为例,详细讲解了如何利用DMA(直接存储器访问)实现ADC数据的自动搬运与电压采集。通过实战演示,解放CPU资源,提升系统实时性与效率,适用于电赛备赛及嵌入式开发中的数据采集场景。

weixin_42465140的博客 135

Akamai移动端Sensor数据采集与BMP风控机制深度解析

本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。

quiet的专栏 290

微信群有人发广告?用 Python 写自动化机器人消灭他!

作者 |刘早起来源 |早起Python( ID:zaoqi-python )序幕微信群牛皮癣,指的是在微信群里毫无下限的群发小广告的用户,是微信群主最痛恨的一波人。如果熟悉早起的读者...

优快云资讯 3265

第三方系统(异构系统)基于token身份认证方式访问Ecology9的Restful接口Ecology9服务器配置部分

通过Token的认证方式调用Ecology9系统Restful业务接口服务器配置部分

svsou的专栏 2176

微信群有人发广告?用python写个自动化机器人消灭他!

作者:刘早起 来源:早起Python 微信群牛皮癣,指的是在微信群里毫无下限的群发小广告的用户,是微信群主最痛恨的一波人。如果熟悉早起的读者可以知道我有一个技术交流群,但是自从建群以来就饱受小广告的困扰。他们伪装成正常人混进群然后不停的发送广告轰炸,严重的打乱了群内的技术交流气氛???? 或者是一声不吭的去骚扰每一个群成员???? 虽然不清楚是什么能够驱使他们这样不折不扣的努力成为最强微信群牛皮癣(可能是钞能力),但在经历太多次的骚扰之后,我开始思考是否可以用python消灭他们。 第一回

CDA数据分析师 553

[SVA]SystemVerilog Assertion Property开发技巧总结

SystemVerilog Assertion开发技巧总结 一、在property中可以使用if-else条件语句 如下面的例子,根据misc_phy_12g_rx的取值,选择不同的判断语句 property ck1_en_rose_chk(); @(posedge clk) disable iff(~rst_n) ad_pn_ck1en & (current_state !== ST_IDLE) |->...

元直的博客 5924

小米汽车车载多摄像头视频链路深度解析 | MAX96792/MAX96724/MAX96781 实战分享

通过合理的输入输出规划 + 虚拟通道管理 + 加串行策略,可以在成本和性能之间取得最佳平衡,这就是多摄像头系统设计的核心精髓。

weixin_43199439的博客 1551

2024年Python最全微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2301_82242990的博客 1165

【短距离通信】【WiFi】精讲WiFi 6E协议!图解超赞超详细!!!

802.11ax(HE,HighEfficiency) (Wi-Fi 6E):6G频段共有1200MHz的频谱给到WiFi 6E使用,可用于从5.925GHz到7.125GHz。WiFi将可以访问59个20MHz信道,29个40MHz信道14个80MHz信道和7个160MHz信道。这不仅代表可以有很多频道,还可以代表可以解锁更高的数据速率。因为 802.11ax 标准(Wi-Fi 6)也在 2.4GHz 和 5GHz 频段运行,所以 6GHz 频段的 Wi-Fi 将被命名为 Wi-Fi 6E。

风云说通信 2347

python训练营微信广告_微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!...

序幕微信群牛皮癣,指的是在微信群里毫无下限的群发小广告的用户,是微信群主最痛恨的一波人。如果熟悉早起的读者可以知道我有一个技术交流群,但是自从建群以来就饱受小广告的困扰。他们伪装成正常人混进群然后不停的发送广告轰炸,严重的打乱了群内的技术交流气氛????或者是一声不吭的去骚扰每一个群成员????虽然不清楚是什么能够驱使他们这样不折不扣的努力成为最强微信群牛皮癣(可能是钞能力),但在经历太多次的骚扰之后,我开始...

weixin_39646831的博客 341

2026华为OD面试题084:贪心的商人

商人经营一家店铺,有 `number` 种商品。由于仓库限制,每件商品的最大持有数量是 `item[index]`。 每种商品每天有一个价格 `item_price[item_index][day]`。通过对商品买进和卖出获取利润,请给出商人在 `days` 天内能获取到的最大利润。 注:同一件商品可以反复买进和卖出。 输入描述: - 第一行输入商品数量 `number` - 第二行输入商人售货天数 `days` - 第三行输入 `number` 个整数,表示每件商品的最大持有数量 `item[in

琅嬛福地 275

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python训练营微信广告_微信群有人发广告?用python写个自动化机器人消灭他!

作者:刘早起

weixin_39538687的博客 251

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

2024年最新微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!,Python客户端Web页面通用性能优化实践

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

2401_84572612的博客 357

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

微信群总有人发广告?用Python写一个自动化机器人消灭他

作者 |刘早起出品 | 早起Python(ID: zaoqi-python)微信群牛皮癣,指的是在微信群里毫无下限的群发小广告的用户,是微信群主最痛恨的一波人。如果熟悉早起的读者可以知...

AI科技大本营 4991
上一篇: Python - 网易邮箱邮件阅读和删除辅助小脚本!
下一篇: Python利用google翻译,翻译字幕文件!我想翻译日语!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值