Python实现自动截图,逃脱在线监考系统
Python实现自动截图,逃脱在线监考系统
Bornforthis1. 前言
你好,我是悦创。
一开始是实现手动截图,并保存到指定路径下,并使用 Python 的脚本实现自动上传 GitHub,然后我这边同步 clone 下载 GitHub 仓库内容,作答后微信发送答案,这样的后台操作规避了考试监测系统。但在某一次考试中,虽然没有被判定作弊,但被教授发 Email 警告!
之前还实现了一个截图后,自动读取粘贴板 and 自动发送 Email 的程序,来辅助哥伦比亚大学学生考试。此程序,暂不发布~
警告内容
程序代码如下:
1 | import time |
2. 版本 V0.1
1 | import os |
安装依赖库:
在运行此脚本之前,需要确保安装了pyautogui
库。可以使用以下命令安装:1
pip install pyautogui
运行脚本:
将上述代码保存为screenshot.py
,在命令行中运行:1
python screenshot.py
停止程序:
当你想停止自动截图时,可以在命令行中按下Ctrl + C
。查看截图:
截图将保存到脚本所在目录下的screenshots
文件夹中,文件名包含了截图的时间戳。
- 跨平台支持:该脚本使用了
pyautogui
库,可以在 Windows、macOS 和 Linux 上运行。 - 权限要求:在某些操作系统上,截屏操作可能需要额外的权限,请确保授予脚本必要的权限。
- 性能影响:频繁的截屏和保存操作可能会对系统性能产生影响,请根据实际需求调整截屏间隔。
导入模块:
os
:用于创建文件夹和处理文件路径。time
:用于实现定时功能。datetime
:用于生成时间戳。pyautogui
:用于截取屏幕。
主函数 main():
- 检查并创建保存截图的文件夹。
- 使用
while True
进入无限循环,每隔 3 秒截取一次屏幕并保存。 - 使用
try-except
块捕获键盘中断(Ctrl + C
),以便在用户终止程序时做出提示。
截图和保存:
- 使用
pyautogui.screenshot()
截取当前屏幕。 - 使用
datetime.now().strftime()
生成时间戳,确保每个截图文件名唯一。 - 将截图保存为 PNG 格式到指定文件夹。
- 使用
3. 版本 V0.2
在原有程序的基础上,扩展功能,使其更加完善。
1 | import os |
命令行参数:
- 截图间隔(
-i
,--interval
):设置截图间隔时间,默认为 3 秒。 - 持续时间(
-d
,--duration
):设置程序运行的总时长,默认为 0(无限制)。 - 保存文件夹(
-f
,--folder
):指定截图保存的文件夹,默认为screenshots
。 - 截取区域(
-r
,--region
):指定截取屏幕的区域,需要四个整数参数:左、上、宽度、高度。 - 图片格式(
-fmt
,--format
):选择截图保存的图片格式(png
、jpg
、bmp
、tiff
),默认为png
。 - 图片质量(
-q
,--quality
):设置图片质量(仅适用于jpg
格式),范围为 1-95,默认为 80。
- 截图间隔(
区域截图:
- 现在可以通过
-r
参数指定截取屏幕的特定区域。
- 现在可以通过
持续时间控制:
- 可以设置程序运行的总时长,自动停止截图。
日志记录:
- 程序会在保存截图的文件夹中生成
screenshot_log.txt
日志文件,记录所有操作和错误信息。
- 程序会在保存截图的文件夹中生成
错误处理:
- 改进了错误处理,捕获并记录异常,保证程序稳定运行。
安装依赖库:
- 确保安装了
pyautogui
库:1
pip install pyautogui
- 如果在 macOS 上运行,可能需要安装
python3-tk
:1
brew install python-tk
- 确保安装了
运行程序:
- 使用默认设置:
1
python screenshot.py
- 自定义截图间隔和保存文件夹:
1
python screenshot.py -i 5 -f my_screenshots
- 截取特定区域(例如:左=100,上=100,宽=800,高=600):
1
python screenshot.py -r 100 100 800 600
- 设置持续时间为 60 秒:
1
python screenshot.py -d 60
- 以 JPEG 格式保存截图,设置质量为 90:
1
python screenshot.py -fmt jpg -q 90
- 查看帮助信息:
1
python screenshot.py -h
- 使用默认设置:
停止程序:
- 在命令行中按下
Ctrl + C
可以手动停止程序。
- 在命令行中按下
查看日志:
- 程序会在保存截图的文件夹中生成
screenshot_log.txt
日志文件,记录所有操作和错误信息。
- 程序会在保存截图的文件夹中生成
截取区域坐标:
left
和top
参数定义了截取区域的起始位置。width
和height
参数定义了截取区域的大小。- 所有值的单位均为像素。
图片格式和质量:
- 如果选择
jpg
格式,可以通过-q
参数设置图片质量,数值越高质量越好,文件体积也越大。 - 其他格式(
png
、bmp
、tiff
)不支持设置质量参数。
- 如果选择
持续时间:
- 如果持续时间设置为
0
,程序将无限制运行,直到手动停止。
- 如果持续时间设置为
错误处理:
- 程序会捕获并记录所有异常,保证程序不会因错误而崩溃。
- 每隔 5 秒截取全屏,持续 2 分钟:
1
python screenshot.py -i 5 -d 120
- 每隔 10 秒截取指定区域,持续运行:
1
python screenshot.py -i 10 -r 200 200 640 480
- 将截图以 BMP 格式保存到自定义文件夹:
1
python screenshot.py -fmt bmp -f custom_folder
参数解析:
- 使用
argparse
模块处理命令行参数,实现灵活的配置。
- 使用
日志设置:
- 配置日志记录,将信息输出到日志文件,并包含时间戳。
主循环:
- 使用
while True
循环,根据设定的间隔和持续时间控制截图频率和总时长。
- 使用
截图保存:
- 根据用户指定的格式和质量保存截图。
异常处理:
- 捕获
KeyboardInterrupt
和其他异常,确保程序能够正常退出并记录信息。
- 捕获
公众号:AI悦创【二维码】
AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh