[Из песочницы] Шлакоблокировки, или как заблокировать себе интернет
Не могу назвать себя человеком, обладающим огромной силой воли. Да и средненькой тоже. Зато очень люблю прокрастинировать и пользуюсь для этого любой имеющейся возможностью, например, просмотром мемов или бессмысленных видео на YouTube. Со временем это стало напрягать всё сильнее и сильнее и мешать учёбе/работе. При наличии стресса продуктивность стремилась к нулю, а занятия посторонними делами занимали всё свободное (и несвободное) время. Так началась моя борьба с интернетом. Как же она проходила?
Правило 20 секунд. Если вы хотите что-то сделать, вы должны начать это делать в течение 20 секунд. Отличное правило, если вы хотите завести себе новую привычку (вроде игры на гитаре, чтения книг и т.д.) — создать все условия для того, чтобы было просто начать. Это же работает и в обратную сторону — если вы хотите избавиться от какой-либо привычки, нужно сделать её как можно более недоступной. Следовательно, чтобы избавиться от привычки смотреть мемы и не очень умные видео, нужно максимально усложнить себе задачу.
Мир был простой и известный, статьи в интернете пестрели призывами к продуктивности и давали совершенно ясные и чёткие инструкции — установи расширение, укажи сайты, которые тебе нужно заблокировать, и, пожалуйста — твоя сила воли становится несгибаемой, а работоспособность взлетает до небес. Я вспомнил, что когда-то в детстве видел расширение Leech Block, которое позиционировало себя как спасение от сайтов, тратящих много времени, и решил установить его. Указал в качестве блокировки youtube.com и ряд других сайтов, и решил, что пора ждать той самой невероятной продуктивности.
Продуктивность не пришла. Некоторое время действительно удалось поработать, но очень быстро мозг догадался, что можно легко зайти в настройки и удалить сайт из списка заблокированных/убрать «только сегодня» из списка дней/установить блокировку на час с 05:00 до 06:00. С этим нужно было что-то делать.
Достаточно быстро я понял, что, как и в шифровании, должна быть асимметрия — должно быть легко заблокировать сайт и должно быть сложно эту блокировку снять. Для этих целей в LeechBlock есть возможность заставить себя вводить 32, 64 или 128-значный код.
Это действительно останавливает, до тех пор, пока ты не включаешь режим разработчика и не копируешь требуемый код из соответствующего элемента. К счастью, это обходится соответствующей настройкой.
Тем не менее, искусство слепого десятипальцевого набора вставляет палки в колёса — даже 128 символьный код вводится достаточно быстро, и блокировки снова снимаются. Печаль!
Я устал вводить 128-значные коды и всё равно сидеть на злополучных сайтах. Пора переходить на крайние меры. Установка пароля для доступа к расширению отлично помогает. Главное — удалить/забыть пароль сразу же после его ввода. Настройки поменять уже не получится, но нам ведь именно этого и хочется, не так ли? Данные меры действительно помогают на какое-то время избавиться от назойливого желания попробовать позаходить на соответствующие сайты, но мозг, который так любит решать задачки, уже ищет новую лазейку.
На этот раз мой ленивый мозг решил, что можно просто удалить расширение. Вот так просто — зайти в управление расширениями и удалить расширение. Или отключить его (естественно, «временно»). Это быстро вылечилось блокировкой страницы с расширениями (да, иногда неудобно, но установить новое расширение всё ещё можно).
К сожалению, существуют значки иконок в панели со строкой браузера, и при нажатии на значок расширения правой кнопкой существует пункт «Удалить расширение». Казалось бы, бой против интернета был проигран, но впереди ещё маячит надежда…
Пришла пора поговорить о браузерах. У меня на компьютере их обычно несколько, и на домашнем, и на рабочем, в основной набор входят Firefox и Chrome. До этого момента, в принципе, было неважно, какой браузер используется (если только вы не приверженец Egde или IE) — расширение работает и там, и там. Но теперь пришлось напрячься по-настоящему. После некоторых поисков в интернете и вопроса на форуме Mozilla оказалось, что можно настроить корпоративные политики работы в браузере, которые содержат в себе много чего интересного, в частности — запрет на удаление расширения. Firefox предоставляет несколько способов, самый удобный (и кроссплатформенный) — это файл policies.json, лежащий в подпапке distribution папки с самим браузером.
Вот так выглядит этот файл с настройками для запрета удаления расширения:
{
"policies" : {
"Extensions": {
"Install": ["https://addons.mozilla.org/firefox/downloads/file/1742831/leechblock_ng-0.9.11-an+fx.xpi"],
"Locked": ["leechblockng@proginosko.com"]
}
}
}
Отлично! Теперь удалить расширение из Firefox стало более проблематично. Нельзя сказать, что невозможно, но теперь на это придётся потратить куда больше времени, чем раньше.
Для Chrome дорожка оказалась несколько более кривой — на Windows можно провести настройку через реестр, а на линуксе — воспользоваться JSON файлом. Chrome теперь тоже под надёжной защитой (а вместе с ним и Chromium, который настраивается максимально похожим образом). Но на этом история не заканчивается.
В конце будет приведено содержимое .reg файла, который настроит необходимые политики через реестр для Chrome, Chromium и Firefox
Окей, в основных браузерах у нас уже есть рабочая система, которая не позволяет нам тратить время впустую. Но… У нас же есть и другие браузеры? Да! Скачать и установить новый браузер легче лёгкого, и вот YouTube уже запущен в Опере/Edge/IE/Comodo Dragon/Chromium/etc. Что же делать со всей этой оравой? Пришлось снова почесать репу как следует, потому что часть браузеров (IE/Edge) не поддерживают расширения, а устанавливать все остальные браузеры и настраивать в них корпоративные политики не представляется возможным.
Автор собирается блокировать все браузеры
Но даже в этом случае ещё не всё потеряно. На Windows нас выручает App Locker — просто скачиваем все браузеры и пачкой добавляем их в блокировку по издателю. Существует несколько браузеров вроде Chromium и ещё нескольких других, которые распространяются без подписи издателя, и для них есть только один выход — смерть блокировка сайта, с которого их можно скачать. Desperate times call for desperate measures.
Особняком стоят Edge и IE. IE в Windows 10 можно удалить и больше о нём не вспоминать (я пробовал смотреть через него ютуб, вполне похоже на поедание кактуса), устанавливать его обратно долго, нужно перезагружать компьютер, поэтому данный вариант нас вполне устраивает. Для избавления от Edge существуют программы вроде Edge Block, которые можно удалить после выполнения их героического долга. И заблокировать сайты с ними, чтобы наверняка.
Фуух, надо взять передышку и насладиться достигнутым результатом. Ютуб повержен и с позором изгнан с компьютера, но наша битва ещё не окончена. Отнюдь, остались ещё несколько серьёзных битв, проигрыш в которых мы просто не можем себе позволить.
Хорошие люди однажды придумали сайты для скачивания видео с YouTube и других сервисов. Хорошая идея которая абсолютно нам не помогает в достижении нашей цели по блокировке этого самого YouTube. Первый вариант решения проблемы — это решение проблемы в лоб. Перешерстить 3–4 страницы выдачи в разных браузерах (мозг всё ещё рассматривает это как головоломку, как и со стороны блокировки, так и со стороны её обхода) и заблокировать каждый сайт, который позволяет качать ролики с YouTube. Проблема возникает в том, что мы не можем добавить страницы пачкой (у нас же заблокированы настройки расширения), мы можем только открывать соответствующий сайт и добавлять его в набор блокировки через контекстное меню.
Рабочий ноутбук, домашний компьютер с dualboot, и по паре браузеров в каждой из операционных систем — очень не хочется повторять вышеуказанный алгоритм для каждого браузера (а при появлении нового сайта лень начинает сильно перевешивать, и продуктивность снова падает). Надо что-то придумать! К счастью, автор расширения уже всё придумал за нас — можно вынести список сайтов для блокировок в отдельный файл, загрузить его на dropbox, получить прямую ссылку и указать расширению, откуда грузить список сайтов для блокировок. Таким образом, мы существенно упрощаем добавление нового сайта в список заблокированных, а удаление его из нашего текстового файла в облаке не позволяет нам этот самый сайт разблокировать. То, что надо.
Единственная проблема — нужно получать доступ к расширению, а для этого всю защиту приходится снимать.
YouTube повержен; сайты, позволяющие скачать с YouTube, заблокированы. Казалось бы, можно праздновать победу, но нет, у нас остался один, самый крупный враг — поисковые движки. Поисковые движки помогали нам искать видео на YouTube, которые мы потом скачивали, странички с весёлыми мемами во Вконтакте (не блокировать же весь Вконтакте целиком, ну), yandex.ru/video позволял нам смотреть их напрямую, а про картинки я вообще молчу.
Что же нам делать? Осталась ещё пара козырей в рукаве. Первый из них — это блокировка не только по домену, но и по пути (да, yandex.ru/video заблокирует только видео, остальные сервисы Яндекса будут доступны). Второй — это блокировка по ключевым словам. Для лучших результатов нужно создать второй файл (который будет лежать в dropbox), в котором будут содержаться ключевые слова, необходимые для блокировок. Файл должен начинаться со строки с символом »*», указывающий на то, что данные блокировки применяются для всех сайтов, а перед ключевым словом стоит символ ~, означающий блокировку.
Несмотря на то, что блокировки уже занимают достаточное количество времени для их обхода, стоит подстраховаться и добавить ещё пару штрихов (чтобы уж наверняка). Например, продублировать политики для Firefox в реестре и через GPO, на случай, если очень захочется переименовать файл с политиками и сделать его нечитаемым; Добавить сохранение опций в sync storage (не знаю, зачем, но пусть будет. Переустанавливать браузер (ы) после всей проделанной работы как-то не хочется); Экспортировать настройки для быстрого развёртывания после переустановки системы или по каким-то другим причинам; на Linux можно (и нужно) защитить файлы с политиками через chattr. Удалить их всё ещё можно, но для этого нужно сделать ещё пару дополнительных шагов, чего мы и добиваемся; Если сильно упороться — можно заблокировать редактор реестра через групповые политики — на случай поползновений на политики, прописанные там.
Наверняка у вас есть телефон, и вы не хотели бы заходить на заблокированные сайты с телефона (я вот не хочу). Поэтому на телефоне пришлось тоже пройти через несколько итераций, и идея (необходимость) блокировать браузеры изначально пришла именно оттуда, потому что количество браузеров конечно, а новые браузеры не растут, как грибы (к счастью).
На Android существует множество приложений, которые позволяют вам управлять своим цифровым потреблением. Я пробовал пользоваться Stay Focused и BlockSite. BlockSite получает админские права и может заблокировать вам сайт в хроме или каких-то ещё мейнстримовых браузерах, но он не может заблокировать все браузеры в принципе и настраивать списки блокировок в нём не очень удобно. Кроме того, в мобильной версии нельзя задать сложный пароль, только 4-х значный цифровой пин, да и приложение удалить не так уж и сложно.
Stay Focused выглядит более перспективно в том плане, что он позволяет заблокировать браузеры (и любые приложения в принципе) и имеет (в платной версии) строгий режим, который нельзя снять ни при каких обстоятельствах. Можно запретить доступ к настройкам, чтобы не иметь даже теоретической возможности удалить само приложение, но не рекомендуется, потому что даже управление Bluetooth оказывается заблокированным. К сожалению, он не мониторит трафик, но нам это и не нужно. Пусть будет Single Responsibility.
Я блокировал все браузеры при помощи Stay Focused, это работает, но превращает телефон в инвалида. Тем не менее, можно оставить один браузер (Firefox, например, который поддерживает всё те же расширения, что и десктопная версия), поставить туда уже знакомый LeechBlock и загрузить в него файл с настройками, как и в десктопной версии. Теперь можно наслаждаться заблокированными YouTube и другими сайтами с телефона.
Кроме того, на мобильной версии идея со вводом 128-значного кода вполне жизнеспособна, потому что никакая слепая печать не поможет вам набирать столько рандомных символов на маленькой клавиатуре телефона, а всего одна ошибка — и код нужно набирать заново.
Таким образом, мы создали систему, которая требует значительных усилий для её отключения, что позволяет эффективно блокировать нежелательные сайты. На то, чтобы полностью пройти через все круги Ада итерации потребовалось полтора года, но результат того стоит.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Chromium\ExtensionInstallForcelist]
"1"="blaaajhemilngeeffpbfkdjjoefldkok;https://clients2.google.com/service/update2/crx"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist]
"1"="blaaajhemilngeeffpbfkdjjoefldkok;https://clients2.google.com/service/update2/crx"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox\Extensions]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox\Extensions\Install]
"1"="https://addons.mozilla.org/firefox/downloads/file/1742831/leechblock_ng-0.9.11-an+fx.xpi"
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox\Extensions\Locked]
"1"="leechblockng@proginosko.com"
setName1=SITES
sites1=10-youtube.com 100youtube.com 10convert.com 220youtube.com acomics.ru bash.im bitdownloader.com ddownr.com getvideo.org keepvid.pro notube.net onlinevideoconverter.com pikabu.ru pinterest.ru reddit.com savefrom.net savemedia.website saveyoutube.ru savido.net sconverter.com tasvideos.org topmemas.top tumblr.com twitch.tv twitter.com vk.com/mhkoff vk.com/mhkon vk.com/ru9gag y2mate.com yandex.ru/portal yandex.ru/video youtube-mp4.download youtube.com youtubeconverter.io youtubemp4.to youtufab.com
times1=0000–2400
limitMins1=
limitPeriod1=
limitOffset1=
conjMode1=false
days1=127
blockURL1=blocked.html?$S&$U
applyFilter1=false
filterName1=grayscale
activeBlock1=true
countFocus1=true
delayFirst1=true
delaySecs1=60
reloadSecs1=
allowOverride1=false
prevOpts1=true
prevExts1=false
prevSettings1=false
showTimer1=true
sitesURL1=https://dl.dropboxusercontent.com/s/your_data_here/blocksitelist.txt? dl=0
regexpBlock1=
regexpAllow1=
ignoreHash1=true
setName2=About: profiles
sites2=
times2=0000–2400
limitMins2=
limitPeriod2=
limitOffset2=
conjMode2=false
days2=127
blockURL2=blocked.html?$S&$U
applyFilter2=false
filterName2=grayscale
activeBlock2=false
countFocus2=true
delayFirst2=true
delaySecs2=60
reloadSecs2=
allowOverride2=false
prevOpts2=true
prevExts2=false
prevSettings2=false
showTimer2=true
sitesURL2=
regexpBlock2=about: profiles
regexpAllow2=
ignoreHash2=true
setName3=KEYWORDS
sites3=
times3=0000–2400
limitMins3=
limitPeriod3=
limitOffset3=
conjMode3=false
days3=127
blockURL3=blocked.html?$S&$U
applyFilter3=false
filterName3=grayscale
activeBlock3=false
countFocus3=true
delayFirst3=true
delaySecs3=60
reloadSecs3=
allowOverride3=false
prevOpts3=true
prevExts3=false
prevSettings3=false
showTimer3=true
sitesURL3=https://dl.dropboxusercontent.com/s/your_other_data_here/keywordlist.txt? dl=0
regexpBlock3=
regexpAllow3=
ignoreHash3=true
numSets=3
sync=true
theme=
oa=0
password=
hpp=true
timerVisible=true
timerSize=1
timerLocation=0
timerBadge=true
orm=
ora=0
orc=true
warnSecs=
warnImmediate=true
contextMenu=true
matchSubdomains=true
saveSecs=10
processActiveTabs=false
accessCodeImage=false
autoExportSync=true