利用Python寫個(gè)摸魚監(jiān)控進(jìn)程
繼打游戲、看視頻等摸魚行為被監(jiān)控后,現(xiàn)在打工人離職的傾向也會(huì)被監(jiān)控。
有網(wǎng)友爆料稱知乎正在低調(diào)裁員,視頻相關(guān)部門幾乎要裁掉一半。而在知乎裁員的討論區(qū),有網(wǎng)友表示企業(yè)安裝了行為感知系統(tǒng),該系統(tǒng)可以提前獲知員工跳槽念頭。
而知乎在否認(rèn)了裁員計(jì)劃的同時(shí),也聲明從未安裝使用過網(wǎng)上所說的行為感知系統(tǒng),今后也不會(huì)啟用類似軟件工具。
因?yàn)榇耸?,深信服被推上風(fēng)口浪尖,輿論關(guān)注度越來越高。
一時(shí)間,“打工人太難了”“毫無隱私可言”的討論層出不窮。
今天就帶大家領(lǐng)略一下怎么寫幾行 Python 代碼,就能監(jiān)控電腦。
監(jiān)控鍵盤
如果公司偷偷在我們的電腦上運(yùn)行了一個(gè)后臺(tái)進(jìn)程,來監(jiān)控我們的鍵盤事件,最簡(jiǎn)單的 python 寫法大致是這樣的:
from pynput import keyboard
def on_press(key):
print(f'{key} :pushed')
def on_release(key):
if key == keyboard.Key.esc:
return False
with keyboard.Listener(on_press=on_press, on_release=on_release) as lsn:
lsn.join()
隨意敲擊鍵盤,你就會(huì)從控制臺(tái)看到這樣的輸出:

代碼內(nèi)容就是兩個(gè)方法,一個(gè)是監(jiān)聽按鍵事件,另一個(gè)是監(jiān)聽退出事件——敲擊 ESC 按鍵后釋放就退出了。
監(jiān)控鼠標(biāo)
如果還要監(jiān)聽鼠標(biāo)事件,那么上這段代碼就行了:
from pynput import mouse
def 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!')
# 定義鼠標(biāo)監(jiān)聽線程
with mouse.Listener(on_click=on_click) as listener:
listener.join()
這段代碼主要是監(jiān)聽鼠標(biāo)的左右鍵點(diǎn)擊操作,運(yùn)行之后操作鼠標(biāo),就可以看到控制臺(tái)打印如下結(jié)果:

細(xì)心的你一定會(huì)發(fā)現(xiàn),每次點(diǎn)擊事件,都打印了兩次。這是因?yàn)榘聪潞退砷_都會(huì)觸發(fā)鼠標(biāo)事件。
記錄監(jiān)控日志
鍵盤事件和鼠標(biāo)事件都有了,是時(shí)候?qū)⒍呓Y(jié)合起來,把用戶的操作記錄到日志了。這里我們用 loguru 來記錄日志,這個(gè) python 模塊我們之前的文章也講過。
整個(gè)代碼如下:
from pynput import keyboard, mouse
from loguru import logger
from threading import Thread
# 定義日志文件
logger.add('moyu.log')
def on_press(key):
logger.debug(f'{key} :pushed')
def on_release(key):
if key == keyboard.Key.esc:
return False
# 定義鍵盤監(jiān)聽線程
def press_thread():
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!')
else:
return False
# 定義鼠標(biāo)監(jiān)聽線程
def click_thread():
with mouse.Listener(on_click=on_click) as listener:
listener.join()
if __name__ == '__main__':
# 起兩個(gè)線程分別監(jiān)控鍵盤和鼠標(biāo)
t1 = Thread(target=press_thread())
t2 = Thread(target=click_thread())
t1.start()
t2.start()運(yùn)行之后,你就可以在同級(jí)目錄下的日志文件中,看到這樣的內(nèi)容了:

完整代碼
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: 閑歡
"""
from pynput import keyboard, mouse
from loguru import logger
from threading import Thread
# 定義日志文件
logger.add('moyu.log')
def on_press(key):
logger.debug(f'{key} :pushed')
def on_release(key):
if key == keyboard.Key.esc:
return False
# 定義鍵盤監(jiān)聽線程
def press_thread():
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!')
# 定義鼠標(biāo)監(jiān)聽線程
def click_thread():
with mouse.Listener(on_click=on_click) as listener:
listener.join()
if __name__ == '__main__':
# 起兩個(gè)線程分別監(jiān)控鍵盤和鼠標(biāo)
t1 = Thread(target=press_thread())
t2 = Thread(target=click_thread())
t1.start()
t2.start()總結(jié)
本文主要通過 pynput 這個(gè) python 模塊講解一下怎么記錄鍵盤和鼠標(biāo)的操作。這幾行簡(jiǎn)單的代碼對(duì)于監(jiān)控輸入密碼之類的簡(jiǎn)單操作可以使用,但是對(duì)于聊天記錄之類的復(fù)雜語句,你還需要針對(duì)日志用 NLTK 語言處理,才能復(fù)原你的聊天記錄。
以上就是利用Python寫個(gè)摸魚監(jiān)控進(jìn)程的詳細(xì)內(nèi)容,更多關(guān)于Python摸魚監(jiān)控進(jìn)程的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python入門之三角函數(shù)atan2()函數(shù)詳解
這篇文章主要介紹了Python入門之三角函數(shù)atan2()函數(shù)詳解,分享了其實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Python生成器定義與簡(jiǎn)單用法實(shí)例分析
這篇文章主要介紹了Python生成器定義與簡(jiǎn)單用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python生成器的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-04-04
Python+OpenCV實(shí)現(xiàn)圖片及視頻中選定區(qū)域顏色識(shí)別
這篇文章主要為大家詳細(xì)介紹了如何利用Python+OpenCV實(shí)現(xiàn)圖片及視頻中選定區(qū)域顏色識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-07-07
對(duì)python PLT中的image和skimage處理圖片方法詳解
今天小編就為大家分享一篇對(duì)python PLT中的image和skimage處理圖片方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
解決pip install psycopg2出錯(cuò)問題
這篇文章主要介紹了解決pip install psycopg2出錯(cuò)問題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Python 如何用一行代碼實(shí)現(xiàn)for循環(huán)初始化數(shù)組
這篇文章主要介紹了Python 用一行代碼實(shí)現(xiàn)for循環(huán)初始化數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03

