Я устал от того, что власть имущие упыри делают с нашим интернетом:
Нас лишают доступа в интернет, когда им удобно
Ресурсы лишают статуса СМИ
Ресурсы блокируют
Ресурсы называют экстремистскими за освещение реального положения дел
Журналисты, выполняющие свою работу, получают реальные тюремные сроки
Увы, я не могу решать все эти проблемы. Но попробую сдвинуться с мёртвой точки в решении хотя бы части из них
Я планирую небольшой цикл статей, и это первая из них. Тут я расскажу, что можно сделать только браузером
Ликбез. Как работает интернет?
В протоколах TCP и UDP, поверх которых работает семейство протоколов HTTP, нет понятия «имя хоста» / «имя ресурса». Вместо этого они оперируют IP-адресами. Для того, чтобы преобразовать имя хоста в IP-адрес (или «отрезолвить имя хоста»), применяются DNS-сервера. Только после успешного преобразования имени хоста в IP-адрес происходит соединение с ресурсом
Цензура нарушает ход вещей. Механизмы цензуры атакуют инфраструктуру сети Интернет и нарушают доступность и работоспособность ресурсов
Как работает цензура?
Некоторые вектора атаки:
DNS-сервер может вернуть совсем не то, что вы бы хотели. Это называется подменой DNS
Допустим, мы смогли отрезолвить хост верно (или получили правильный IP-адрес целевого хоста). Далее происходит попытка подключения. На этом этапе ваш запрос может быть отфильтрован провайдером. Это называется фильтрацией по IP-адресу
Допустим, соединение установлено. Провайдер может принять решение его оборвать на основании анализа вашего трафика
1. Подмена DNS
Классика — прописать вручную DNS-сервера google 8.8.8.8 и cloudflare 1.1.1.1. Но я отказался от такой конфигурации в пользу DoH — DNS-over-HTTPS, так как протокол DNS не защищён ни от прослушивания, ни от подмены, ни от фильтрации трафика по протоколу. Для DoH такое сделать сложнее — без cloudflare солидная часть интернета ляжет
Наконец, за реализацию механизма DNS-over-HTTPS в Британии компанию Mozilla назвали «злодеем года» — это о чём-то говорит
Firefox + DoH
Технология DNS-over-HTTPS впервые появилась в Firefox 73 в 2018 году. Убедитесь, что версия Вашего браузера Firefox не ниже 73
Со значением всех настроек можно подробнее ознакомиться в документации на support.mozilla.org и wiki.mozilla.org. Совет — обязательно проверяйте, какие именно настройки вы устанавливаете в соответствии с документацией. Я могу ошибиться, школьник Петя может накрутить отсебятины, работающей только в его богатом воображении, а товарищ майор Василий Мусоров может и вовсе написать крайне убедительную статью про настройку браузера, с предсказуемым для Вас финалом
В адресной строке браузера набираем about:config
В открывшемся окне в строке поиска настроек набираем network.trr
Находим настройку network.trr.mode. Я её установил в значение 2
Находим настройку network.trr.excluded-domains, и там указываем onion,i2p

2. Фильтрация по IP-адресу
Тут идея достаточно простая — пустить трафик не на заблокированный узел, а куда-нибудь в обход — через proxy-сервер. Хотелось бы сделать это по-умному, минимизировав объём трафика через дохлый proxy-сервер. Какой смысл гонять через proxy тот же youtube? Объём трафика просто положит proxy-сервер
SmartProxy — создаём эффективные правила проксирования
Хорошая новость для тех, кто пользуется Chrome: SmartProxy доступен как для Firefox, так и для Chrome
Устанавливаем SmartProxy. Разрешаем его работу в приватном режиме

Открываем панельку дополнения и активируем. После кликаем «Settings», и там находим «Прокси Сервера»

Ручное добавление Proxy сервера
Чуть дальше я расскажу об автоматическом добавлении серверов. Не торопитесь бросаться добавлять сервера руками. Понимание процесса Вам потребуется, а вот ручная работа — нет
Списки proxy-серверов можно найти, например, на hidemy.name или на free-proxy.cz. Это ни в коем случае не все сайты, где можно найти списки proxy-серверов
Обращаю Ваше внимание — если Вы включили DNS-over-HTTPS, вам хватит SOCKS4, которых очень много. В противном случае Вам остаётся использовать только SOCKS5, которые поддерживают резолв имени хоста на стороне proxy, а найти быстрый рабочий SOCKS5-прокси — квест
Следует понимать, что наличие proxy-сервера не гарантирует его работоспособность. Адрес можно просто добавить в список proxy и попытаться зайти на интересующий ресурс через него. Это работает. Но все эти манипуляции занимают кучу времени. Намного быстрее проверить proxy-сервер через curl:
$ curl --socks4 111.22.33.44:5555 api.ipify.org
Важно: после нажатия на кнопку «Save» / «Сохранить» вы попадаете обратно к списку proxy-серверов. В самом низу нужно нажать синюю кнопку «Save Changes» / «Сохранить изменения». Если этого не сделать — изменения применены НЕ будут, и добавленные сервера исчезнут при закрытии вкладки
Автоматическое добавление Proxy серверов
Очень скоро ручное добавление proxy-серверов надоест. Я остановился на варианте, когда вручную добавлены только proxy-сервера специального назначения, а остальное я выгребаю через подписку
Гугление по запросу «socks4 txt» вывело меня на репозиторий. Это ни в коем случае не единственный список proxy-серверов в интернете


Почему именно такие значения? URL написаны в README вот тут. 10080 минут для периода обновления — это раз в неделю. Я посчитал это достаточным, но это не значит, что это единственно правильное значение. Протокол — в имени файла со списком серверов
После добавления можно нажать кнопку «Test». Если всё настроено правильно — SmartProxy скажет, сколько серверов было добавлено. После сохранения не забываем нажать синюю кнопку «Save Changes» / «Сохранить изменения». Если этого не сделать — вы повторите мой подвиг «Так, а куда они пропали? Только что ж были»
Правила проксирования
Мы добавили сервера, но без правил проксирования эти сервера лежат просто мёртвым грузом. Перейдём на вкладку «Proxy Rules» / «Правила проксирования»

Давайте попробуем добавить lurkmore.to — он точно заблокирован

Немного объясню, почему правило именно такое. Поле «Rule Type» / «Тип Правила» определяет, что правило будет применяться для всех URL указанного сайта и всех его поддоменов. «Rule Source Domain» указывает, что правило действует только для домена lurkmore.to и его поддоменов, и ни на что больше. Поле «Proxy Server» имеет значение [General] — это значит, что для текущего ресурса lurkmore.to будет применён текущий активный proxy-сервер. О выборе активного сервера следующий раздел. Можно также указать конкретный proxy-сервер из списка proxy-серверов, который мы наполняли ранее руками или по подписке
После сохранения правила не забываем нажать синюю кнопку «Save Changes» / «Сохранить изменения». Иначе ну вы поняли
Пытаемся зайти на сайт
Тут немного нетривиальной магии. Я просто тыкаю рандомный IP из списка и пытаюсь зайти на сайт. Не удалось — следующий IP

Магии тут немного. Автор дополнения хотел разместить флаг страны, где располагается proxy-сервер, но столкнулся с некоторыми трудностями. Я попросил его разместить хотя бы трёхбуквенный код страны для каждого proxy-сервера. Математика проста — чем ближе страна, тем меньше задержка. Также будет очень глупо попасть на proxy-сервер страны, где ресурс заблокирован
3. Анализ ваше��о трафика
Шифрование сильно усложняет анализ трафика, но не делает его невозможным. По возможности, следите, чтобы использовался протокол https. Воспользуйтесь дополнением HTTPS Everywhere для Chrome и Firefox, который позволяет определить правила автомагического редиректа с протокола HTTP на протокол HTTPS
ESNI
Для шифрования HTTP-трафика и таким образом преобразования его в HTTPS применяется протокол TLS. Проблема протокола TLS в том, что он позволяет на одном сервере запустить лишь один HTTPS-сервер — прямо как старый добрый HTTP 1.0. Для решения этой проблемы разработан протокол SNI. И вот тут была допущена ошибка — имя хоста передаётся в открытом виде. Это имя хоста перехватывает DPI провайдера и принимает решение о разрыве соединения. Идея ESNI проста — зашифровать SNI
Firefox — первый браузер, реализовавший поддержку ESNI. Включаем:
В адресной строке браузера набираем about:config
В открывшемся окне в строке поиска настроек набираем network.security.esni.enabled
Двойным кликом мышки устанавливаем в значение true

Проверить, работает ли ESNI в браузере, можно тут
ESNI очень не понравился власть имущим упырям, и его полностью блокируют в России и Китае — прям знак качества
