你知道怎么用Python监控聊天记录吗

 更新时间:2021年10月14日 10:45:05   作者:程序猿-小菜  
今天有位同事和我吐槽关于公司 XX 的问题,我告诉他不要在公司电脑上说这些,因为很可能会被狙击,这位同事刚开始还不信,直到我写了这边文章,他才恍然大悟

在这里插入图片描述

关于 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 语言处理,就能复原你的聊天记录。

以上就是今天的全部内容了,感谢您的阅读,我们下节再会。

到此这篇关于你知道怎么用Python监控聊天记录吗的文章就介绍到这了,更多相关Python 监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python模拟登陆实现代码

    Python模拟登陆实现代码

    本篇文章主要介绍了Python模拟登陆实现代码,这里整理了详细的代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Python解析nginx日志文件

    Python解析nginx日志文件

    Web服务器的各种系统管理工作包括了多Nginx/Apache 日志的统计,python使这个任务变得极其简单,下面我们来详细讲解下具体的做法,有需要的小伙伴可以参考下。
    2015-05-05
  • Python设计模式之抽象工厂模式原理与用法详解

    Python设计模式之抽象工厂模式原理与用法详解

    这篇文章主要介绍了Python设计模式之抽象工厂模式,简单讲述了抽象工厂模式的概念、原理并结合实例形式分析了Python实现与使用抽象工厂模式的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python图像运算之图像灰度非线性变换详解

    Python图像运算之图像灰度非线性变换详解

    这篇文章将详细讲解图像灰度非线性变换。图像灰度非线性变换主要包括对数变换、幂次变换、指数变换、分段函数变换,通过非线性关系对图像进行灰度处理,本文主要讲解三种常见类型的灰度非线性变换,感兴趣的可以了解一下
    2022-03-03
  • Python自动化办公Excel模块openpyxl原理及用法解析

    Python自动化办公Excel模块openpyxl原理及用法解析

    这篇文章主要介绍了Python自动化办公Excel模块openpyxl原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 关于Python核心框架tornado的异步协程的2种方法详解

    关于Python核心框架tornado的异步协程的2种方法详解

    今天小编就为大家分享一篇关于Python核心框架tornado的异步协程的2种方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 简单聊聊Python中多线程与类方法的交互

    简单聊聊Python中多线程与类方法的交互

    在Python编程中,多线程是一种提高程序运行效率的有效手段,本文将通过简洁的语言、清晰的逻辑和实际的代码案例,探讨Python多线程如何调用类方法,感兴趣的可以了解下
    2025-01-01
  • 分析Python感知线程状态的解决方案之Event与信号量

    分析Python感知线程状态的解决方案之Event与信号量

    本文主要介绍了如何感知线程状态、如何停止一个线程、线程之间的Event用法
    2021-06-06
  • 利用Matplotlib实现单画布绘制多个子图

    利用Matplotlib实现单画布绘制多个子图

    这篇文章主要介绍了利用Matplotlib实现单画布绘制多个子图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • TensorFlow 合并/连接数组的方法

    TensorFlow 合并/连接数组的方法

    今天小编就为大家分享一篇TensorFlow 合并/连接数组的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论