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调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python安装时常见报错以及解决方案

《Python安装时常见报错以及解决方案》:本文主要介绍在安装Python、配置环境变量、使用pip以及运行Python脚本时常见的错误及其解决方案,文中介绍的非常详细,需要的朋友可以参考下... 目录一、安装 python 时常见报错及解决方案(一)安装包下载失败(二)权限不足二、配置环境变量时常见报错及

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(