当前位置:首页>python>我用Python做了一个简单但很危险的远程屏幕监控系统,让电脑每隔5秒自动截图,并实时传到服务器

我用Python做了一个简单但很危险的远程屏幕监控系统,让电脑每隔5秒自动截图,并实时传到服务器

  • 2026-09-08 18:46:16
我用Python做了一个简单但很危险的远程屏幕监控系统,让电脑每隔5秒自动截图,并实时传到服务器
今天我灵光一闪
我就在想,如果我不在电脑前,我能不能“看它正在干什么?”
或者说我能看别人电脑在干什么。
于是乎,我就简单写了一个程序:
👉 它会每隔几秒自动截图,并上传到服务器。
然后我打开网页,就能看到那台电脑的屏幕。
就像远程监控一样。
事先声明
  • 仅用于学习/测试
  • 不涉及他人设备
  • 不用于非法用途

这个系统实现了:

  • 📸 客户端定时截图上传
  • 🌐 服务端实时接收并存储
  • 🖥️ Web 页面实时展示截图
  • 👥 多用户隔离
  • ⚡ WebSocket 实时刷新
  • 🖼️ 缩略图优化 + 图片放大预览

技术栈:

  • Python 3
  • Flask
  • Flask-SocketIO
  • gevent
  • Pillow
  • pyautogui
先看效果:
服务器环境准备
⚙️ 更新系统、安装Python&pip环境、安装项目依赖:
apt update && apt upgrade -yapt install python3 python3-pip -ypip3 install flask flask-socketio gevent gevent-websocket pillow
📁 创建项目结构
mkdir screen-monitorcd screen-monitortouch app.pymkdir uploadsmkdir templatestouch templates/index.html
将以下图中代码写入到app.py文件中:
app = Flask(__name__)app.secret_key = "super_secret_key"socketio = SocketIO(app, cors_allowed_origins="*", async_mode='gevent')UPLOAD_FOLDER = 'uploads'THUMB_FOLDER = 'thumbs'os.makedirs(..., exist_ok=True)USERS = {    "admin": "123456",    "user1": "111111"}

作用:

  • 创建 Flask 应用
  • secret_key 用于登录 session
  • 启用 WebSocket(实时推送)
  • uploads:存原图
  • thumbs:存缩略图
  • 自动创建目录(避免报错)
  • 简单账号密码(写死的),用于登录验证
@app.route('/login')@app.route('/')
登录核心逻辑和首业访问控制:
  • POST:校验用户名密码
  • 成功 → 写入 session['user']
  • 失败 → 返回错误
  • 未登录 → 跳转 /login
  • 已登录 → 渲染页面
@app.route('/upload', methods=['POST'])
上传接口(核心):

做了4件事:

  1. 接收图片 + user + device
  2. 按用户创建目录
  3. 保存原图
  4. 生成缩略图
  5. 用户数据隔离
socketio.emit('new_image', {...})
⚡WebSocket 推送
👉 告诉前端:有新图片了
@app.route('/delete/<filename>')
🗑️ 删除功能

作用:

  • 只删除“当前登录用户”的图片
  • 同时删原图 + 缩略图
  • 通知前端同步删除
@app.route('/api/images')/uploads/<user>/<filename>/thumbs/<user>/<filename>
图片列表 API和图片访问接口:
作用:
  • 只返回当前用户的图片
  • 不会看到别人的数据
  • 提供图片访问路径
  • 前端通过 URL 加载图片
🚀 启动服务
socketio.run(app, host='0.0.0.0', port=5000)

作用:

  • 启动 Web 服务 + WebSocket
  • 监听所有 IP
网页样式
之后服务端就已经配置完成,就可以启动项目:
nano app.py
运行之后看到:
Running on http://0.0.0.0:5000
或者没有任何输出,则证明启动成功,只要不报错就行。
这时你可以访问:
http://你的服务器IP:5000/login
就能进入到页面。
客户端
我这里使用的是PyCharm进行编码,然后打包exe程序。
你需要安装依赖:
pip install pyautogui requests pyinstaller
创建一个client.py的文件,然后将以下代码输入进去:
打包成exe:
进入 client.py 所在目录,执行打包命令:
pyinstaller -F -w client.py

参数解释

  • -F
     👉 打包成单个 exe 文件
  • -w
     👉 不显示黑窗口(后台运行)

打包完成后

会生成:

dist/client.exe
之后就可以运行客户端,运行之后后台会有进程,不会有任何窗口。
之后回到网页,你就能在网页看到上传到服务器的屏幕截图,每5秒截一次。
这个项目还可以扩展很多,例如:键盘记录、实时视频流等。你们可以自行发挥。
本期内容到此结束。
三连加关注,追文不迷路。

最新文章

随机文章