Python-软件设计-“帮助”小孩子自我行为(电脑端看短视频)约束

本文主要是介绍Python-软件设计-“帮助”小孩子自我行为(电脑端看短视频)约束,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 前言
  • 一、方式一:网站访问拦截
  • 二、方式二:SW(电脑软件简称)启动拦截
  • 三、使用代码的方式将方式一和方式二结合成自动化程序部署
  • 四、其他拓展知识
    • 1.程序打包
    • 2、开机自启文件夹
  • 五、报错的解决方式
    • 1、打包成软件后,运行那个软件时不执行或报错
      • 问题一:'pyinstaller' 不是内部或外部命令,也不是可运行的程序或批处理文件。
      • 问题二:软件双击打开后没反应
    • 2、软件运行的问题
      • 问题一:运行软件就弹框报错
      • 问题二:任务管理器中没有看到这个软件在后台运行
  • 总结


前言

有个朋友是做教育机构类的工作,然后在某次聊天中他跟本人吐槽说现在的孩子用电脑就只会用来刷短视频和打游戏,上课时学生都被这些娱乐弄分神了,所以本人帮忙研究并制作了一点点小软件,“帮助”孩子控制住自己的行为。


一、方式一:网站访问拦截

这里的网站访问拦截呢,其实就是设置hosts文件,在本地禁止访问某个网站通常可以通过修改操作系统的 hosts 文件实现。hosts 文件可以让你将特定域名解析到指定的 IP 地址,从而实现对该域名的访问控制。

在 Windows 上:

1、打开记事本或其他文本编辑器,以管理员权限运行。
2、在记事本中,依次点击 “文件” -> “打开”,然后转到以下路径:
C:\Windows\System32\drivers\etc
3、在 “文件类型” 下拉菜单中选择 “所有文件”,然后选择 “hosts” 文件并点击 “打开”。
4、在 hosts 文件的末尾添加以下内容:
127.0.0.1 example.com
将 example.com 替换为你想要禁止访问的网站域名。
5. 保存并关闭 hosts 文件。

hosts文件

在 Linux 上:
1、打开终端。
2、输入以下命令以编辑 hosts 文件:
sudo nano /etc/hosts
3、在 hosts 文件的末尾添加以下内容:
127.0.0.1 example.com
将 example.com 替换为你想要禁止访问的网站域名。
4. 按下 Ctrl + X,然后输入 Y 来保存修改,最后按下 Enter 退出 nano 编辑器。

无论是在 Windows 还是 Linux 上,一旦你将特定域名解析到了 127.0.0.1,访问该域名时将会被重定向到本地主机,从而实现了对该网站的禁止访问。请注意,在修改 hosts 文件后,你可能需要清除浏览器缓存或者重启系统才能生效。


二、方式二:SW(电脑软件简称)启动拦截

简单来说,就是让程序一直检测电脑后台运行的软件,如果发现了想要管控的软件,就关闭它。

代码例如:

import psutil, timedef close_process(process_name):for proc in psutil.process_iter():if proc.name() == process_name:proc.kill()print(f"{process_name} 已成功关闭。")while 1:# 调用函数来关闭指定的进程,比如关闭Chrome浏览器close_process("chrome.exe")time.sleep(0.1)	# 适当加点检测间隔时间,让CPU喘喘气

你看,就那么简单,那么简短的代码就能实现这个功能了,


三、使用代码的方式将方式一和方式二结合成自动化程序部署

这里的代码呢,是结合了很多偷懒的步骤的~~~

  1. 可以自动在各个盘里寻找存放该代码打包后的exe可执行程序,但仅限于盘外,比如D盘的外面;
  2. 篡改C:\Windows\System32\drivers\etc\的hosts文件内容,自动添加想要禁止访问的网站;
  3. 运行之后,自动将本身exe程序复制到开机自启文件夹里,这样电脑开机时就会自启该程序;
  4. 以上步骤执行完后,就会一直监测后台程序的启动,发现需要禁止的软件后,直接关闭,就会出现无论点击打开软件多少次,都没反应;
  5. 后续可以自行启用或修改记录软件运行、报错等信息,logging 库就可以实现,但本人没写完,也用不着;

程序打包的方法、开机文件夹的位置这两点内容写在代码的后面,有需要者直行查看哦!!!

各位即将干坏事的大爷们,代码如下(示例):
代码中需要自己加入正确的禁用网址和软件名才会成功哦!!!

