如何通過pynput與日志記錄實現鍵盤、鼠標的監聽行為?


此項功能的實現主要是使用了多線程、鍵盤/鼠標事件監聽,最后通過NLTK語言的處理,從而反向推出電腦的操作記錄等信息。業務邏輯並不復雜,我們一起來看看吧!

file

【閱讀全文】

安裝相關的第三方庫,一是關於監聽的處理、二是關於日志的記錄模塊、三是關於簡單的線程處理模塊。

1、安裝pynput庫監控鍵盤、鼠標事件

file

2、安裝日志處理

file

將相關的模塊導入到代碼塊中。

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

將目標日志記錄文件加入到logger代碼處理器中。

logger.add('lister.log')

編寫鼠標被按下時的處理函數。

def on_keyboard_press(key):
    '''
    按鍵時記錄所按下的鍵
    :param key:
    :return:
    '''
    logger.debug(f'{key} :被按下了')

編寫鼠標抬起時的處理函數。

def on_keyboard_release(key):
    '''
    釋放按鍵處理函數
    :param key:
    :return:
    '''
    if key == keyboard.Key.esc:
        return False

編寫鼠標單擊、右擊以及滑輪的處理函數。

def on_mouse_click(x, y, click, pressed):
    if click == mouse.Button.left:
        logger.debug('鼠標左鍵按下了')
    elif click == mouse.Button.right:
        logger.debug('鼠標右鍵按下了')
        return False
    else:
        logger.debug('中間滾輪按下了')

將鍵盤相關的處理函數加入到鍵盤事件的監聽中。

def func_keyboard():
    '''
    鍵盤的按下/釋放的監聽
    :return:
    '''
    with keyboard.Listener(on_press=on_keyboard_press, on_release=on_keyboard_release) as keyboard_listener:
        keyboard_listener.join()

將鼠標相關的處理函數加入到鼠標事件的監聽中。

def func_mouse_click():
    '''
    監聽鼠標
    :return:
    '''
    with mouse.Listener(on_click=on_mouse_click) as mouse_listener:
        mouse_listener.join()

在main()的處理函數中將鼠標監聽、鍵盤監聽分別作為兩個線程啟動。

if __name__ == '__main__':
    '''
    執行線程
    '''
    # 定義鍵盤監聽線程
    thread_keyboard = Thread(target=func_keyboard)
    # 定義鼠標監聽線程
    thread_mouse = Thread(target=func_mouse_click)
    # 分別啟動線程
    thread_keyboard.start()
    thread_mouse.start()

最后可以得到一份鍵盤、鼠標歷史執行狀態記錄的日志文件,通過NLTK語言的處理從而逆向推出電腦的操作內容,這一部分就不演示了。

file

【往期精彩】

● 如果你是一名java程序員,面對已經寫好的python腳本該如何調用,其實很簡單!

● 如何使用PyQt5一步步實現用戶登錄GUI界面、登錄后跳轉?

● 辦公自動化:幾行代碼將PDF文檔轉換為WORD文檔(代碼實戰)!

● 辦公自動化:輕松提取PDF頁面數據,並生成Excel文件(代碼實戰)!

● sched 模塊中巨好用的輕量級定時任務神器scheduler!

● 不用再使用命令行打包成exe,有人寫出了UI應用,可視化UI界面對python程序進行打包的方法!

● 發現一個秘密:既python3.6之后字典竟然變成了有序集合,我再次驗證了一下!

● 這么多的內置函數能記住嗎?對python的68個內置函數分類總結!

● 必須要會的文件操作對象File,python文件讀寫操作利器!

● 你不知道的CS模式的進程管理工具,狀態監測、項目啟停一目了然!

● 如何將一個python應用以docker鏡像的方式來運行?

● python-celery專注於實現分布式異步任務處理、任務調度的插件!

● python遠程服務操作工具:fabric,遠程命令、本地命令、服務器操作利器!

● python超贊插件you-get,執行一行命令即可下載、命令行下載工具推薦!


免責聲明!

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



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