# a simple script to block websites from datetime import datetime import sys if sys.platform == 'win32': hosts_path = r"C:\Windows\System32\drivers\etc\hosts" else: hosts_path = '/private/etc/hosts' redirect = "127.0.0.1" class Blocker: def __init__(self, time, block): self.time = time self.block = block def block_websites(self): if datetime.now() < self.time: print("Block sites") with open(hosts_path, 'r+') as hostfile: hosts_content = hostfile.read() for site in self.block: if site not in hosts_content: hostfile.write(redirect + " " + site + "\n") else: print('Unblock sites') with open(hosts_path, 'r+') as hostfile: lines = hostfile.readlines() hostfile.seek(0) for line in lines: if not any(site in line for site in self.block): hostfile.write(line) hostfile.truncate() # sudo python main.py if __name__ == '__main__': end_time = datetime(2021, 10, 1, 20) # y, m, d, h, min sites_to_block = ['www.facebook.com', 'facebook.com'] block = Blocker(end_time, sites_to_block) block.block_websites()