You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为基于hosts的Youtube Blocker添加datetime定时解封功能

实现方案

完全可以通过datetime模块实现定时解封需求,以下是具体修改方法:

核心逻辑说明

我们仅需要读取当前时间的小时数,与你预设的解封时间阈值对比即可,示例中设定每日21点后自动解封,你可以根据需求调整阈值:

  • 当日0:00 ~ 20:59:执行Youtube屏蔽逻辑
  • 当日21:00 ~ 23:59:执行Youtube解封逻辑

修改后可运行代码

# 使用任务计划程序实现开机自动运行
import datetime

# 配置项:可根据需求自行修改
sites_to_block = ["www.youtube.com", "youtube.com"]  # 建议加上不带www的域名,避免遗漏
hosts_path = r"C:\Windows\System32\drivers\etc\hosts"
redirect = "127.0.0.1"
BLOCK_END_HOUR = 21  # 每日解封时间(24小时制)

def block_or_unblock():
    current_hour = datetime.datetime.now().hour
    if current_hour < BLOCK_END_HOUR:
        print("执行站点屏蔽")
        with open(hosts_path , 'r+', encoding='utf-8') as hostsfile:
            hosts_content = hostsfile.read()
            for site in sites_to_block:
                if site not in hosts_content:
                    hostsfile.write(f"{redirect} {site}\n")
    else:
        print('执行站点解封')
        with open(hosts_path,'r+', encoding='utf-8') as hostsfile:
            lines = hostsfile.readlines()
            hostsfile.seek(0)
            for line in lines:
                if not any(site in line for site in sites_to_block):
                    hostsfile.write(line)
            hostsfile.truncate()

if __name__ == "__main__":
    # 注意:运行该脚本需要管理员权限,否则无法修改hosts文件
    block_or_unblock()

运行注意事项

  • 修改Windows系统hosts文件需要管理员权限,你在任务计划程序中配置该脚本时,需要勾选「使用最高权限运行」选项,否则脚本会执行失败
  • 现有代码单次运行即可根据当前时间执行对应操作,如果需要到点自动切换状态,有两种可选方案:
    • 方案1:在代码中加入无限循环,每隔5~10分钟执行一次时间判断和对应操作,让脚本常驻后台运行
    • 方案2:无需修改代码,直接在任务计划程序中新增触发器,设置脚本每间隔1小时重复运行一次即可
  • 更简化的替代方案:你可以完全不用写时间判断逻辑,直接拆分两个独立脚本,分别对应屏蔽和解封操作,然后在任务计划程序中设置两个定时任务:每日0点运行屏蔽脚本,每日21点运行解封脚本,稳定性更高,不需要Python后台驻留。

内容的提问来源于stack exchange,提问作者Hrishi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:12:00