如何通过pynput与日志记录实现键盘鼠标的监听行为?
Posted Python 集中营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过pynput与日志记录实现键盘鼠标的监听行为?相关的知识,希望对你有一定的参考价值。
此项功能的实现主要是使用了多线程、键盘/鼠标事件监听,最后通过NLTK语言的处理,从而反向推出电脑的操作记录等信息。业务逻辑并不复杂,我们一起来看看吧!
安装相关的第三方库,一是关于监听的处理、二是关于日志的记录模块、三是关于简单的线程处理模块。
1、安装pynput库监控键盘、鼠标事件
2、安装日志处理
将相关的模块导入到代码块中。
# 鼠标键盘监控
from pynput import keyboard, mouse
# 日志处理
from loguru import logger
# 多线程处理
from threading import Thread
将目标日志记录文件加入到logger代码处理器中。
logger.add(\'lister.log\')
编写鼠标被按下时的处理函数。
def on_keyboard_press(key):
\'\'\'
按键时记录所按下的键
:param key:
:return:
\'\'\'
logger.debug(f\'{key} :被按下了\')
编写鼠标抬起时的处理函数。
def on_keyboard_release(key):
\'\'\'
释放按键处理函数
:param key:
:return:
\'\'\'
if key == keyboard.Key.esc:
return False
编写鼠标单击、右击以及滑轮的处理函数。
def on_mouse_click(x, y, click, pressed):
if click == mouse.Button.left:
logger.debug(\'鼠标左键按下了\')
elif click == mouse.Button.right:
logger.debug(\'鼠标右键按下了\')
return False
else:
logger.debug(\'中间滚轮按下了\')
将键盘相关的处理函数加入到键盘事件的监听中。
def func_keyboard():
\'\'\'
键盘的按下/释放的监听
:return:
\'\'\'
with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
keyboard_listener.join()
将鼠标相关的处理函数加入到鼠标事件的监听中。
def func_mouse_click():
\'\'\'
监听鼠标
:return:
\'\'\'
with mouse.Listener(on_click=on_mouse_click) as mouse_listener:
mouse_listener.join()
在main()的处理函数中将鼠标监听、键盘监听分别作为两个线程启动。
if __name__ == \'__main__\':
\'\'\'
执行线程
\'\'\'
# 定义键盘监听线程
thread_keyboard = Thread(target=func_keyboard)
# 定义鼠标监听线程
thread_mouse = Thread(target=func_mouse_click)
# 分别启动线程
thread_keyboard.start()
thread_mouse.start()
最后可以得到一份键盘、鼠标历史执行状态记录的日志文件,通过NLTK语言的处理从而逆向推出电脑的操作内容,这一部分就不演示了。
【往期精彩】
● 如果你是一名java程序员,面对已经写好的python脚本该如何调用,其实很简单!
● 如何使用PyQt5一步步实现用户登录GUI界面、登录后跳转?
● 办公自动化:几行代码将PDF文档转换为WORD文档(代码实战)!
● 办公自动化:轻松提取PDF页面数据,并生成Excel文件(代码实战)!
● sched 模块中巨好用的轻量级定时任务神器scheduler!
● 不用再使用命令行打包成exe,有人写出了UI应用,可视化UI界面对python程序进行打包的方法!
● 发现一个秘密:既python3.6之后字典竟然变成了有序集合,我再次验证了一下!
● 这么多的内置函数能记住吗?对python的68个内置函数分类总结!
● 必须要会的文件操作对象File,python文件读写操作利器!
● 你不知道的CS模式的进程管理工具,状态监测、项目启停一目了然!
● 如何将一个python应用以docker镜像的方式来运行?
● python-celery专注于实现分布式异步任务处理、任务调度的插件!
● python远程服务操作工具:fabric,远程命令、本地命令、服务器操作利器!
● python超赞插件you-get,执行一行命令即可下载、命令行下载工具推荐!
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘
文章目录
1️⃣简介
🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀
pynput是第三方库,所以在使用pynput之前需要下载pynput包。
- 下载方式1:在终端输入pip install pynput下载包
- 下载方式2:进入pypi官网:https://pypi.org➡️搜索pynput➡️选择版本➡️点击pip install pynput
- 下载方式3:点击底部Python ackages➡️搜索pynput➡️点击Install
2️⃣鼠标控制与移动
⭐第一步:为了控制和模拟鼠标移动,所以需要从pynput中导入mouse模块。
from pynput import mouse # 导入mouse模块
⭐第二步:使用Controller()方法。
m = mouse.Controller() # 创建一个鼠标
⭐第三步:移动鼠标在屏幕上的位置。
屏幕坐标以(0,0)为基准点位于屏幕的左上角,往右移动x轴坐标增加,往左移动x轴坐标减小。往下移动y轴坐标增加,往上移动y轴坐标减小。
可以使用print()打印鼠标的位置。
1.🍭绝对位置:
m.position = (800,600) # 将鼠标移动到指定位置
print(f'鼠标位置为:m.position') # 打印鼠标位置
2.🍭相对位置:
m.move(100,100) # 以(0,0)或上一个position的位置为准
print(f'鼠标位置为:m.position') #打印鼠标位置
第四步:模拟鼠标按键:
- 🍭单击左键:
📖方式一:
m.press(mouse.Button.left) # 按下鼠标左键(单击)
m.release(mouse.Button.left) # 松开鼠标左键
🌌补:使用press+position+release可实现拖拽功能
🌟注意:使用press按下后,必须要使用release松开。否则相对于现实中操作鼠标一直按下左键不松手
📖方式二:
m.click(mouse.Button.left, 1) # 单击鼠标左键
🙌 区别:直接完成了一次点击松手操作。
- 🍭单击右键:
📖方式一:
m.press(mouse.Button.right) # 按下鼠标右键(单击)
m.release(mouse.Button.right) # 松开鼠标右键
📖方式二:
m.click(mouse.Button.right, 1) # 单击鼠标右键
- 🍭双击:
m.click(mouse.Button.left, 2) # 双击(左键)
- 🍭鼠标滚轮:
类似于上述将的position,x轴坐标增加往右移动,x轴坐标减小往左移动。y轴坐标增加往下移动,y轴坐标减小往上移动。
x轴使用较少,绝大部分页面不会出现左右滚动条。
m.scroll(0,2) # 向下移动
📘完整代码⬇️:
from pynput import mouse # 导入mouse模块
m = mouse.Controller() # 创建一个鼠标
m.position = (800,600) # 将鼠标移动到指定位置
print(f'鼠标位置为:m.position') # 打印鼠标位置
m.move(100,100) # 相对于(800,600)在移动(100,100)
print(f'鼠标位置为:m.position') # 打印鼠标位置
# 方式一
# m.press(mouse.Button.left) # 按下鼠标左键(单击)
# m.release(mouse.Button.left) # 松开鼠标左键
# 方式二
m.click(mouse.Button.left, 1) # 单击鼠标左键
m.press(mouse.Button.right) # 按下鼠标右键(单击)
m.release(mouse.Button.right) # 松开鼠标右键
m.click(mouse.Button.right, 1) # 单击鼠标右键
# 双击
m.click(mouse.Button.left, 2) # 双击(左键)
m.scroll(0,2) # x 左右滚动, y 上
3️⃣键盘控制与输入
⭐第一步:为了键盘输入,所以需要从pynput中导入keyboard模块。
from pynput import keyboard # 导入keyboard模块
⭐第二步:使用Controller()方法。
k = keyboard.Controller() # 创建一个键盘
⭐第三步:模拟按键
k.press('a') # 按下a
k.release('a') # 松开a
🌟注意:引号内可以是任意字符包括汉字,但只能是单个。后续会教大家输入一句话。
⭐第四步:按特殊键(空格,shift等)
k.press(keyboard.Key.space) # 按下空格键
k.release(keyboard.Key.space) # 松开空格键
k.press(keyboard.Key.shift) # 按下shift键
k.release(keyboard.Key.shift) # 松开shift键
⭐第五步:输入一句话
k.type('Hello everybody!')
📘完整代码⬇️:
from pynput import keyboard # 导入keyboard模块
k = keyboard.Controller() # 创建一个键盘
k.press('a') # 按下a
k.release('a') # 松开a
k.press(keyboard.Key.space) # 按下空格键
k.release(keyboard.Key.space) # 松开空格键
k.press(keyboard.Key.shift) # 按下shift键
k.release(keyboard.Key.shift) # 松开shift键
k.type('Hello everybody!')
4️⃣结语📢
如果你学会了这些还不知道用pynput来干什么。那我教你可以实现打开应用,自动浏览网页,与女朋友微信聊天等。应用程序是无限的,你可以使用这种方法构建任何类型的自动化工具。
🎁打开软件代码分享:https://blink.csdn.net/details/1511416
🎁微信发送信息代码分享: https://blink.csdn.net/details/1511454
以上是关于如何通过pynput与日志记录实现键盘鼠标的监听行为?的主要内容,如果未能解决你的问题,请参考以下文章
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