当前位置: 首页 > article >正文

Python自动化神器:键鼠操作记录与回放实战

1. 为什么需要键鼠操作自动化每天重复点击几百次相同按钮游戏里需要精准执行固定操作这些场景下手动操作不仅效率低下还容易出错。Python的键鼠自动化就像给你的电脑装上了机械手指能完美复现所有操作。我最早用这个技术是为了解决游戏挂机问题。当时玩一款需要反复刷材料的网游手动操作太累就研究出了这套方案。后来发现它在办公场景同样好用比如自动填写表单、批量处理文件等。键鼠自动化核心解决三类问题重复劳动替代人工完成固定流程操作精准控制消除人为操作误差无人值守设定好后可自动运行2. 环境准备与基础配置2.1 安装必备库推荐使用pynput这个神器库它同时支持键盘和鼠标事件监听pip install pynput实测中发现有些系统需要额外依赖Linux需要libx11-devMacOS需要pyobjc-framework-Quartz2.2 防抖处理技巧原始代码里的防抖逻辑很关键我优化后的版本增加了双击识别debounce_interval 200 # 毫秒 last_key None last_event_type None def on_press(key): global last_time, last_key, last_event_type current_time time.time() interval int((current_time - last_time) * 1000) # 防抖逻辑增强 if key last_key and last_event_type down: if interval debounce_interval: return elif interval 500: # 双击判定 records.append([interval, K, double click, key])3. 记录功能的深度优化3.1 鼠标轨迹平滑处理原始代码记录的鼠标移动会有卡顿感我加入了移动预测算法def on_move(x, y): global last_time, last_position current_time time.time() interval int((current_time - last_time) * 1000) # 计算移动速度 if last_position: dx x - last_position[0] dy y - last_position[1] speed (dx**2 dy**2)**0.5 / interval # 速度过快时插值 if speed 10: # 像素/毫秒 steps int(speed / 5) for i in range(1, steps): inter_x last_position[0] dx*i/steps inter_y last_position[1] dy*i/steps records.append([interval/steps, M, mouse move, [inter_x, inter_y]]) records.append([interval, M, mouse move, [x, y]]) last_position (x, y) last_time current_time3.2 智能事件压缩长时间记录会产生大量冗余数据这个压缩算法能减小90%体积def compress_records(): compressed [] temp_move None for record in records: if record[2] mouse move: if not temp_move: temp_move record.copy() else: temp_move[0] record[0] # 合并时间间隔 temp_move[3] record[3] # 更新最终位置 else: if temp_move: compressed.append(temp_move) temp_move None compressed.append(record) return compressed4. 回放功能的进阶技巧4.1 动态速度调整直接回放会显得很机械加入随机波动更拟人def human_like_delay(base_interval): # 随机波动范围±20% variation base_interval * 0.2 * (2 * random.random() - 1) # 最小10ms防止卡顿 return max(10, base_interval variation) for record in records: adjusted_delay human_like_delay(record[0]/1000) time.sleep(adjusted_delay) # 执行操作...4.2 异常处理机制回放时窗口被遮挡怎么办我总结的容错方案retry_count 0 max_retries 3 while retry_count max_retries: try: mouse_controller.position (x, y) break except Exception as e: print(f操作失败: {e}) retry_count 1 time.sleep(1) else: send_alert(自动化任务执行失败)5. 实战应用案例5.1 游戏自动化示例以《原神》采集为例完整流程记录角色移动路径添加采集动作间隔设置循环次数计数器异常时自动重试def genshin_farm(): for _ in range(100): # 循环100次 move_to_resource() interact_with_resource() if detect_combat(): # 自定义战斗检测 escape_combat()5.2 办公自动化场景自动填写日报系统def fill_daily_report(): open_browser(http://oa-system.com) wait(2) # 等待页面加载 # 定位输入框技巧 input_fields { 工作总结: //*[idwork-summary], 明日计划: //input[classplan-input] } for field, xpath in input_fields.items(): click_element(xpath) type_content(get_template(field))6. 性能优化与调试6.1 内存管理方案长时间运行容易内存泄漏我的解决方案使用生成器分批处理记录定期清理事件缓存采用二进制存储替代文本def save_binary(filename): import struct with open(filename, wb) as f: for record in records: # 使用二进制格式打包数据 if record[1] M: # 鼠标事件 data struct.pack(IccII, record[0], # 间隔时间 record[1].encode(), record[2][0].encode(), record[3][0], # x坐标 record[3][1]) # y坐标 else: # 键盘事件 data struct.pack(IccII, record[0], record[1].encode(), record[2][0].encode(), record[3][0], # 键码 record[3][1]) # 字符 f.write(data)6.2 可视化调试工具开发时我常用的调试方法def visualize_records(): import matplotlib.pyplot as plt x_coords [] y_coords [] for record in records: if record[1] M and record[2] mouse move: x_coords.append(record[3][0]) y_coords.append(record[3][1]) plt.plot(x_coords, y_coords) plt.gca().invert_yaxis() # 匹配屏幕坐标系 plt.show()这套键鼠自动化方案经过我多个项目的实战检验在电商抢购、数据录入等场景都取得了不错的效果。刚开始使用时可能会遇到各种奇怪问题比如某些游戏会检测自动化工具这时候就需要加入更多随机因素和人性化操作特征。

