diff --git a/01-linux/networking/ssh-config-key-management.md b/01-linux/networking/ssh-config-key-management.md index cf446e5..2bfedbf 100644 --- a/01-linux/networking/ssh-config-key-management.md +++ b/01-linux/networking/ssh-config-key-management.md @@ -10,11 +10,7 @@ tags: - remote-access status: published created: 2026-03-08 -<<<<<<< Updated upstream -updated: 2026-04-14T14:27 -======= -updated: 2026-04-18T11:13 ->>>>>>> Stashed changes +updated: 2026-04-22T09:20 --- # SSH Config and Key Management diff --git a/05-troubleshooting/networking/windows-openssh-wsl-default-shell-breaks-remote-commands.md b/05-troubleshooting/networking/windows-openssh-wsl-default-shell-breaks-remote-commands.md index df52304..cd78463 100644 --- a/05-troubleshooting/networking/windows-openssh-wsl-default-shell-breaks-remote-commands.md +++ b/05-troubleshooting/networking/windows-openssh-wsl-default-shell-breaks-remote-commands.md @@ -11,11 +11,7 @@ tags: - powershell status: published created: 2026-04-03 -<<<<<<< Updated upstream -updated: 2026-04-14T14:27 -======= -updated: 2026-04-18T11:13 ->>>>>>> Stashed changes +updated: 2026-04-22T09:20 --- # Windows OpenSSH: WSL as Default Shell Breaks Remote Commands diff --git a/05-troubleshooting/networking/windows-sshd-stops-after-reboot.md b/05-troubleshooting/networking/windows-sshd-stops-after-reboot.md index 4b2e155..9f299fb 100644 --- a/05-troubleshooting/networking/windows-sshd-stops-after-reboot.md +++ b/05-troubleshooting/networking/windows-sshd-stops-after-reboot.md @@ -10,11 +10,7 @@ tags: - majorrig status: published created: 2026-04-02 -<<<<<<< Updated upstream -updated: 2026-04-14T14:27 -======= -updated: 2026-04-18T11:13 ->>>>>>> Stashed changes +updated: 2026-04-22T09:20 --- # Windows OpenSSH Server (sshd) Stops After Reboot diff --git a/05-troubleshooting/yt-dlp-fedora-js-challenge.md b/05-troubleshooting/yt-dlp-fedora-js-challenge.md index 21d4cb5..9fdd2e4 100644 --- a/05-troubleshooting/yt-dlp-fedora-js-challenge.md +++ b/05-troubleshooting/yt-dlp-fedora-js-challenge.md @@ -10,11 +10,7 @@ tags: - deno status: published created: 2026-04-02 -<<<<<<< Updated upstream -updated: 2026-04-14T14:27 -======= -updated: 2026-04-18T11:13 ->>>>>>> Stashed changes +updated: 2026-04-22T11:33 --- # yt-dlp YouTube JS Challenge Fix (Fedora) @@ -140,15 +136,43 @@ but no impersonate target is available. ERROR: Unable to download video subtitles for 'en-en-US': HTTP Error 429: Too Many Requests ``` -**Cause:** yt-dlp needs `curl_cffi` to impersonate a real browser's TLS fingerprint. Without it, YouTube detects the non-browser client and rate-limits with 429s. Subtitle downloads are usually the first to fail. +**Cause:** yt-dlp needs `curl_cffi` to impersonate a real browser's TLS fingerprint. Without it, YouTube detects the non-browser client and rate-limits with 429s. Subtitle downloads are usually the first to fail (YouTube's `timedtext` endpoint has its own, stricter per-IP bucket). -**Fix:** +**Fix (pin `curl_cffi` to the supported range):** ```bash -pip3 install --upgrade yt-dlp curl_cffi +pip3 install --user -U "curl_cffi>=0.10,<0.15" "yt-dlp-ejs>=0.8" ``` -Once `curl_cffi` is installed, yt-dlp automatically uses browser impersonation and the 429s stop. No config changes needed. +> ⚠️ Do **not** run a bare `pip install -U curl_cffi`. As of yt-dlp **2026.03.17**, the backend in `yt_dlp/networking/_curlcffi.py` hard-caps at `0.14.x`: +> +> ``` +> ImportError: Only curl_cffi versions 0.5.10 and 0.10.x through 0.14.x are supported +> ``` +> +> Installing `curl_cffi 0.15.0` silently disables impersonation — `yt-dlp --list-impersonate-targets` will show every source as `(unavailable)` even though `import curl_cffi` works fine. Always pin to `<0.15` until yt-dlp widens the range. + +**Verify:** + +```bash +yt-dlp --list-impersonate-targets | head -5 +``` + +Should show real entries (`Chrome-133 Macos-15 curl_cffi`), not the `(unavailable)` table. + +**If the 429 persists on subtitles only:** the `timedtext` bucket is already hot from prior retries. Either wait 15–60 min, skip subs for this download (`--no-write-subs --no-write-auto-subs`), or throttle with `--sleep-subtitles 5` on retry. The video/audio path is not affected. + +**Companion gotcha — `yt-dlp-ejs` version drift:** if `yt-dlp -U` reports yt-dlp is current but you still see: + +``` +WARNING: Challenge solver lib script version 0.3.2 is not supported ... supported version: 0.8.0 +``` + +…then the EJS solver helper is stale. `yt-dlp -U` does **not** update it. Upgrade explicitly: + +```bash +pip3 install --user -U yt-dlp-ejs +``` ### SABR-Only Streaming Warning diff --git a/README.md b/README.md index efa7298..becef6c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ --- created: 2026-04-06T09:52 -updated: 2026-04-14T14:12 +updated: 2026-04-22T09:20 --- # MajorLinux Tech Wiki — Index