📜  使用Python 的网站拦截器

📅  最后修改于: 2021-10-20 10:26:12             🧑  作者: Mango

这是现实世界的程序,它会在您的工作时间内阻止某些分散注意力的网站,例如 Facebook、Youtube 等。

关于程序:我们将在此程序中传递您认为会分散注意力的网站链接,并且您在计算机上工作的时间和程序将阻止这些网站。

程序架构:

  1. 无论是 Mac、Windows 还是 Linux,每个系统都有主机文件。
    Mac 和 Linux 中的主机文件:
    /etc/hosts

    Windows 中的主机文件:

    C:\Windows\System32\drivers\etc
  2. 主机文件的工作:主机是将主机名映射到 IP 地址的操作系统文件。在这个程序中,我们将把网站的主机名映射到我们的本地主机地址。使用Python文件处理操作,我们将在 hosts.txt 中写入主机名,并在您的工作时间后删除这些行。

    Mac 中的主机文件:

# Run this script as root
  
import time
from datetime import datetime as dt
  
# change hosts path according to your OS
hosts_path = "/etc/hosts"
# localhost's IP
redirect = "127.0.0.1"
  
# websites That you want to block
website_list = 
["www.facebook.com","facebook.com",
      "dub119.mail.live.com","www.dub119.mail.live.com",
      "www.gmail.com","gmail.com"]
  
while True:
  
    # time of your work
    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:
                    # mapping hostnames to your localhost IP address
                    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)
  
            # removing hostnmes from host file
            file.truncate()
  
        print("Fun hours...")
    time.sleep(5)

Windows 用户特别注意: Windows 用户需要创建操作系统主机文件的副本。现在在脚本中提到的hosts_path中提供重复文件的路径。

在 Mac 中调度上述脚本在 Mac 中调度上述脚本,您必须以 root 身份在终端中打开 crontab。

  1. 在终端中写入以下命令:
    sudo crontab -e

    您的终端应如下所示:

  2. 现在按“i”进入插入/编辑模式并写入@reboot python_script_path。
  3. 首先按 esc 退出写入模式并回退到命令模式,现在写入“:wq”,最后按 Enter 键以保存选项卡。
  4. 重新启动您的系统,看看魔法。

Windows 中的调度:上述脚本的调度有点小技巧,但我将逐步指导您-

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

    您可能会看到网站拦截器已经安排好了,因为我已经在我的电脑中安排了我的测试目的。仔细遵循安排的进一步说明,以便在您的计算机中安排网站拦截器。

  3. 点击“创建任务”。填写您选择的名称并标记“以最高权限运行”。

  4. 现在转到触发器,选择“启动时”开始任务。
  5. 转到操作栏并创建一个新操作并提供脚本的路径。

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

  7. 按确定,您可以看到预定的脚本。
  8. 最后重启你的电脑,看看神奇。

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