Python 实现局域网远程屏幕截图案例
作者:方工 发布时间:2021-05-13 13:43:43
标签: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结束截图)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/onestab/article/details/104511927


猜你喜欢
- 常用当前循环.作用default数据为空时设置默认值length取变量长度filesizeformat文件大小转成可读slice从指定位置到
- 标志是一种简单的工具,就象铁锤,简单实用。如果一种工具功能太多导致其效用减弱,那就让它保持简单。你并不需要一把有太多装饰的精美铁锤。对于象征
- mysql蠕虫复制,简单来说就是将查询出来的数据不断的新增插入到指定的数据表中。通常情况,mysql蠕虫复制时用来测试表压力。下面我们就结合
- Python自定义邻接表图类图抽象数据类型(ADT)的术语顶点(Vertex):也称节点(node),是图的基础部分。具有名称标识&
- 隔离级别:隔离性其实比想象的要复杂。 在SQL标准中定义了四种隔离级别, 每一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见
- 引言这两天遭遇了手机号登录相关的压测需求,算是比较棘手的。主要原因有两个,第一:之前从来没有接手过这个项目,不熟悉各种规则;第二:数据量偏大
- 有一个古老的争论,是关于在哪里存储应用程序业务逻辑的:是在应用程序本身的业务逻辑层中还是在数据库层中。应用程序逻辑层的绝对支持者提出,数据库
- python中注释在python中的注释一般分为单行注释、多行注释以及文档注释。注释描述在实际开发过程中,有效的代码注释不仅可以提升个人的工
- 这篇文章主要介绍了基于js实现抽红包并分配代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 在网页中,我们经常需要引用大量的javascript和css文件,在加上许多javascript库都包含debug版和经过压缩的releas
- df.fillna主要用来对缺失值进行填充,可以选择填充具体的数字,或者选择临近填充。官方文档DataFrame.fillna(self,
- 在你自己安装了一个新的MySQL服务器后,你需要为MySQL的root用户指定一个目录(缺省无口令),否则如果你忘记这点,你将你的MySQL
- 前言本篇文章,阐述一下Flask中数据库的迁移为什么要说数据库迁移呢?比如我们以前有一个数据库,里面的信息有 id, name现在我想再加一
- 一、什么是jieba库jieba是优秀的中文分词第三方库,由于中文文本之间每个汉字都是连续书写的,我们需要通过特定的手段来获得其中的每个词组
- 相信很多与页面打过交道的同学都对 Yahoo 的 Best Practices for Speeding Up Your Web Site
- 1、update delete insert 这种语句都需要commit或者直接在连接数据库的时候加上autocommit=Trueimpo
- 同MongoDB,Redis这样的NoSQL数据库的复制相比,MySQL复制显得相当复杂!概述首先主服务器把数据变化记录到主日志,然后从服务
- 前言ipaddress库提供了处理IPv4与IPv6网络地址的类。这些类支持验证,查找网络上的地址和主机,以及其他常见的操作。本篇,将详细介
- 使Web系统的开发与维护更加方便,从而有效的节省人力物力,受到了越来越多企业的青眯。 模板引擎是MVC模式建立过程的重要方法,开发者可以设计
- 例子:http.Handle("/tmpfiles/", http.StripPrefix("/tmpfile