RKN Alert — база Роскомнадзора у вас в браузере
Как и все, я пользуюсь одним из простых способов обхода блокировок, коих сейчас море. Все сайты открываются без проблем и тормозов. Но с недавних пор (2 недели назад) у меня встал вопрос: а какие сайты на самом деле заблокированы из тех, что открываются, а какие нет? Каждый сайт проверять вручную на официальном сайте РКН — не вариант, хоть это и самый надёжный способ.
Естественно, я пошёл гуглить подходящие инструменты, но к великому удивлению ничего не нашёл.
к содержанию ↑Идея
Так родилась идея сделать расширение (опенсорсное), которое будет проверять каждый сайт на соответствие записям в базе РКН. Сначала оно было простое, проверяло только домен. Сейчас оно даже показывает, был ли сайт заблокирован неправомерно (попал под раздачу).
Например, reactos.org или 7-zip.org (на момент прочтения статьи они могут быть уже разблокированы). Вообще с начала войны с Телеграмом многие сети до сих пор находятся в постоянной блокировке, периодически этот список меняется по неизвестным законам.
к содержанию ↑Как работает расширение
- Скачивает базу РКН и хранит её локально.
- В текущей вкладке проверяет URL (есть ли он в базе).
- Вырезает домен из URL и проверяет, есть ли домен в базе.
- Проверяет текущий ip-адрес в базе, по которому загружен текущий сайт.
- Проверяет принадлежность ip-адреса заблокированным подсетям.
- Показывает отчёт в форме иконки. Если её нажать, то чуть более подробная информация.
А что если в браузере прокси?
Если в браузере настроен прокси, то расширение работает в пол силы, т.к. испытывает проблемы с определением текущего ip сайта. Вместо этого определяется ip прокси-сервера.
Речь только о прокси в самом браузере, а не о VPN и прочих способах обхода. Кстати, для определения ip понадобились права webRequest (доступ к данным). Также ip не определяется из браузера Tor (к сожалению).
А если сайт заблокирован провайдером?
Другая техническая трудность — это определение текущего ip, когда сайт недоступен (предположительно заблокирован, а обход блокировок не настроен). В этом случае браузер не предоставляет информацию об ip-адресе. А нам нужен именно тот ip, по которому браузер пытается установить соединение — и его определить невозможно, увы.
Но проверка по URL и домену при этом работает исправно.
А что, если сайт просто лежит?
На этот случай есть функция проверки доступности сайта, — она работает независимо от DNS и блокировок (пока соответствующий сервис хостинг работает без сюрпризов). После установки расширения её нужно включить в настройках. Но определить ip не получится по той же причине, что и в предыдущем абзаце. Есть идея вытягивать оттуда информацию об ip, но он может отличаться от вашего.
Что если провайдер перенаправляет DNS?
Если у провайдера блокировка на уровне DNS, то расширение будет получать ложный текущий ip сайта и не подозревать об этом. И наоборот, если вы пропишите нужные ip в файл hosts (или даже у вас свой DNS-сервер), то во всплывающем отчёте будут именно они. Проверка по URL и домену при этом работает исправно, т.к.
они берутся из строки адреса в браузере.
Пытаемся решить проблемы с ip
В качестве полумеры для решения подобных проблем расширение осуществляет DNS запрос и определяет все ip сайта, а также их статус нахождения в базе РКН. При этом расширение точно не знает, какой из нескольких ip используется в данный момент для обращения к проверяемому сайту. Поэтому если хоть один ip заблокирован, то расширение бьёт тревогу и меняет цвет иконки на красный.
Для получения DNS записей приходится использовать внешний сервис через HTTP-DNS, потому что сам браузер не позволяет резолвить адреса. Но это и хорошо, т.к. провайдеры не блокируют и не перенаправляют подобные запросы.
Надёжность информации высокая. Можно использовать днс от Google или Cloudflare, а также пользователь brzsmg захостил вечный бесплатный днс, за что ему спасибо.
Где взять свежую базу РКН?
Конечно же, отдельный квест был поиск наиболее адекватной базы РКН. Дело в том, что сам РКН не держит базу в открытом доступе. Вместо этого он предлагает провайдерам использовать цифровую подпись для доступа к базе.
У меня лишней ЭЦП под рукой не оказалось. Между тем, РКН рекомендует провайдерам обновлять базу раз в час. А некоторые «срочные» обновления базы происходят ещё чаще.
То есть ковровая блокировка может задеть ключевые (или ваши) ресурсы всего на пару часов, а потом исчезнуть, как ни в чём не бывало. Наиболее приемлемым оказался часто обновляемый файл на github. Спасибо добрым людям!
к содержанию ↑Заглушка провайдера
Ситуации, когда показывается заглушка провайдера, расширение распознаёт. Оно запоминает информацию о странице, с которой был редирект на заглушку, и показывает информацию о сайте, а не о заглушке. Сейчас поддерживаются: Ростелеком, МТС, Билайн, Йота, ТТК, Дом.ру.
Если у вас особая заглушка у провайдера, её можно указать в настройках, и она будет распознаваться (не будет рассматриваться, как сайт).
Что делать, если РКН заблокировал сайт. На примере личного опыта
По данным FAQ на сайте РКН, в теории, если нарушение устранено, вы должны быть разблокированы в течении 3 дней после подачи уведомления. Но это теория. практика, к сожалению, не так оптимистична.
По крайней мере в нашем случае. Есть мнение, что в течении 3 дней разблокируют только если вас заблокировали по распоряжению Минкомсвязи, а если ФНС, МВД и прочие ведомства — это надолго.
Следующая