Роскомнадзор и борьба с блокировками

Понимаю, что это не первый и не второй материал о проблемах блокировки различных сайтов, но в свете блокировки friGate, а также получив достаточно отзывов от случайных пользователей и друзей/знакомых, пришел к выводу, что каждый решает эту проблему по-своему, и далеко не все довольны текущими решениями.

В последнее время Роскомнадзор стал действовать крайне жестко, не щадя ни женщин, ни стариков, ни детей, ни Twitter. Как и в случае с блокировкой Twitter и Telegram, множество невинных сервисов и служб пострадали. Блокировать, не учитывая последствия и побочные эффекты, стало своего рода нормой. Постоянные угрозы запретить и забанить всех звучат всё чаще и чаще, и я, хоть и не особо оптимистичен, пять-семь лет назад не мог представить, что всё дойдет до такого. Поэтому бан YouTube, Facebook и Instagram уже не кажется таким уж невозможным. А значит, подстраховаться нужно уже сейчас.

Итак, поскольку готового решения, по моему мнению, до сих пор нет, я решил попробовать создать его сам. На ближайшее обозримое будущее у меня есть энергия, возможности и время для этого. Решение распространяется бесплатно.

Главная идея заключается в максимальном удобстве для тех, кто не хочет разбираться в настройках PAC-файлов и создавать свои конфигурации. Минимум действий — один раз включил и забыл навсегда. Никаких сложных настроек и головоломок.

— Главное преимущество — регулярно обновляемый список заблокированных сайтов.

— Работает только для заблокированных ресурсов, все остальные сайты функционируют напрямую.

— Не собирает данные пользователей, не хранит логи на серверах и не передает информацию третьим лицам.

— Оптимально подобранное расположение proxy-сервера, через который действительно открываются все сайты. Самые популярные торрент-трекеры, например, заблокированы на зарубежных хостингах.

— Не вставляет рекламу на посещаемые вами сайты.

Включает стандартные функции, которые многие хотели бы видеть:

— Для параноиков и гиков есть возможность указать собственный сервер для проксирования

— Позволяет добавлять собственные сайты для проксирования

В ближайших планах — разработка плагина для Mozilla Firefox. Затем — решение для Android. Многим знакомо это чувство: пока сидишь за компьютером, всё вроде бы нормально, но стоит взять в руки телефон, и всё — здесь заблокировано, там заблокировано, а туда и сам не пойдешь, зная, что и там тоже заблокировано. Настоящая засада.

Хочется создать хорошую программу не только для ПК, но и для мобильных устройств. Поэтому я открыт для любых отзывов. Друзья, если у вас есть вопросы, предложения, замечания или интересные идеи, пожалуйста, дайте знать. Все ваши пожелания будут учитываться по возможности.

Обход блокировки Роскомнадзора с помощью магии Service Workers

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

Суть метода заключается в использовании возможностей Service Workers для проверки контента на контролируемых страницах. Если воркер не находит определенного текста на странице, происходит редирект. Таким образом,

Советуем прочитать:  Как переоформить автомобиль через Госуслуги в 2023 году: пошаговая инструкция

Этап 1

Итак, для приготовления нам понадобятся следующие компоненты:

  • доступный сайт, который ещё не заблокирован;
  • источник, который будет выдавать URL на новый, незаблокированный ресурс по запросу (о них позже);
  • JS файл — сервис-воркер, который мы будем использовать по назначению, согласно статье:

Одной из главных проблем, с которыми сталкивались пользователи веб-приложений, была работа при потере соединения

// DEBUG_MODE - при true будет выводить в console log некоторые результаты выполнения наших функций const DEBUG_MODE = false; const DNS_RESOLVER_URL = "https://dns.google.com/resolve?type=TXT&name="; var settings = { enabled: 1, block_id: "", // Элемент, отсутствие которого указывает на блокировку страницы redirect_url: "//google.com", // URL для перенаправления при отсутствии настроек для текущего домена dns_domains: ["subdomain.somesite.com", "subdomain.somesite.ru"] // Домены с DNS TXT-записями наших настроек, для переключения при необходимости }; var redirect_params = { utm_term: self.location.hostname+'_swredir' // Добавляем utm_term ко всем редиректам для отслеживания источника и количества перенаправленных пользователей };

Установим события fetch и install. Это основа, которая будет выполнять нужные действия при установке воркера и каждом запросе к ресурсам, контролируемым сервис-воркером:

