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

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1