Настройка прокси только для Discord через DLL (плюс голосовые звонки без прокси)

Мне пришлось искать альтернативу постоянному использованию TUN только для Discord, поэтому я разработал DLL, которая позволяет Discord использовать прокси-сервер без вмешательства в работу системы. Также удалось решить проблему с голосовыми звонками, чтобы они работали без использования прокси. Решил поделиться этой программой, возможно, кому-то пригодится. Написано на Delphi.

Эта программа заставляет Windows-версию Discord подключаться через указанный прокси-сервер (HTTPS или SOCKS5) для всех TCP-соединений (чат, обновления). Это особенно полезно, поскольку в оригинальном клиенте Discord нет встроенных настроек для работы с прокси, а системный прокси игнорируется. Дополнительно программа немного корректирует исходящий UDP-трафик, что помогает обходить локальные ограничения на голосовые чаты.

Программа работает на уровне самого приложения, без каких-либо изменений в операционной системе или установки драйверов. Это удобная альтернатива использованию глобального VPN (TUN-интерфейсы и прочее).

Для начала работы нужно просто скопировать файлы version.dll и drover.ini в папку, где находится Discord.exe (не путать с Update.exe). Прокси настраивается в файле drover.ini через параметр proxy.

Репозиторий: GitHub - hdrover/discord-drover: A DLL for forcing Discord to use a specified proxy (HTTP/SOCKS5) for TCP connections. Bypasses local restrictions on voice chats.
Релиз: Release drover v0.3 · hdrover/discord-drover · GitHub

1 Like

Как же ты хорош спасибо большое

Пипец ты гений я аплодирую стоя

народные умельцы снова в деле, спасибо!

Спасибо всем! Рад, что не зря потратил время на загрузку в github, что кому-то пригодилось

Я так костыльно добавил поддержку nekobox, потому что у меня в интернете есть простенький socks5 прокси на VPS. Если локально nekobox не запущен, то дискорд работает через этот простой socks5 в интернете. И друзьям раздал, им кроме копирования двух файлов вообще ничего настраивать не нужно (прокси сразу прописал). А у себя уже, если локально вдруг поднят nekobox с vless, то программа (если находит его при запуске), направляет трафик на него.

у меня некобокс, я в конфиге его включил все завелось в пару кликов.

p.s. а есть возможность под лялих написать такую?

мб в конфиге сделать опцию включать голосовой трафик через прокси? Трансляции вне прокси

К сожалению, реальное проксирование udp за рамками этого проекта. Тут вся суть в дешево и сердито, когда минимум кода выполняет возложенную задачу. Для реального заворачивания udp процесса в прокси нужно пользоваться чем-то другим, намного более сложным в плане реализации. Например:
GitHub - wiresock/proxifyre: ProxiFyre: SOCKS5 Proxifier for Windows (тут работа на уровне драйвера)
GitHub - nefarius/socksifier: One DLL to redirect them all to a SOCKS5 server. (на уровне процесса)

deleted

штош, и на этом спасибо. работает отлично, хоть чаты теперь быстро прогружаются.

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

А подскажите, пожалуйста, каким образом настраивать proxy?
Поясню: я в этом деле совсем новичок и по гайдам настроил vless протокол на сервере, работает через админскую панель 3X-UI, через nekobox на телефоне всё работает, но вот клиент на компе устанавливать не могу из-за того стоят корпоративные права доступа.
Объясните, пожалуйста, как мне настроить с помощью данного решения использования моего VLESS прокси-сервера у Дискорда? Какие данные вписывать в файле drover.ini?

Прокси нужно настроить отдельно.

И для этой dll подходят только 2 типа прокси (самые простые): socks5 или https (и обязательно без логина и пароля). Эти типы прокси при желании легко блокируются и не обеспечивают достаточной маскировки трафика.

Есть два варианта: или использовать какой-то сервер в интернете (повторюсь, прокси без логина и пароля, публичные найти сложновато); или поднять локальный прокси на компьютере (это делают всякие nekobox, hiddify, v2rayN и др.), который уже будет использовать какой-то сложный протокол для связи с каким-то другим сервером в интернете.

То есть запускаете локально условный nekobox (не включаете tun), настраиваете его, а он уже поднимает на 127.0.0.1 socks5, его и указываете в drover.ini.

Принял. Спасибо за ответ!
У меня, кстати, получилось использовать socks5 с логином и паролем для этой цели. Арендовал такой прокси, прописал в drover.ini по типу IP:PORT:LOGIN:PASS и всё работает. Единственное - это пинг довольно высок 150мс, но это уже проблема прокси

Очень странно, если работает с логином и паролем. Потому что dll добавляет параметры для Electron (на чем дискорд сделан), а тот в свою очередь использует механизмы chrome. А в chrome намеренно не хотят брать логин и пароль из параметров (считают, что небезопасно, исправлять не хотят).
https://groups.google.com/a/chromium.org/g/chromium-dev/c/x-GDesVs1eI
Как одно из возможных улучшений, которые мог бы добавить в dll - это реализовать аутентификацию socks5 (вмешиваться в tcp пакеты, в socks5 сессию). Но, по-моему, оно того не стоит, в целом слишком мало кому нужно решение в виде dll, а из них кому нужен внешний socks5 с логином и паролем - и 10 человек не наберется на весь интернет. Все-таки основной вид использования - направление на локальный прокси, который уже пробрасывает куда надо по какому надо протоколу.

Что-то не понимаю. Вписываю свой сокс прокси и не работает. http работает.

Тоже не понял как завести сокс5. Использую в связке с byedpi, по логам byedpi идут сообщения: ss: invalid version: 0x43 (106)
Я как понял программа обращается к прокси по http, socks видимо не понимает

Кайф, спасибо

Попробуйте указать в формате proxy = socks5://127.0.0.1:1080

В таком случае воовсе перестает обращатся к прокси. Вообщем немного не ясно как использовать сокс5 потому что в гитхабе указано что можно.