相关文章:

Python自动化神器:键鼠操作记录与回放实战

1. 为什么需要键鼠操作自动化 每天重复点击几百次相同按钮?游戏里需要精准执行固定操作?这些场景下,手动操作不仅效率低下还容易出错。Python的键鼠自动化就像给你的电脑装上了"机械手指",能完美复现所有操作。 我最早用…...

经典软件复活:DDrawCompat兼容性解决方案详解

经典软件复活:DDrawCompat兼容性解决方案详解 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompat …...

Qwen3模型在CSDN技术社区的应用:自动生成技术文章图解

Qwen3模型在CSDN技术社区的应用:自动生成技术文章图解 写技术文章,最头疼的是什么?对我来说,除了把复杂的技术原理讲清楚,就是找配图了。一张好的示意图,胜过千言万语,但自己画图费时费力&…...

【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

高斯数据库(GaussDB)SQL 常用语句总结

高斯数据库(GaussDB)SQL 常用语句总结 高斯数据库(GaussDB)是华为基于 PostgreSQL 开源生态开发的企业级分布式关系型数据库,兼容标准 SQL 92/99/2003,同时支持 PostgreSQL 语法,还自带分布式、高可用特性。 下面按日常开发高频场景整理最实用的 SQL 语句,直接复制就…...

Limine协议参考实现:标准引导接口的设计理念与实现细节

Limine协议参考实现:标准引导接口的设计理念与实现细节 【免费下载链接】limine Modern, advanced, portable, multiprotocol bootloader and boot manager. 项目地址: https://gitcode.com/gh_mirrors/li/limine Limine是一款现代化、先进的可移植多协议引导…...

OpenClaw自动化测试:Qwen3-14b_int4_awq在开发提效中的应用

OpenClaw自动化测试:Qwen3-14b_int4_awq在开发提效中的应用 1. 为什么选择OpenClawQwen3组合做测试自动化 去年接手一个持续集成项目时,我每天要花3小时重复执行测试脚本、分析日志。直到发现OpenClaw这个能操控本地环境的AI智能体框架,配合…...

微信读书笔记神器:WeReader插件让你的阅读效率提升300%的终极指南

微信读书笔记神器:WeReader插件让你的阅读效率提升300%的终极指南 【免费下载链接】wereader 一个浏览器扩展:主要用于微信读书做笔记,对常使用 Markdown 做笔记的读者比较有帮助。 项目地址: https://gitcode.com/gh_mirrors/wer/wereader…...

实战:用多智能体做竞品监控周报,如何避免信息噪声

