Маскировка shadowsocks или obfs4 от DPI

Пруфы есть в соседней теме, которую разделили. Если, конечно, скриншот считается пруфом. А также обсуждение здесь (про shadowsocks, но принцип тот же).

Длина явно не совсем рандомна. См. скриншот в соседней теме. А у нас не стали глубоко копать, подключать ИИ, чтобы определить есть ли какая-нибудь закономерность в рандомном потоке и подобные навороты. Просто детектят по длине. Что-то типа такого (это копипаста из shadowsocks):

Блокировка, по-видимому, основана не на характеристиках протокола покрытия, а на шаблонах трафика HTTPS внутри туннеля. Один шаблон блокировки, по-видимому, таков: клиент отправляет не менее 3 пакетов, каждый из которых имеет размер 411 байт или больше, а сервер отправляет пакеты чаще, чем клиент (размеры пакетов сервера не имеют значения). Обычные HTTP-соединения внутри туннеля не блокируются, поскольку с ними клиент отправляет менее 3 пакетов. curl с mbedtls не вызывает блокировку, поскольку его пакет ClientHello меньше порогового значения в 411 байт.

Суть в том, что библиотека openssl (которая используется для TLS) использует padding для совместимости с каким-то неиспользуемым старьём и пакеты получаются неоправданно большие. Можно пересобрать openssl (и tor), отключив в openssl этот фикс или использовать другие TLS движки (вроде mbedtls). Но вот конкретно с тором резуальтата это не дало (какие только движки не пробовал), возможно, паддинг добавляет сам тор или у него просто пакеты большие.

Кстати, tor (без obfs4) через shadowsocks тоже детектится (детектится shadowsocks, точнее детектится торовский TLS в shadowsocks). Но только bootstrap, а потом пакеты идут нормально. Похоже, только при bootstrap пакеты большие с характерным паттерном. А вот shashadowsocks 2022 похоже действительно рандомизирует длину, потому что не детектится по размеру (его берёт только белый список протоколов).