Если вы в очередной раз словили себя на том, что уже два часа времени провели впустую, читая новости и твиттер, совсем забыв про работу, то самое время поставить Focus.py.

Focus.py — это маленький DNS-сервер, который ставится на localhost и пропускает через себя все DNS-запросы. Но при этом у него есть удобные API, так что можно быстро написать пару строчек в конфигурацию — и заблокировать определённый сайт в определённое время.

Самое замечательное, что каждое правило выражается в виде функции Python. Например, вот пример функции для блокирования Reddit.

def domain_reddit_com(dt):
    return dt.hour == 21 # allow from 9-10pm

Другая интересная особенность Focus.py: он уменьшает TTL для каждого DNS-запроса, чтобы браузер не кэшировал пары «домен / IP-адрес», поэтому фильтрация будет более эффективной.

Вот другие правила фильтрации доменов, каждому домену — своя функция.

import re

def domain_ycombinator_com(dt):
    # return dt.hour % 2 # every other hour
    return False

def domain_reddit_com(dt):
    # return dt.hour in (12, 21) # at noon-1pm, or from 9-10pm
    return False

def domain_facebook_com(dt):
    return False

def default(domain, dt):
    # do something with regular expressions here?
    return True

Для запуска Focus нужно прописать его первым DNS-сервером в /etc/resolv.conf:

nameserver 127.0.0.1

После этого запустить непосредственно саму программу.

sudo python focus.py &

Чтобы остановить Focus, нужно найти соответствующий процесс в списке:

sudo netstat --inet -anpu | grep :53

Найдя процесс на 53-м порту, его можно убить, указав идентификатор процесса.



Оставить мнение