微信群总是有人发广告?看我用Python写一个机器人消灭他( 二 )


  • 点击微信App
  • 点击需要的群聊
  • 依次点击每一个群成员头像
  • 移动到微信号的位置
  • 双击该微信号
  • 复制该微信号判断是否为初始微信号
在上面的过程中,值得说的是最后一步,复制我们可以使用pynput中的键盘控制器,在双击选中对应微信号之后通过下面的代码实现模拟键盘输入Command + C完成复制操作
from pynput.keyboard import Keyfrom pynput.keyboard import Controller as Controller1keyboard = Controller1()with keyboard.pressed(Key.cmd):    keyboard.press('c')    keyboard.release('c')但是粘贴则不需要使用pynput通过模拟command+c来粘贴到另一个编辑中复杂过程,我们可以使用第三方库pyperclip,直接通过下面两行代码即可将复制好的文字转为字符串
import pyperclippyperclip.paste()在将群成员的微信号转换为字符串后,不论我们是通过判断字符串的长度还是用正则表达式或者是其他的方法都可以轻松的判断该成员的微信号是否为初始微信号,实现规则1的判断,下面的代码与动态图就是一次**完整的过程
from pynput.mouse import Button, Controllerimport timefrom pynput.keyboard import Keyfrom pynput.keyboard import Controller as Controller1import pyperclipmouse = 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}不是广告号") 
微信群总是有人发广告?看我用Python写一个机器人消灭他

文章插图
 
可以看到成功将早小起的微信从广告号中排除
微信群总是有人发广告?看我用Python写一个机器人消灭他

文章插图
 
那么接下来只需要记录下每两个群成员之间间隔的坐标距离,之后循环去模拟滚动或者下拉来实现上述过程,就可以将群里所有成员的微信号根据规则1进行判断,找到异常的那些成员单独进行判断 。
微信群总是有人发广告?看我用Python写一个机器人消灭他

文章插图
 
可以看到最终是找到了6个疑似广告号的微信,接下来通过其他规则的手动判断最终将两个用户判定为广告高风险用户并移除 。
写在最后通过上面的操作,虽然成功的踢出了两个疑似广告号,但是依旧很难去判断是否真的踢对了人,如果踢错了,那么则粉丝-1,同时也可以发现想用Python准确找到群里的牛皮癣还是非常困难的,使用pynput最多可以完成微信号及头像(使用识图API)的判断,但是更多的信息却很难提取挖掘 。
同时pynput有着和selenium同样的缺点,那就是由于模拟真人操作而导致的速度慢,并且它的定位方式仅支持坐标,所以还需要保证在操作的过程中微信窗口不可以被移动,否则之前记录的元素将全部失效(建议开发者可以支持更多的定位方式)
如果你有好的思路可以在留言区和我交流,如果你想看更详细的pynput讲解,不要忘记给个三连 。如果你对本文的代码感兴趣,可以在公众号早起Python中找到!
今天的文章就到这里,为了维护良好的群内交流环境,对抗小广告的路还在继续,拜拜~




推荐阅读