实战:用多智能体做竞品监控周报,如何避免信息噪声 关键词:多智能体系统、竞品监控、信息噪声、自然语言处理、知识图谱、自动化周报、智能筛选 摘要:本文将带你深入了解如何使用多智能体系统构建竞品监控周报,并重点探讨如何在这个过程中有效避免信息噪声。我们将从基础概…...

3步掌控智能散热:免费工具实现Windows风扇精准控制的完整方案

3步掌控智能散热:免费工具实现Windows风扇精准控制的完整方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...

加了领导微信,发现他从不发朋友圈。同事说:他把你屏蔽了。后来才知道,他没屏蔽任何人,只是不发!问他为什么,他说:发什么都不对!

加了领导微信,点开他的朋友圈,映入眼帘的是一条冷酷的横线。此时,旁边的同事幽幽地补了一刀:“不用看了,他肯定把你屏蔽了。”你心里“咯噔”一下,瞬间脑补了一出80集职场宫斗剧:我是不是哪里得…...

2026届最火的降AI率平台实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现在,人工智能生成内容越来越普及了,降低AI检测率的工具成了好多创作…...

用了这么久 Claude Code,你可能从来没打开过它最重要的文件夹!

点击上方卡片关注我设置星标 学习更多AI出海知识装完 Claude Code 跑第一个项目的时候,根目录会多出一个 .claude/ 文件夹。大部分人看到了,没点开过,也没想过里面有什么。这就错过了 Claude Code 最值得折腾的部分。.claude/ 不是缓存目录&a…...

让 DDL 源码真正可读:SAP ADT 里 DDL Formatter 的配置逻辑、团队协作方式与项目实践

在很多 ABAP 项目里,开发人员会把注意力集中在语义正确、激活成功、性能可接受这些层面,却容易低估一件事:DDL 源码的可读性,直接影响建模质量、代码审查效率,以及团队协作时的认知成本。CDS 语句一旦开始出现较长的元素列表、复杂的 Boolean expression、多层 JOIN、多个…...

【限时解禁】PyTorch 3.0静态图训练最佳实践白皮书(含21个真实集群trace日志+自动调优脚本)

第一章:PyTorch 3.0静态图分布式训练全景概览PyTorch 3.0 引入了原生静态图编译能力(TorchDynamo Inductor 后端深度集成),结合 torch.distributed 的增强型 API,构建出面向大规模集群的高性能分布式训练范式。与传统…...

东南大学SEUThesis:3分钟搞定论文格式的终极指南

东南大学SEUThesis:3分钟搞定论文格式的终极指南 【免费下载链接】SEUThesis 项目地址: https://gitcode.com/gh_mirrors/seu/SEUThesis 每到毕业季,东南大学的学子们总会陷入格式调整的噩梦:页眉页脚反复修改、参考文献样式混乱、章…...

从零重启计算机之路|一位毕业两年转行学习者的自白

大家好,我是一名毕业两年的编程初学者。目前没有从事计算机相关工作,但一直对编程抱有热爱与向往,决定从现在开始重新出发,系统学习计算机知识。 🎯 我的编程目标 从零基础扎实打好编程底子,熟练掌握 C 语言…...

5个关键技术点解析:AirPodsDesktop如何实现Windows/Linux平台的完美AirPods体验

5个关键技术点解析:AirPodsDesktop如何实现Windows/Linux平台的完美AirPods体验 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPods…...

openEuler23.09源码编译PostgreSQL16.3实战指南

1. 环境准备与系统配置 在openEuler23.09上编译PostgreSQL16.3之前,我们需要先做好基础环境配置。我建议使用全新安装的openEuler23.09系统,这样可以避免各种依赖冲突问题。通过执行cat /etc/os-release可以确认系统版本,输出应该包含VERSION…...

ADS DC仿真实战:从零构建电源完整性分析

1. 电源完整性分析为何如此重要? 最近在做一个FPGA板卡项目时,我遇到了一个棘手的问题:板卡在低温环境下频繁出现异常重启。经过排查发现,问题出在核心电源轨的压降上。当环境温度降低时,电源网络的阻抗变化导致供电电…...

