上传了网站源码怎么做,短信营销哪个平台好,网页设计图片简单,注册公司一般多少费用文章目录 前言基本思路安装依赖包实时鼠标捕获捕获鼠标位置捕获鼠标事件记录点击内容效果图 实时按键捕获控制按键操作捕获按键事件组合键记录区间设置 用户操作记录与回溯基本思路完整代码效果图 利用本文内容从事的任何犯法行为和开发与本人无关#xff0c;请理性利用技术服… 文章目录 前言基本思路安装依赖包实时鼠标捕获捕获鼠标位置捕获鼠标事件记录点击内容效果图 实时按键捕获控制按键操作捕获按键事件组合键记录区间设置 用户操作记录与回溯基本思路完整代码效果图 利用本文内容从事的任何犯法行为和开发与本人无关请理性利用技术服务大家创建美好和谐的社会让人们生活从繁琐中变得更加具有创造性
前言
这前面文章中提到了【实时屏幕捕获】的内容这篇文章则是为大家介绍在现代计算机环境中鼠标行为追踪的有效的方法并通过记录和分析用户的鼠标操作可以减少重复性工作提高工作效率。尤其是在一些固定且重复的任务中如接口测试、参数测试等鼠标行为追踪为自动化提供了可能。
类似于手机上面的语言助手不是有一个特定语言执行特定动作的功能吗这个就类似于它目前之所以做鼠标行为追踪并模拟是为了后面开展更加高级的功能。
基本思路
利用按键或时间限制捕获时间段利用 OpenCV 实现鼠标位置点的追踪记录每次操作位置点并回溯
安装依赖包
首先我们需要安装所需的库。在终端或命令提示符中执行以下命令
pip install opencv-python pyautogui numpy pynputopencv-python用于提供了丰富的图像处理和计算机视觉算法
pyautogui用于捕获屏幕画面
numpy用于处理大型多维数组和矩阵以及执行与数据结构相关的数学运算
pynput用于捕获以及控制鼠标和键盘
实时鼠标捕获
捕获鼠标位置
通过 position 属性来获取鼠标的位置可以清晰地判断用户操作的区域
from pynput import mouse as mos# 鼠标控制器
mouse mos.Controller()
# 获取当前鼠标位置
mouse.position捕获鼠标事件
鼠标事件有三种分为鼠标移动、点击以及滚轮滚动
# 移动监听
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_moveon_move,on_clickon_click,on_scrollon_scroll)# 监听启动
listener.start()记录点击内容
根据鼠标点击来记录用户点击内容可以有效地分析用户的行为和爱好更好地像学徒一样去理解用户的行为从而达到掌握其技巧
import pyautogui
import numpy as np
import cv2user_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] buttonuser_click_pos[position] (x, y)if not pressed:# 停止监听return False# 构造监听器对象
listener mos.Listener(on_clickon_click)# 监听启动
listener.start()效果图 实时按键捕获
控制按键操作
通过控制按键的按下 press 和释放 release 来打开资源管理器
from pynput import keyboard as kbd# 键盘控制器
keyboard kbd.Controller()# 按下 Win E 打开资源管理器
keyboard.press(kbd.Key.cmd)
keyboard.press(e)
keyboard.release(kbd.Key.cmd)
keyboard.release(e)捕获按键事件
按键分为三种一种是特殊键另一种是字母键还有一种是组合键事件分为两种按下以及释放
# 键盘按下
def on_press(key):try:print(f字母键 {key.char} 被按下)except AttributeError:print(f特殊键 {key} 被按下)# 按键释放
def on_release(key):print({} 释放了.format(key))if key kbd.Key.esc:# 释放了 esc 键停止监听return False# 构造监听器对象
with kbd.Listener(on_presson_press,on_releaseon_release) as listener:# 监听启动listener.join()组合键记录区间设置
根据不同的按键效果来指定不同的指令例如利用 ctr s 开始记录鼠标操作Esc 则退出记录过程
_KEY_Press {ctrls: False,
}# 键盘按下
def on_press(key):try:print(key)if key.char \x13:_KEY_Press[ctrls] Falseprint(f按下组合键 ctrl s)except AttributeError as e:if key kbd.Key.esc:_KEY_Press[ctrls] Falsereturn False# 按键释放
def on_release(key):try:if key.char \x13:_KEY_Press[ctrls] Trueprint(f释放组合键 ctrl s)except AttributeError:if key kbd.Key.esc:_KEY_Press[ctrls] Falsereturn False# 构造监听器对象
with kbd.Listener(on_presson_press,on_releaseon_release) as listener:# 监听启动listener.join()用户操作记录与回溯
当熟练了解以后就可以愉快地使用这些零零散散的知识并加以应用从而达到预想的效果。
基本思路
以微信给别人发短信为例
记录鼠标点击位置记录按键输入内容回溯上面记录操作
完整代码
import time
from datetime import datetime
from pynput import keyboard as kbd
from pynput import mouse as mos_KEY_Press {# 开始记录操作ctrls: False,# 开始回溯操作ctrlr: False,# 结束捕获esc: False
}# 用户行为操作记录{type: mouse key, position: (), event: , char: , time: 0, }
User_Active_List []# 开始记录时间
start_time None
# 开始回溯时间
run_time None
# 鼠标控制器
mouse mos.Controller()
# 键盘控制器
keyboard kbd.Controller()# 操作回溯
def run_active(list):pre_time 0for item in list:time.sleep(item[time] - pre_time)if item[type] mouse:mouse.position item[position]mouse.click(item[event], 1)if item[type] key:keyboard.press(item[char])keyboard.release(item[char])print(item)pre_time item[time]print(回溯完成!)# 按键按下
def on_press(key):global User_Active_Listtry:if key.char \x13:_KEY_Press[ctrlr] False_KEY_Press[ctrls] FalseUser_Active_List []elif key.char \x12:_KEY_Press[ctrls] False_KEY_Press[ctrlr] Falseelif _KEY_Press[ctrls]:# 记录按键User_Active_List.append({type: key,char: key,time: (datetime.now() - start_time).total_seconds(),})except AttributeError:if key kbd.Key.esc:print(f按键捕获退出!)_KEY_Press[ctrls] False_KEY_Press[ctrlr] False_KEY_Press[esc] Truereturn Falseelif _KEY_Press[ctrls]:# 记录按键User_Active_List.append({type: key,char: key,time: (datetime.now() - start_time).total_seconds(),})# 按键释放
def on_release(key):global start_time, run_timetry:if key.char \x13:_KEY_Press[ctrls] Truestart_time datetime.now()print(f开始记录操作...)if key.char \x12:_KEY_Press[ctrlr] Truerun_time datetime.now()print(f开始回溯操作...)run_active(User_Active_List)except AttributeError:if key kbd.Key.esc:print(f按键捕获退出!)_KEY_Press[ctrls] False_KEY_Press[ctrlr] False_KEY_Press[esc] Truereturn False# 构造按键监听对象
key_listener kbd.Listener(on_presson_press,on_releaseon_release)# 监听启动
key_listener.start()# 记录用户点击事件
def on_click(x, y, button, pressed):global User_Active_Listif _KEY_Press[esc]:print(f鼠标捕获退出!)return Falseelif _KEY_Press[ctrls] and pressed:User_Active_List.append({type: mouse,position: (x, y),event: button,time: (datetime.now() - start_time).total_seconds(),})# 构造监听器对象
mos_listener mos.Listener(on_clickon_click)# 监听启动
mos_listener.start()效果图 鼠标按键行为回溯