'''
import time
import shutil
import os
import psutil# import logging  # 用于记录文件# 配置日志记录
# logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')# 记录日志信息# logging.warning('This is a warning message.')
# logging.error('This is an error message.')"""--------------------以下为拦截抖*等短视频网站的代码-------------------------"""file_path = 'C:\\Windows\\System32\\drivers\\etc\\hosts'# 写入的内容  自行修改想要本地禁用的网站
content_to_add1 = "127.0.0.1 www.***yin.com"
content_to_add2 = "127.0.0.1 www.****shou.com"
content_to_add3 = "127.0.0.1 ***kan.baidu.com"
content_to_add4 = "127.0.0.1 www.****bili.com"def open_hosts(content_to_add):# 写入新内容with open(file_path, 'a') as file1:file1.write('\n' + content_to_add)print("已添加内容到文件末尾。")hosts_path = file_path  # hosts 文件路径,根据操作系统可能会有所不同# 检查 hosts 文件是否存在
if not os.path.exists(hosts_path):# 如果不存在,则创建文件with open(hosts_path, 'w') as file:# 写入默认内容或者你需要的内容file.write(content_to_add1 + "\n")file.write(content_to_add2 + "\n")file.write(content_to_add3 + "\n")file.write(content_to_add4 + "\n")print("\n创建hosts文件成功,并且已经写入数据!\n")
else:print("hosts文件已存在,开始进行下一步操作:添加内容")# 读取文件内容with open(file_path, 'r') as file:file_content = file.read()# 检查是否存在想要添加的内容if content_to_add1 not in file_content:open_hosts(content_to_add1)  # 写入新内容else:print("文件已存在相同内容,无需添加。")if content_to_add2 not in file_content:open_hosts(content_to_add2)  # 写入新内容else:print("文件已存在相同内容,无需添加。")if content_to_add3 not in file_content:open_hosts(content_to_add3)  # 写入新内容else:print("文件已存在相同内容,无需添加。")if content_to_add4 not in file_content:open_hosts(content_to_add4)  # 写入新内容else:print("文件已存在相同内容,无需添加。")for t in range(5):print("程序运行倒计时————", 5 - t)time.sleep(1)
"""--------------------以下为拦截抖音软件的代码-------------------------"""# 获取当前执行脚本的路径和文件名
file_path = os.path.abspath(__file__)  # 获取绝对路径
directory = os.path.dirname(file_path)  # 获取路径部分
file_name = os.path.basename(file_path)  # 获取文件名部分print("程序绝对路径:", file_path, file_path.replace('.py', '.exe'))
print("程序路径:", directory)
print("程序文件名:", file_name, file_name.replace('.py', '.exe'))
k = 0
z = r"C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"D = "D:\\" + file_name.replace('.py', '.exe')
E = "E:\\" + file_name.replace('.py', '.exe')
F = "F:\\" + file_name.replace('.py', '.exe')
G = "G:\\" + file_name.replace('.py', '.exe')
H = "H:\\" + file_name.replace('.py', '.exe')# 调用函数复制exe文件到指定路径
source_path = file_path.replace('.py', '.exe')  # 源文件路径
destination_path = z + '\\' + file_name.replace('.py', '.exe')  # 目标路径
print("destination_path:", destination_path)app_list = ["***yin.exe", "西瓜**.exe", "**哔哩.exe"]def close_process(process_name):"""检测运行的程序中是否有指定的软件启动:param process_name::return:"""global kfor proc in psutil.process_iter():# print("输出软件名字:", proc.name())# logging.info("输出软件名字:", proc.name())if proc.name() == process_name:proc.kill()k = 1print(f"{process_name} 已成功关闭。")# logging.info(f"{process_name} 已成功关闭。")else:print("想要关闭的软件还没有出现...等待中...")# logging.info("想要关闭的软件还没有出现...等待中...")def start_chloe_douyin():"""调用函数来关闭指定的进程,比如关闭***yin:return:"""while 1:try:for i in app_list:      # 遍历列表中需要关闭的软件名close_process(i)time.sleep(1)except Exception as ex:print(ex)# logging.error(ex)if k == 2:breakdef ssss(source_path, destination_path):"""执行复制程序:param source_path: 源文件路径:param destination_path: 目标文件路径:return:"""print("源文件存在......", source_path)if not os.path.exists(destination_path):print("目标路径中还没有源文件")# 复制文件到目标路径shutil.copy(source_path, destination_path)print("文件复制成功")else:print("目标路径中有源文件了...")def copy_exe(source_path, destination_path):"""复制exe文件到指定的路径下:param source_path:源文件路径:param destination_path:目标文件路径:return:"""try:# 检查源文件是否存在if not os.path.exists(D):print("D盘路径的源文件不存在", D)else:ssss(D, destination_path)  # 执行复制软件的程序if not os.path.exists(E):print("E盘路径的源文件不存在", E)else:ssss(E, destination_path)  # 执行复制软件的程序if not os.path.exists(F):print("F盘路径的源文件不存在", F)else:ssss(F, destination_path)  # 执行复制软件的程序if not os.path.exists(G):print("G盘路径的源文件不存在", G)else:ssss(G, destination_path)  # 执行复制软件的程序if not os.path.exists(H):print("H盘路径的源文件不存在", H)else:ssss(H, destination_path)  # 执行复制软件的程序if not os.path.exists(source_path):print("该程序目前路径的源文件不存在", source_path)OO = "不存在"# returnelse:# source_path = OO  # 将最终的源文件路径替换给真正的目标路径变量ssss(source_path, destination_path)  # 执行复制软件的程序print("开始针对关闭", app_list, "软件......")start_chloe_douyin()  # 开始针对关闭抖音软件except Exception as e:print(f"复制文件时发生错误:{e}")copy_exe(source_path, destination_path)  # 执行复制与启动程序

四、其他拓展知识

1.程序打包

首先,上面的代码要进行打包。

以下是使用PyInstaller来打包Python程序的简单步骤:

1.安装PyInstaller:首先,确保你已经安装了PyInstaller。你可以使用pip来安装PyInstaller:

pip install pyinstaller

2.进入项目目录:在命令行中,导航到包含你的Python脚本的项目目录。

3.运行PyInstaller:运行以下命令来打包你的Python程序:

pyinstaller your_script.py

其中 your_script.py 是你要打包的Python脚本的文件名。
一般本人习惯用 -w -F 来打包

pyinstaller -w -F your_script.py

4.等待打包完成:PyInstaller会将你的Python脚本及其依赖项打包成一个或多个文件夹,并生成可执行文件。打包完成后,你会在项目目录中看到一个名为 dist 的新文件夹,里面包含了打包后的文件。

5.运行可执行文件:在 dist 文件夹中找到生成的可执行文件,双击运行它即可。如果你的程序有任何输入或输出,你应该能够在命令行或程序窗口中看到相应的信息。

2、开机自启文件夹

按住win键 + R,弹出运行框后,输入:

shell:startup

在这里插入图片描述
点击“确定”之后就会弹出那个开机自启的文件夹了


五、报错的解决方式

1、打包成软件后,运行那个软件时不执行或报错

大概会有这么几种问题:

问题一:‘pyinstaller’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

很大一种可能,就是用的是Windows命令行运行的打包程序,但是呢,这里命令行里没有运行安装过pyinstaller,所以会说没有这个库,安装了就可以打包了。


问题二:软件双击打开后没反应

很大的可能就是代码写的有问题,报错了,就得根据报错提示来找问题了,直接是看不到打印的信息的,得把那个exe文件拖到命令行那个窗口去运行,就会出现报错的信息。
在这里插入图片描述


2、软件运行的问题

问题一:运行软件就弹框报错

已经打包好了,运行软件时,出现以下错误:
在这里插入图片描述
这是篡改hosts文件内容时出的错,原因是软件的权限不够,需要管理员权限。

解决方式:使用管理员身份运行该软件
在这里插入图片描述


问题二:任务管理器中没有看到这个软件在后台运行

软件双击运行后,没有报错,“开机自启”文件夹中也有Close_TikTok5.exe软件了,就是在任务管理器中没有找到这个Close_TikTok5.exe软件,最好的解决方法就是重启电脑,只要“开机自启”文件夹中也有Close_TikTok5.exe软件,90%的几率是可以成功部署的。

这里就是手动复制软件到开机自启文件夹中,然后就都解决了

总结

如果软件启动没问题,能在任务管理器中找得到这个软件的名字,那就是成功的,只是在复制和篡改hosts时有问题,按照上面的解决方式解决之后应该就没啥问题了。

再不行的话把可以正常运行的软件手动复制到开机自启文件夹中,然后也手动去篡改hosts文件的内容,这样就可以了。

最后可以测试一下部署是否有用,网站上访问短视频网站时出现以下的图片情况就说明成功拦截了
在这里插入图片描述
然后拦截软件部分就得从任务管理器中查找想要禁用的软件名是什么,记得要后面加上.exe哦,比如donyin.exe。这些拦截软件启动的得在写代码的时候一个个试,试成功了再打包,再部署,部署后还要打开开机自启文件夹去检查一遍有没有那个软件。

该文章若对你有帮助,不妨点个赞噢~


2024.04.28写
有写得不好、写得不对的地方还请各位指出,谢谢!

这篇关于Python-软件设计-“帮助”小孩子自我行为(电脑端看短视频)约束的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945045

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include