📜  Python编写的网站拦截器

📅  最后修改于: 2020-05-14 02:32:07             🧑  作者: Mango

这是一个现实世界的程序,在您的工作时间内阻止某些分散注意力的网站,例如Facebook,Youtube等。
关于程序:在此程序中,我们将通过您认为会分散注意力的网站链接,而您使用计算机和程序能够阻止这些网站。

程序架构
1, 每个系统都有hosts文件,无论是Mac,Windows还是Linux。Mac和Linux中的
hosts文件:

/etc/hosts

Windows中的主机文件:

C:\Windows\System32\drivers\etc

2,hosts文件的工作:hosts主机是一个操作系统文件,它将主机名映射到IP地址。在此程序中,我们将网站的主机名映射到我们的本地主机地址。使用Python文件处理操作,我们将在hosts.txt中写入主机名,并在工作时间之后删除行。
Mac中的主机文件:

# 以root身份运行此脚本
import time
from datetime import datetime as dt
# 根据您的操作系统更改主机路径
hosts_path = "/etc/hosts"
# 本地主机的IP
redirect = "127.0.0.1"
# 您要阻止的网站
website_list =
["www.facebook.com","facebook.com",
      "dub119.mail.live.com","www.dub119.mail.live.com",
      "www.gmail.com","gmail.com"]
while True:
    # 工作时间
    if dt(dt.now().year, dt.now().month, dt.now().day,8)
    < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day,16):
        print("Working hours...")
        with open(hosts_path, 'r+') as file:
            content = file.read()
            for website in website_list:
                if website in content:
                    pass
                else:
                    # 将主机名映射到您的本地主机IP地址
                    file.write(redirect + " " + website + "\n")
    else:
        with open(hosts_path, 'r+') as file:
            content=file.readlines()
            file.seek(0)
            for line in content:
                if not any(website in line for website in website_list):
                    file.write(line)
            # 从主机文件中删除主机
            file.truncate()
        print("Fun hours...")
    time.sleep(5)

Windows用户的特别说明: Windows用户需要创建OS主机文件的副本。现在,在脚本中提到的hosts_path中提供重复文件的路径。
在Mac中调度上述脚本:在Mac中调度上述脚本,您必须在终端中以root身份打开crontab。
在终端中编写以下命令:

sudo crontab -e
  1. 您的终端应如下所示:

  2. 现在按“ i”进入插入/编辑模式并编写@reboot Python_script_path。
  3. 保存该选项,方法是:先按ESC键退出写模式,然后退回到命令模式,然后写“:wq”,最后按Enter进行确认。
  4. 重新启动系统并查看效果。

在Windows中:上述脚本的有些技巧:

  1. 首先,将脚本的扩展名从“ .py”更改为“ .pyw”。
  2. 现在打开任务计划程序。任务计划程序应如下所示:

    您可能会看到已经计划了网站拦截器,因为我已经在计算机中安排了测试。仔细遵循进一步的计划安排说明,以便在您的计算机中计划网站拦截程序。
  3. 点击“创建任务”。填写您选择的名称,并标记“以最高特权运行”。

  4. 现在转到触发器,选择“启动时”开始任务。

  5. 转到“动作”栏,然后创建一个新动作并提供脚本的路径。


  6. 转到条件栏并取消标记电源部分。

  7. 按确定,您可以看到计划的脚本。

  8. 最后,重新启动计算机,然后看到效果。


    注意:您也可以通过单击运行按钮立即进行检查。