Справедливости ради отмечу, что в текущую секунду проблема не повсеместная, я потыкал свои старые пробники на домашних подключениямх у десятка разных провайдеров в тройке регионов – нигде не заметил замедления, кроме как на пробнике у @ValdikSS
Исходники и собранный с помощью дорогого коллеги бинарь живут на GitHub - darkk/ru-twi-ndt7: Rapid test for *t.co* throttling Используются домены speed.gulag.link и t.co.speed.gulag.link. Сервер крутится на минимальном Startdust-инстансе в Scaleway, т.е. больше 100 мегабит он не выдаст никогда, но для детекта разницы между одним мегабитом и десятью – сойдёт.
Так, для полноты картины опишу свою модель понимания.
Соединение происходит по следующей схеме:
Я пишу в строку браузера URL
Моя система знает IP DNS и передает на него запрос ip сервера под нужным мне доменом, dns возвращает мне нужный ip
Я зная ip сервера отравляю TCP пакет, в котором данные о типе шифрования
3.1 Если на ip один домен, то он сразу дает мне сертификат
3.2 Если на ip много доменов то я в TCP включаю SNI, чтобы сервер вернул нужный сертификат.
Я сверяю домен и сертификат.
Обмениваемся ключами с сервером
Отправляю шифрованный http запрос
Если я правильно понял схему, то вопрос, зачем в SNI передавать IP? Мы же игнорируем проверку сертификата, следовательно, можно любую тарабарщину передавать и соединяться, при этом DPI РКН не увидит домена в SNI, а в http тем более, так как он зашифрован в TLS
Не совсем. SNI передается современными браузерами всегда, и уже на его основе сервер выдает нам сертификат. Курлом в SNI передается IP чисто потому что курл всегда передает хост в SNI, айпи нужен чтобы в SNI не попал оригинальный домен и сессия не зашейпилась. В дальнейшем уже в HTTP-хедерах передается хост, чтобы конечный веб-сервер верно определил на какой vhost ему пришел запрос, SNI для этого не используется.
http с t.co в хосте не шейпится, только SSL шейпится!
tco (без точки) не шейпится
Судя по всему, ВСЕ урлы выбираются регуляркой, просто на остальных это не так заметно (вряд ли у кого-то в домене случайно затесается pbs.twimg.com). Проверял на поддомене вида pbs.twimg.com.my.own.domain. Надо посмотреть, к каким еще достаточно коротким доменам у РКН есть претензии
Я предполагаю их правило примерно как слева, понятное дело сложнее, и включены еще другие домены, но выглядит как тривиальная ошибка регулярки и игнорирование предварительных правил тестирования.
Да, я тоже шейпинга на taco не наблюдал. Собственно, оттуда и имя файла https://speed.gulag.link/taco.js и потому в заголовке *t.co* в стиле unix glob, а не regexp