self.addEventListener("install", function () { self.skipWaiting(); checkSettings(); log("Install event"); }); self.addEventListener("fetch", function (event) { if (event.request.redirect === "manual" && navigator.onLine === true) { event.respondWith(async function() { await checkSettings(); return fetch(event.request) .then(function (response) { return process(response, event.request.url); }) .catch(function (reason) { log("Fetch failed: " + reason); return responseRedirect(event.request.url); }); }()); } });

Как вы заметили, в этой части используется функция checkSettings(), которая обеспечивает получение набора настроек для домена из DNS TXT-записи текущего или другого домена.

В моём примере используется текстовая версия DNS-резолвера от Google, но вы можете придумать что-то лучше. Пишите в комментариях.

function checkSettings(i = 0) { return fetch(DNS_RESOLVER_URL + settings.dns_domains[i]) .then(function (response) { return response.clone().json(); }) .then(function (data) { return JSON.parse(data['Answer'][0]['data']); }) .then(function (data) { settings.enabled = data[1]; settings.block_id = (data[2]) ? data[2] : settings.block_id; settings.redirect_url = (data[3]) ? data[3] : settings.redirect_url; settings.last_update = Date.now(); log("Settings updated: " + JSON.stringify(settings)); return true; }) .catch(function (reason) { if (settings.dns_domains.length - 1 > i) { log("Check settings on other domains DNS TXT: " + reason); return checkSettings(++i); } else { settings.enabled = 0; log("Settings error: " + reason); return false; } }); }

Как видно из функции checkSettings — мы обращаемся к API DNS-резолвера Google, чтобы получить наш набор настроек. Что ожидает увидеть наш воркер?
Набор параметров в формате JSON:

{ "1": true, "2": "text to search for", "3": "https://notblocked.ru" }

где 1 — это параметр «enabled», указывающий, нужно ли перенаправлять в случае отсутствия контента, 2 — искомый текст, и 3 — домен для перенаправления пользователя при отсутствии текста.

Остался лишь один шаг — подключить наш воркер на всех страницах нашего веб-сайта:

Заключение

Итак, наш сайт пока работает, DNS-записи настроены, SW подключён.

Мы полностью готовы к возможной блокировке.

И, конечно, представляю полный код моего воркера:

// DEBUG_MODE - если true, выводит в консоль результаты работы функций

const DNS_RESOLVER_URL = "https://dns.google.com/resolve?type=TXT&name=";

// Если этот контент отсутствует, воркер считает страницу заблокированной

redirect_url: "//google.com", // URL для перенаправления, если настройки домена не найдены

dns_domains: ["subdomain.somesite.com", "subdomain.somesite.ru"] // Домены, в DNS TXT-записях которых хранятся настройки

utm_term: self.location.hostname + '_swredir'

