Python 實現局域網遠程屏幕截圖案例
最近各地中小學都在開展線上教學,有些不自覺的小朋友們用電腦在線學習的時候會趁傢長不在的時候偷偷玩遊戲、看漫畫。
本程序screenshot.py就是用來監控學生機(windows系統)屏幕活動的一個小腳本。
首先在學生機上安裝python3環境。另外需要安裝pyautogui:
pip install pyautogui
學生機啟動後臺進程方法:在學生機上建立一個批處理文件,用無窗口python運行命令,以下根據你自己的python安裝位置和腳本所在文件夾調整。。
c:\python37\pythonw.exe d:\py\screenshot.py 1>1.txt 2>2.txt
from http.server import BaseHTTPRequestHandler, HTTPServer import pyautogui, socket # for windows, screenshot.py # 傢長監控地址: http://192.168.1.3:8009/ PORT = 8008 # 獲取學生機局域網地址 IP = socket.gethostbyname(socket.gethostname()) #windows class myHandler(BaseHTTPRequestHandler): def do_GET(self): img = pyautogui.screenshot() #屏幕截圖 if img: self.send_response(200) #HTTP 狀態碼 self.send_header('Content-Type', 'image/png') self.end_headers() img.save(self.wfile, 'PNG') # 寫入HTTP 響應流文件 def main(): try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #判斷當前端口是否已經打開 result = sock.connect_ex((IP, PORT)) portopen = result == 0 sock.close() if not portopen: #啟動web服務器,用自定義的響應處理類 server = HTTPServer((IP, PORT), myHandler) server.serve_forever() # 服務器持續監聽 except: pass if __name__ == '__main__': main()
WIFI環境下,在傢長機器或手機瀏覽器中輸入下面的網址(假設學生機IP為192.168.1.3):
http://192.168.1.3:8008/
就可看到學生當前的屏幕活動。可刷新。
補充:python代碼實現截圖識字
有次網上down瞭個截圖實識的軟件,發現一天隻能用10次要錢才能解鎖免費,很氣,作為一個菜雞怎麼能忍受
於是自己用python寫瞭個簡單的小工具,分享給大傢
代碼如下: 先安裝庫
from PIL import ImageGrab,Image import keyboard #監控鍵盤 from time import sleep import sys from aip import AipOcr class API(): def picture2Text(filePath): API_ID = '######' API_KEY = '#######' SECRET_KEY = '######' aipocr = AipOcr(API_ID, API_KEY, SECRET_KEY) image = API.getFileContent(filePath) texts = aipocr.basicGeneral(image) allTexts = '' for words in texts['words_result']: allTexts = allTexts + ''.join(words.get('words','')) return allTexts # print(texts) def getFileContent(a): with open(a,'rb') as fp: return fp.read() def seceenShot(): '''用於獲取剪切板圖片信息並保存到本地''' #ctrl+alt+a 這個看你用什麼截圖,qq是個 if keyboard.wait(hotkey='ctrl+alt+a') == None: if keyboard.wait(hotkey='enter') == None: sleep(0.01) im_gray = ImageGrab.grabclipboard() # print(im_gray) if isinstance(im_gray,Image.Image): im_gray.save("250.jpg") else: print('請重新截圖') else: print('請使用qq截圖,小逗比(記得截圖後按enter)') if __name__ == '__main__': for _ in range(sys.maxsize): seceenShot() test = API.picture2Text(r'250.jpg') print(test)
上述11,12,13的是百度雲的工單賬號和密鑰,如圖下,自己可以註冊的免費
33行和34行是監控鍵盤的
33行是開始截圖:ctrl+alt+a (這個看自己的截圖工具是什麼鍵就換成什麼)
34行是結束:enter (一定要按enter結束截圖)
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。