【pynput】鼠标行为追踪并模拟

文章目录

利用本文内容从事的任何犯法行为和开发与本人无关,请理性利用技术服务大家,创建美好和谐的社会,让人们生活从繁琐中变得更加具有创造性!

前言

这前面文章中,提到了【实时屏幕捕获】的内容,这篇文章则是为大家介绍在现代计算机环境中,鼠标行为追踪的有效的方法,并通过记录和分析用户的鼠标操作,可以减少重复性工作,提高工作效率。尤其是在一些固定且重复的任务中,如接口测试、参数测试等,鼠标行为追踪为自动化提供了可能。

类似于手机上面的语言助手,不是有一个特定语言执行特定动作的功能吗,这个就类似于它,目前之所以做鼠标行为追踪并模拟是为了后面开展更加高级的功能。

基本思路

  1. 利用按键或时间限制捕获时间段
  2. 利用 OpenCV 实现鼠标位置点的追踪
  3. 记录每次操作位置点并回溯

安装依赖包

首先,我们需要安装所需的库。在终端或命令提示符中执行以下命令:

shell 复制代码
pip install opencv-python pyautogui numpy pynput

opencv-python:用于提供了丰富的图像处理和计算机视觉算法

pyautogui:用于捕获屏幕画面

numpy:用于处理大型多维数组和矩阵,以及执行与数据结构相关的数学运算

pynput:用于捕获以及控制鼠标和键盘

实时鼠标捕获

捕获鼠标位置

通过获取鼠标的位置,可以清晰地判断用户操作的区域:

python 复制代码
from pynput import mouse as mos

# 鼠标控制器
mouse = mos.Controller()
# 获取当前鼠标位置
mouse.position

捕获鼠标事件

鼠标事件有三种分为:鼠标移动、点击以及滚轮滚动:

python 复制代码
# 移动监听
def on_move(x, y):
	print(f'鼠标移动到了:{(x, y)}')

# 点击监听
def on_click(x, y, button, pressed):
    print(f'鼠标按键:{button},在位置处 {(x, y)}, {"按下了" if pressed else "释放了"} ')
    if not pressed:
        # 停止监听
        return False


# 滚动监听
def on_scroll(x, y, dx, dy):
	print(f'滚动中... {"向下:" if dy < 0 else "向上:"} 至 {(x, y)}')

# 构造监听器对象
listener = mos.Listener(
	on_move=on_move,
	on_click=on_click,
	on_scroll=on_scroll)

# 监听启动 
listener.start()

记录点击内容

根据鼠标点击来记录用户点击内容,可以有效地分析用户的行为和爱好,更好地像学徒一样去理解用户的行为,从而达到掌握其技巧:

python 复制代码
import pyautogui
import numpy as np
import cv2

user_click_pos = {'event': None, 'position': None}

# 获取屏幕画面并保存
def save_screen():
	# 获取屏幕截图
	screenshot = pyautogui.screenshot()
	# 将截图转换为 OpenCV 格式
	screen_img = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)
	# 保存截图
	cv2.imwrite("screen_img.png", screen_img)

# 点击监听并记录用户点击事件
def on_click(x, y, button, pressed):
	save_screen()
	user_click_pos['event'] = button
	user_click_pos['position'] = (x, y)
	if not pressed:
	    # 停止监听
	    return False

# 构造监听器对象
listener = mos.Listener(on_click=on_click)

# 监听启动
listener.start()

效果图

相关推荐
喵手11 分钟前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
天天爱吃肉82181 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
m0_715575341 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
甄心爱学习1 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode
深蓝电商API1 小时前
滑块验证码破解思路与常见绕过方法
爬虫·python
Ulyanov1 小时前
Pymunk物理引擎深度解析:从入门到实战的2D物理模拟全攻略
python·游戏开发·pygame·物理引擎·pymunk
sensen_kiss1 小时前
INT303 Coursework1 爬取影视网站数据(如何爬虫网站数据)
爬虫·python·学习
玄同7652 小时前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Yorlen_Zhang2 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
HAPPY酷2 小时前
C++ 和 Python 的“容器”对决:从万金油到核武器
开发语言·c++·python