1. 程式人生 > 其它 >如何通過pynput與日誌記錄實現鍵盤、滑鼠的監聽行為?

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

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

【閱讀全文】

安裝相關的第三方庫,一是關於監聽的處理、二是關於日誌的記錄模組、三是關於簡單的執行緒處理模組。

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

2、安裝日誌處理

將相關的模組匯入到程式碼塊中。

# 滑鼠鍵盤監控
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語言的處理從而逆向推出電腦的操作內容,這一部分就不演示了。

【往期精彩】

● 如果你是一名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,執行一行命令即可下載、命令列下載工具推薦!

歡迎關注作者公眾號【Python 集中營】,專注於後端程式設計,每天更新技術乾貨,不定時分享各類資料!