Хабрахабр

RKN Alert — база Роскомнадзора у вас в браузере

Как и все, я пользуюсь одним из простых способов обхода блокировок, коих сейчас море. Все сайты открываются без проблем и тормозов. Но с недавних пор (2 недели назад) у меня встал вопрос: а какие сайты на самом деле заблокированы из тех, что открываются, а какие нет? Каждый сайт проверять вручную на официальном сайте РКН — не вариант, хоть это и самый надёжный способ. Естественно, я пошёл гуглить подходящие инструменты, но к великому удивлению ничего не нашёл.
Так родилась идея сделать расширение, которое будет проверять каждый сайт на соответствие записям в базе РКН. Сначала оно было простое, проверяло только домен. Сейчас оно даже показывает, был ли сайт заблокирован неправомерно (попал под раздачу).

испытывает проблемы с определением ip сайта. Правда, если в браузере настроен прокси, то расширение работает в пол силы, т.к. Также ip не определяется из браузера Tor (к сожалению). Кстати, для определения ip понадобились права webRequest (доступ к данным).

В этом случае браузер не предоставляет информацию. Другая техническая трудность — это определение ip, когда сайт недоступен (предположительно заблокирован, а обход блокировок не настроен). В качестве полумеры расширение осуществляет DNS запрос и определяет все ip сайта, а также их статус нахождения в базе РКН. А нам нужен именно тот ip, по которому браузер пытается установить соединение — и его определить невозможно. Сервис, кстати, бесплатен и имеет лимиты, так что вполне возможно отвалится в будущем. Для получения DNS записей приходится использовать внешний сервис dns-api.org, потому что сам браузер не позволяет резолвить адреса.

И наоборот, если вы пропишите нужные ip в файл hosts (или даже у вас свой DNS-сервер), то во всплывающем отчёте будут именно они. Если у провайдера блокировка на уровне DNS, то расширение будет получать ложные ip сайтов и не подозревать об этом. В особых случаях (недоступность сайта или текущий ip в чёрном списке) будут выяснены ip через http-dns, который провайдером не блокируется в силу специфичности подобного способа. Но обычно сайт всё же блокируется по домену, а уж эта информация легко доступна из URL. Если кто-то готов поднять свой http-dns для всех желающих без лимита, то можно будет настроить резолвинг для всех сайтов.

Естественно, проверку доступности и http-dns можно отключить в настройках. Однако функция проверки доступности сайта работает независимо от DNS и блокировок (пока соответствующий сервис работает без сюрпризов).

Дело в том, что сам РКН не держит базу в открытом доступе. И, конечно же, отдельный квест был поиск наиболее адекватной базы РКН. У меня лишней ЭЦП под рукой не оказалось. Вместо этого он предлагает провайдерам использовать цифровую подпись для доступа к базе. То есть ковровая блокировка может задеть ключевые (или ваши) ресурсы всего на пару часов, а потом исчезнуть, как ни в чём не бывало. Между тем, РКН рекомендует провайдерам обновлять базу раз в час. Спасибо добрым людям! Наиболее приемлемым оказался часто обновляемый файл на github.

Оно запоминает информацию о странице, с которой был редирект на заглушку, и показывает информацию о сайте, а не о заглушке. Ситуации, когда показывается заглушка провайдера, расширение распознаёт. Если у вас особая заглушка у провайдера, её можно указать в настройках, и она будет распознаваться (не будет рассматриваться, как сайт). Сейчас поддерживаются: Ростелеком, МТС, Билайн, Йота, ТТК, Дом.ру.

Это напоминает DDoS атаку. Будущее RKN Alert вызывает смутные сомнения, потому что постоянное массовое скачивание тяжелых файлов может не понравится серверам, на которых они расположены. Конечно, рано об этом говорить, но всё же.

Всем добра!

S. P. Он ужасен! Не смотрите код! Всё же я не профессионал.

Показать больше

Похожие публикации

Добавить комментарий

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

Кнопка «Наверх»