Найти в Дзене

Блокировка сайтов в Windows на Python

У очень многого количества людей есть дети, которые проводят за компьютером больше половины дня, а то и весь день. Особенно в наше время, нынешнее поколение детей начали получать телефон, телевизор, планшет или компьютер для отвлечения внимания. Лишь бы не орал и не рыдал……

При кормлении ребенка происходит таже песня, на посмотри веселое видео, красочное, которое отвлечет внимание.

Эта привычка начинает переходить из раннего детства в юношеский возраст, различные социальные сети такие как VK, YouTube, Retube, Tik-Tok и многие другие забирают внимание детей, а также большинства взрослых. Помимо не сделанных уроков, не убранной квартиры или дома, мы получаем детей, которые производят прием пищи за телефоном. Пошел в туалет тоже с телефоном.

Дети за компьютером
Дети за компьютером

Ну да ладно…. Столкнулся я с такой временной (надеюсь) трудностью что при дистанционном обучении в соседней вкладке на компьютере открыта вкладка YouTube и, пока не заглядывают в компьютер родители, ребенок смотрит видео попутно пытаясь запомнить, что говорит учитель. Потом же родители зададут вопрос, что же там рассказывали на этих уроках, да еще и домашнее задание выполнить нужно.

Решил я написать приложение на языке программирования Python, которое будет блокировать заданные сайты в определенное время, а после разблокировать их. Поделюсь, может кому пригодиться.

Блокировка сайтов
Блокировка сайтов

Поехали……

Будем делать все через переадресацию сайтов на определенный адрес, через файл hosts.

Указываем адрес переадресации 127.0.0.1, поле указываем путь к файлу hosts.

redirect = "127.0.0.1"

host_path = "C:\\Windows\\System32\\drivers\\etc\\hosts"

Создаем пустой список для добавления в него сайтов которые нам нужны

site_list = []

Далее нам нужно указать время добавления сайтов, которые мы хотим заблокировать, а после разблокировать. Для этого в самую верхнюю строку мы должны импортировать библиотеку, которая отвечает за время from datetime import datetime as dt.

Добавили, молодцы, указываем часы, минуты и секунды, «заблокировать» и «разблокировать».

now = dt.now()

my_time_1 = now.replace(hour=8, minute=0, second=0, microsecond=0)

my_time_2 = now.replace(hour=10, minute=0, second=0, microsecond=0)

Язык программирования Python
Язык программирования Python

После создадим функцию для запроса у нас «сайтов для блокировки» с обработчиком ошибок. Функция предоставляет ввод от пользователя сайтов через разделитель «запятая». После ввода всех задуманных сайтов нажатие кнопки Enter т.е. пустой ввод говорит о том что мы закончили с вводом и можно отправлять данные в наш список. Рядом с файлом, в котором написан код, мы создаем вручную тектовый файл text.txt

def write_list():

try:

with open("text.txt", 'r+') as file:

content = file.read()

if content == '':

list_input = input("Введите название сайтов через запятую: ").split(",")

file.write(",".join(list_input))

for list in list_input:

site_list.append(list)

else:

for list in content.split(","):

site_list.append(list)

except:

print("Внимание ошибка!!!")

Ну и, собственно, теперь выполнение:

При условии, что «Правда», запускается функция write_list. После сравнивается время, которое заданно и которое сейчас.

while True:

write_list()

if my_time_1 < now < my_time_2:

После открывается наш файлу hosts и вноситься изменения, либо записывается, либо удаляется.

with open(host_path, "r+") as file:

content = file.read()

for website in site_list:

if website in content:

pass

else:

file.write(redirect + " " + website + "\n")

else:

with open(host_path, "r+") as file:

content = file.readlines()

file.seek(0)

for line in content:

if not any(website in line for website in site_list):

file.write(line)

file.truncate()

Программа работает отлично, текстовый файл «text.txt» сохраняет введенные «сайты» и в следующие запуски отдает их нашей программе.

После применения этой программы мой сын начал нормально выполнять уроки, делать легкую уборку в квартире, а также у него появилось время на «покушать»)

Надеюсь, кому - то пригодиться.

Полный код приложения вы можете найти по ссылке

git@github.com:dansemaxtor/blocking-sites.git