强力解锁B站字幕:跨平台字幕下载与转换完整方案

强力解锁B站字幕:跨平台字幕下载与转换完整方案 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 你是否曾为B站视频的字幕无法下载而烦恼?想…...

Neat Bookmarks:浏览器书签管理的树状结构解决方案

Neat Bookmarks:浏览器书签管理的树状结构解决方案 【免费下载链接】neat-bookmarks A neat bookmarks tree popup extension for Chrome [DISCONTINUED] 项目地址: https://gitcode.com/gh_mirrors/ne/neat-bookmarks 你是否曾经在数百个杂乱的书签中迷失方…...

Go语言命名规则实战:从变量到包名的完整避坑指南

Go语言命名规则实战:从变量到包名的完整避坑指南 当你第一次接触Go语言时,可能会被它简洁的语法所吸引,但很快就会发现这门语言对命名有着近乎苛刻的要求。我至今还记得刚学Go时,因为一个包名的大小写问题调试了整个下午的经历。本…...

告别驱动烦恼:Universal ADB Driver 让 Windows 连接 Android 设备变得简单

告别驱动烦恼:Universal ADB Driver 让 Windows 连接 Android 设备变得简单 【免费下载链接】UniversalAdbDriver One size fits all Windows Drivers for Android Debug Bridge. 项目地址: https://gitcode.com/gh_mirrors/un/UniversalAdbDriver 还在为连接…...

别再只用Chat模式了!Cursor的Rule和Docs功能,才是提升Java开发效率的隐藏王牌

解锁Cursor的Rule与Docs功能:Java开发者的效率革命 在Java开发领域,我们常常陷入重复性工作的泥潭——手动检查代码规范、翻阅过时的API文档、反复调试基础配置。Cursor编辑器远不止是一个智能补全工具,它的Rule和Docs功能正在悄然改变Java开…...

微信小程序里canvas不跟手滚动?别再用scroll-view了,试试这个官方推荐的替代方案

微信小程序Canvas滚动难题:官方方案与工程实践解析 第一次在小程序里实现类似淘宝详情页的锚点跳转功能时,我信心满满地用scroll-view包住了所有内容区域。直到测试阶段才发现,页面里的UCharts图表就像被钉死在屏幕上一样,完全无…...

WebP图片处理全攻略:如何让Java的Thumbnails支持最新图片格式(含SPI机制解析)

WebP图片处理全攻略:Java生态下的高效解决方案与SPI机制深度解析 WebP作为Google推出的新一代图片格式,凭借其卓越的压缩效率和动画支持能力,正在逐步改变互联网图像存储与传输的格局。根据最新行业统计,采用WebP格式的网站平均可…...

如何快速开始使用BeRoot:权限提升检测的10个核心技巧

如何快速开始使用BeRoot:权限提升检测的10个核心技巧 【免费下载链接】BeRoot Privilege Escalation Project - Windows / Linux / Mac 项目地址: https://gitcode.com/gh_mirrors/be/BeRoot BeRoot Project是一款强大的权限提升检测工具,专为Win…...

从Hello World到生产部署:Agent开发完整教程

从Hello World到生产部署:Agent开发完整教程引言:为什么现在是学习Agent开发的黄金时代? 痛点引入:从“脚本化工具人”到“自主智能助手”的瓶颈 各位读者朋友们,我是老周,一个在互联网摸爬滚打了12年、从传…...

让 ABAP 编码更顺手:全面掌握 ADT 中的预测式代码补全

在现代 ABAP 开发里,代码补全早已不只是 Ctrl + Space 之后弹出一个候选列表那么简单。随着 SAP 在 ADT,也就是 ABAP development tools for Eclipse 中持续引入 AI 辅助能力,Predictive Code Completion 已经从传统补全的补充工具,逐步变成很多开发者日常写代码时的隐形助…...