Support a proxy for networks where YouTube is unreachable
YTDLP_PROXY routes every yt-dlp call — search, metadata and the audio stream, for YouTube and SoundCloud alike — through an http(s) or SOCKS proxy such as a local Psiphon. Startup logs which proxy is in use with any credentials stripped. ffmpeg has no SOCKS support, so with a proxy configured playback always goes through the yt-dlp pipe instead of a resolved CDN URL: nothing escapes past the proxy, at the cost of slower seeking. Direct links keep using ffmpeg, which gets the proxy only when it speaks http(s). Verified against a dead proxy: requests fail through it rather than quietly going direct. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6d65134f8e
commit
71b9b7fe17
@@ -229,6 +229,31 @@ docker compose build --build-arg YTDLP_VERSION=$(date +%Y.%m.%d) && docker compo
|
||||
|
||||
Актуальный тег — на [странице релизов yt-dlp](https://github.com/yt-dlp/yt-dlp/releases).
|
||||
|
||||
## Прокси, когда YouTube недоступен
|
||||
|
||||
`YTDLP_PROXY` пропускает через прокси **все** обращения yt-dlp — поиск, метаданные и сам
|
||||
аудиопоток, и для YouTube, и для SoundCloud:
|
||||
|
||||
```dotenv
|
||||
YTDLP_PROXY=socks5h://127.0.0.1:1080
|
||||
```
|
||||
|
||||
Схемы: `http://`, `https://`, `socks5://`, `socks5h://`; можно с логином и паролем
|
||||
(`socks5h://user:pass@host:1080`). `socks5h` резолвит DNS на стороне прокси — обычно нужен
|
||||
именно он, иначе имена доменов всё равно уходят в локальную сеть. При старте бот пишет в лог,
|
||||
через какой прокси работает, скрывая учётные данные.
|
||||
|
||||
Два подводных камня:
|
||||
|
||||
- **`127.0.0.1` внутри контейнера — это сам контейнер.** Если Psiphon или ваш SOCKS запущен на
|
||||
хосте, укажите `socks5h://host.docker.internal:1080` и добавьте в `compose.yml`
|
||||
к `extra_hosts` строку `"host.docker.internal:host-gateway"`.
|
||||
- **ffmpeg не умеет SOCKS.** Поэтому при заданном прокси аудио всегда идёт через yt-dlp, а не
|
||||
напрямую из CDN — трафик не утекает мимо прокси. Побочный эффект: перемотка становится
|
||||
медленнее, так как позиция отыгрывается декодированием, а не HTTP-запросом с диапазоном.
|
||||
Прямые ссылки и интернет-радио ffmpeg скачивает сам, и там прокси применяется только для схем
|
||||
`http://` и `https://`.
|
||||
|
||||
## Учётка YouTube (cookies)
|
||||
|
||||
Логин и пароль для YouTube yt-dlp не поддерживает — единственный рабочий способ авторизоваться
|
||||
|
||||
Reference in New Issue
Block a user