Полноценное проксирования Discord через SOCKS5 (включая голосовые звонки)

Всем привет, мое решение чем-то похоже на то, что уже тут, оказывается, публиковалось

Но, в отличии от решения выше, мое решение более полноценное - оно не слегка модифицирует, а действительно проксирует весь входящий и исходящий UDP трафик дискорда через socks5 прокси.

Решение корректно обрабатывает обновления дискорда, так что работает по принципу “поставил и забыл”

Опционально в комплекте есть автоматический установщик для вашего удобства.

Скачать вы можете тут https://github.com/runetfreedom/discord-voice-proxy

Кучу технических подробностей можете прочитать в статье на хабре: https://habr.com/ru/articles/855164/

Интересная статья, спасибо.

Интересно, поддерживается ли фрагментация пакетов UDP клиента релея и работет ли PMTUD дискорда или же там все голосовые пакеты до 1 КиБ?

Фрагментация со стороны клиента не поддерживается (флаг фрагментации всего установлен в 0, т.е автономная датаграмма). Но если верить документации socks5, то это не обязательно:

Implementation of fragmentation is optional; an implementation that does not support fragmentation MUST drop any datagram whose FRAG field is other than X’00’.

Что касается размеров пакетов, то даже со включенным скринкастом я не видел пакетов больше 72 байт

Да, реализация со стороны сервера не обязательна.
72 байт что-то маловато, это в пустой комнате? В мамбле 200-300 байт, а в тимспике тоже до 100 байт.

		CopyMemory(path + GetSystemDirectoryA(path, MAX_PATH - 12), "\\DWrite.dll", 13);
      
		OriginalDLL = LoadLibraryA(path);

Начиная с Windows NT 4.0 майкрософт рекомендует при работе с файлами поддерживать UNC пути длиной 32 КиБ в кодировке UCS-2 (сейчас UTF-16). Так же было бы здорово добавить поддержку IPv6 прокси (у меня прокси работают на IPv6, но приходится иногда поднимать инстансы IPv4 для программ, написанных ленивыми разработчиками).

Но мне нравится решение от hdrover тем, что голос работает там без прокси. Что снижает нагрузку на впс и канал. Что позволяет взять более дешевый впс.

Странно у меня ваше решение не коннектит к войсу. Подключение к rtc маршрут не найден. Подключаюсь Через локалхост на nekobox

Я тестировал на v2rayN, чуть позже проверю на nekobox

Так дискорд то к rtc подключается по ipv4.

Что касается длины путей - с одной стороны вы правы, с другой это совершенно бесполезно, ибо путь к system32 никогда не превысит MAX_PATH по очевидным причинам

Вы были правы, был баг с sing-box. Я проигнорировал пункт документации, в котором говорится, что я обязан держать tcp соединение с прокси сервером открытым пока действует udp ассоциация.

Если вам не сложно, то скачайте и проверьте, пожалуйста, новый релиз. (можно заменить только force-proxy.dll)

Да теперь работает.

Я написал про IPv6 прокси клиент/сервер, который должен мочь подключатся по адресам IPv4, IPv6 и по домену.

Реализована поддержка авторизации для socks5 прокси.

А в инсталлятор можно добавить ввод логина и пароля для прокси?

добрый день, искреннее спасибо, дискорд заработал, но как всегда есть нюанс. ситуация такая, не получается подключится к rtc, пишет не установлен маршрут. подключаюсь к прокси через proxifier

у меня через proxifier ввод логина и пароля в самом приложении, автоматический установщик всё сам сделал, так что я доволен. еще в readme написано:
Optionally, you can pass SOCKS5 credentials using:

SOCKS5_PROXY_LOGIN=login
SOCKS5_PROXY_PASSWORD=password

Don’t forget to restart Discord. Done!
както так

Добавил в версии 0.2.1 в интсаллятор запрос логина и пароля (можно оставить пустыми)

Вы используете последнюю версию? Уверены, что правильно задали порт и логин с паролем?

не именно дискорд то у меня заработал, я другому человеку отвечал, у меня проблема при подключении к rtc, если бы я не правильно задал логин с паролем, то у меня бы и само приложение не работало, а проблема только с войсом