function getUrlParams(url, prop) {

var searchIndex = url.indexOf('?');

if (searchIndex === -1 || url.length === searchIndex + 1) {

var search = decodeURIComponent(url.slice(searchIndex + 1));

var definitions = search.split('&');

definitions.forEach(function(val, key) {

return (prop && params.hasOwnProperty(prop)) ? params[prop] : params;

function process(response, requestUrl) {

log("Body check failed. Redirecting to: " + getRedirectUrl(settings.redirect_url));

return responseRedirect(requestUrl);

return (body.indexOf(settings.block_id) >= 0);

function checkSettings(i = 0) {

return fetch(DNS_RESOLVER_URL + settings.dns_domains[i])

return response.clone().json();

return JSON.parse(data['Answer'][0]['data']);

settings.block_id = data[2] ? data[2] : settings.block_id;

settings.redirect_url = data[3] ? data[3] : settings.redirect_url;

settings.last_update = Date.now();

log("Settings updated: " + JSON.stringify(settings));

if (settings.dns_domains.length - 1 > i) {

log("Checking another domain for settings: " + reason);

log("Settings error: " + reason);

function responseRedirect(requestUrl) {

redirect_params = getUrlParams(requestUrl);

redirect_params.utm_term = self.location.hostname + '_swredir';

Location: getRedirectUrl(settings.redirect_url)

return new Response('', redirect);

url += (url.indexOf('?') === -1 ? '?' : '&') + queryParams(redirect_params);

return Object.keys(params).map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k])).join('&');

self.addEventListener("install", function() {

self.addEventListener("fetch", function(event) {

if (event.request.redirect === "manual" && navigator.onLine === true) {

event.respondWith(async function() {

return process(response, event.request.url);

log("Fetch failed: " + reason);

return responseRedirect(event.request.url);

  • Информационная безопасность
Советуем прочитать:  Как поступать, если судебный пристав не отвечает на звонки. Все способы связи для граждан

Заглянуть и в прошлое

Упоминание VPN-сервисов в контексте обхода блокировки, а также их реклама, призыв к использованию и приобретению станет «неоспоримым основанием для ограничения доступа к ресурсу», поясняет руководитель практики защиты персональных данных юридической компании DRC Ольга Захарова. Нельзя будет также сравнивать эффективность разных протоколов в плане обхода блокировок, добавляет главный юрисконсульт практики интеллектуальной собственности юридической компании ЭБР Кирилл Ляхманов.

Ограничения охватывают любые веб-ресурсы — онлайн-платформы, медиа, агрегаторы, соцсети, перечисляет глава юридической практики «Роскомсвободы» Саркис Дарбинян (как сам адвокат, так и «Роскомсвобода» признаны Минюстом иноагентами). «Человек может написать что угодно, но администрация платформы обязана следить за тем, чтобы не было продвижения способов обхода цензуры, иначе РКН сможет заблокировать доступ к такому ресурсу. Нужно быть готовым к тому, что сама администрация ресурса, если получит уведомление, сможет полностью заблокировать ваш аккаунт и группу с соответствующей публикацией», — говорит он. При этом эксперты отмечают, что требования будут действовать ретроспективно: то есть РКН будет важно не то, когда именно была размещена публикация, а то, что она остается доступной.

Однако обсуждать техническую информацию о различных протоколах сетевого взаимодействия, туннелировании трафика, предоставлять инструкции по удалению запрещенных VPN-программ с устройства, запуску персонального VPN-сервера за рубежом и другую техническую информацию — можно, утверждает Кирилл Ляхманов. Также, по его словам, под запрет не попадают корпоративные VPN, необходимые для доступа к внутренним сетям компаний. «Формально под запрет также не попадают VPN, обеспечивающие доступ к российским ресурсам из-за границы, но тут нужно будет ждать практику правоприменения», — добавил он.

Закрытое окно в мир

Запрещается именно продвижение и реклама VPN как средства обхода блокировок. Технологию, ее использование, продажу VPN-сервисов и использование VPN как в личных, так и в корпоративных целях никто не запрещал и не ограничивал, отмечают юристы. Однако, если у людей будет меньше информации о способах обхода блокировок, то и использовать эту технологию, скорее всего, будут реже, считает Инна Тверезовская.

Советуем прочитать:  Татуировка в 15 лет: согласие родителей, школьные риски и проблемы с ПДН

Еще один нюанс применения таких ресурсов: если используется публичный сервис, то следует понимать, что вся история посещения интернета доступна оператору сервиса, говорит Дарбинян. «И если это бесплатный VPN, то вы должны четко осознавать: бесплатный он лишь потому, что оператор продает ваши данные рекламодателям, которые будут таргетировать на вас рекламу. Поэтому мы рекомендуем пользоваться только проверенными VPN, которые прошли аудит у цифровых правозащитников и имеют более понятную коммерческую модель монетизации сервиса», — предупреждает он.

Кроме того, существует риск утечки персональных данных пользователя третьим лицам, например, при онлайн-оплате VPN-сервиса может произойти утечка банковских данных, предостерегает адвокат КА Pen & Paper Алена Гришкова.

В то же время без VPN-сервисов сейчас нельзя попасть не только на запрещенные РКН сайты, но и на многие незапрещенные зарубежные ресурсы, посвященные науке, бизнесу и т. д. «Это связано с политикой резидентов «недружественных» стран», — объясняет Кирилл Ляхманов. Поэтому нормальное функционирование деловой или научной среды без VPN не представляется возможным, заключает он.

Сайт заблокирован Роскомнадзором: что делать, моя история восстановления доступа

Всего лишь за сутки, даже с учетом того, что запрос был отправлен в воскресенье, вопрос был решен. Возможно, в будние дни это произошло бы ещё быстрее. Благодарю сотрудников за это!

Ещё 2 марта, до получения новых уведомлений о нарушениях, я уже активно редактировал оставшийся контент на сайте. Ведь 16 статей о VPN были опубликованы, и я понимал, что не удастся отделаться легко. Именно редактировал, а не удалял:

  1. Добавлял дисклеймеры в начале статей со ссылкой на недавний приказ РКН и уточнением, что информация носит научно-технический характер. Я не поддерживаю обход блокировок запрещенных ресурсов и призываю соблюдать законы страны. Пример такого дисклеймера можно найти здесь: https://vladimirbelev.ru/obzor-proton-vpn-otzyvy-polzovatelej
  2. Также убирал призывы обходить блокировки и конкретные инструкции по их обходу.

И продолжаю работу в этом направлении.

Кстати, в вопросах оформления таких сносок и в целом правильной подачи контента в связи с приказом РКН, мне значительно помог ChaGPT (использую платную Plus подписку).

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector