用Python监听邻居家小姐姐的上网行为
关注公众号:「Python专栏」,后台回复「小姐姐」,获取全套代码!!!

还记得曾经为了刷大话西游而下载了按键精灵,然后论坛上搜了各种分辨率的脚本么?
还记得春节为了刷回家的高铁票,自己写了按键精灵的脚本么?
现在python有一个神奇的库,我们不用再去模拟复杂的按键精灵了!监控鼠标、键盘,甚至是……
pynput这个库让你可以控制和监控输入设备。
对于每一种输入设备,它包含一个子包来控制和监控该种输入设备:
pynput.mouse:包含控制和监控鼠标或者触摸板的类。
pynput.keyboard:包含控制和监控键盘的类。
上面提到的子包都已被引入到pynput库中。要使用上面的子包,从pynput中引入即可。
from pynput import mouse, keyboard
接下来就跟着小胖一起来看下如何玩转鼠标和键盘吧。
1. 控制鼠标
使用pynput.mouse控制鼠标
from pynput.mouse import Controller, Button
mouse = Controller()
# 获取当前鼠标位置
print(f'当前小胖的鼠标位置是: {mouse.position}')
# 设置鼠标位置
mouse.position = (10, 20)
print(f'现在小胖把鼠标移动到 {mouse.position}')
# 使用相对距离,移动当前鼠标
mouse.move(5, -5)
# 按下鼠标左键,释放鼠标左键
mouse.press(Button.left)
mouse.release(Button.left)
# 向下滚动2格
mouse.scroll(0, 2)
效果如图
2. 监控鼠标事件
使用pynput.mouse.Listener监控鼠标事件
from pynput import mouse
def on_move(x, y):
print(f'鼠标移动到坐标 {(x, y)}')
def on_click(x, y, button, pressed):
print(f"{'按下' if pressed else '释放'} ,当前位置是: {(x, y)}")
if not pressed:
# 停止监听
return False
def on_scroll(x, y, dx, dy):
print(f"滑动鼠标, {'向下' if dy < 0 else '向上'} at {(x, y)}")
# 一直监听事件,直到鼠标释放
with mouse.Listener(
on_move=on_move,
on_click=on_click,
on_scroll=on_scroll) as listener:
listener.join()
效果如图
鼠标事件监听器是一个线程,所有的回调函数都会在独立的线程中运行。
调用pynput.mouse.Listener.stop,发起StopException异常,或者回调函数中返回False都会停止事件的监听。
3. 控制键盘
使用pynput.keyboard.Controller控制键盘
from pynput.keyboard import Key, Controller
keyboard = Controller()
# 按下并释放空格
keyboard.press(Key.space)
keyboard.release(Key.space)
# 按下并释放小写字母a
keyboard.press('a')
keyboard.release('a')
# 2种方式输入大写A
keyboard.press('A')
keyboard.release('A')
with keyboard.pressed(Key.shift):
keyboard.press('a')
keyboard.release('a')
# 直接操作键盘输入Hello World
keyboard.type('Hello World')
4. 监控键盘事件
使用pynput.keyboard.Listener监听键盘事件
from pynput import keyboard
def on_press(key):
try:
print(f'字母 {key.char} 被按下了')
except AttributeError:
print(f'特殊的键 {key} 被按下了')
def on_release(key):
print(f'{key} 被释放了')
if key == keyboard.Key.esc:
# 停止监听
return False
# 一直监听键盘事件,直到停止
with keyboard.Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
键盘事件监听器是一个线程,所有的回调函数都会在独立的线程中运行。
调用pynput.keyboard.Listener.stop,发起StopException异常,或者回调函数中返回False都会停止事件的监听。
传递给回调函数的key参数是一个pynput.keyboard.Key类的实例。当特殊按键和普通按键一起按下时,数字字母按键的值会被放置在pynput.keyboard.KeyCode类的实例中,对于不知道的按键会返回None。
接下来就是发挥你们能力的时候了,说不定写个脚本,用exe包装一下,命名为种子收发器?哈哈哈哈,然后就可以监听起来了?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?