Про opendns я слышал давно, как бы не лет 10 назад, изначально, как средства защиты детей от плохого контента и даже какое то время ими пользовался с целью блокировки определенных сайтов.

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

На уму у меня несколько путей решения проблемы:

  1. координальный, это снести с телефона все приложения, и на уровне /etc/hosts заблокировать vk.com, facebook.com, и повторить опыт великого поста, когда я старался не заходить в соц. сети и пользовался только instagram, но решил, что может позже и повторю данный опыт
  2. второй и где-то самый простой это плагины для хрома, которые по времени могут отключать определенные сайты, но, это немного не то, т.к. работает на телефоне, и эти плагины мне не очень понраились
  3. третий, это блокировка через opendns (думаю есть ещё другие dns сервисы, но гуглинг не дал вменяемых альтернатив), но в какой то степени это повторяет первый способ, но дополнительно решает вопрос с телефонами и вообще со всеми девайсами дома.

Подумал, и решил, что хочу третий способ почти мне подходит.

Через opendns можно отключить одной галкой все соц. сети, и прочие, у меня сейчас вне зависимости от текущего времени (об этом чуть ниже), не работают сайты из категорий:

  1. Adult Themes
  2. Adware (кстати отлично блокирует рекламу в бесплатных приложениях на телефоне)
  3. Alcohol
  4. Anime/Manga/Webcomic
  5. Dating
  6. Drugs
  7. Gambling
  8. Games
  9. Hate/Discrimination
  10. Lingerie/Bikini
  11. News/Media (ничего полезного я там не узнаю)
  12. Parked Domains
  13. Pornography
  14. Sexuality
  15. Tasteless
  16. Tobacco
  17. Weapons
  18. Web Spam

И появляется желание разрешить работу социальных сетей в следующих интервалах:

  1. В 7 утра не зависимо от дня недели соц. сети начинают работать
  2. в 12 часов с понедельника по пятницу перестают работать
  3. в 8 вечера начинают работать вновь
  4. в 11 вечера, не зависимо от дня — перестают работать (ибо надо спать)

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

Но ходить руками и включать/выключать галку соц. сетей, это плохая идея, которая очень быстро надоест.

Выход из ситуация решать проблему самому, но начинается новая проблема, или не проблема, но человеческих решений через API у opendns нет, через API можно в лучшем случае обновить только свой текущий IP адрес.

Тогда идём другим путём, будем эмулировать авторизацию по необходимости, и в случае успешной авторизации сторить куку на будущее и ходить с ней, после авторизации посылать наш post запрос на обновление данных (включать/выключать нужные галки).

Ушло наверное 2-3-4 часа на то, что бы накатать скрипт (уже не вспомню, как долго), причем больше всего времени на отладку, с авторизацией (какая то ерунда творилась), в итоге на выходе около 100 строк кода, залил на сервер и в cron дважды с интервалом в 5-7 минут запуск ежечасно (второй запуск, если первый не сработает). По итогам недели, работает без сбоев, изменения вступают в силу в течении 3-5 минут (это стандартно для opendns).

Конечно, всё это можно отключить через /etc/resolv.conf (а на днях пришлось так поступить, т.к. сайт s7 не работает с фильтрами opendns, подозреваю, связано с блокировкой рекламы), но цель больше, чтоб когда внезапно открыл страницу, чтоб тебя отправило куда нибудь прочь.

Результат увидеть можно на гитхабе https://github.com/sopov/opendns

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *