yt-dlp: [Zoom] fails at authencation for meeting recording with password
Checklist
- I’m reporting a broken site
- I’ve verified that I’m running yt-dlp version 2021.12.27. (update instructions)
- I’ve checked that all provided URLs are alive and playable in a browser
- I’ve checked that all URLs and arguments with special characters are properly quoted or escaped
- I’ve searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
- I’ve read the guidelines for opening an issue
- I’ve read about sharing account credentials and I’m willing to share it if required
Region
No response
Description
Password-protected Zoom meeting recording cannot be downloaded. Not tested with recordings without password protection.
Verbose log
$ yt-dlp 'https://zoom.us/rec/share/redacted' --video-pass 'redacted' -v
[debug] Command-line config: ['https://zoom.us/rec/share/redacted', '--video-pass', 'redacted', '-v']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2021.12.27 [6223f67a8]
[debug] Python version 3.9.9 (CPython 64bit) - Linux-5.15.5-051505-generic-x86_64-with-glibc2.34
[debug] exe versions: ffmpeg n4.4.1-3-ge16ff82624-20211127 (setts), ffprobe n4.4.1-3-ge16ff82624-20211127, rtmpdump 2.4
[debug] Optional libraries: Crypto, mutagen, sqlite, websockets
[debug] Proxy map: {}
[debug] [zoom] Extracting URL: https://zoom.us/rec/share/redacted
[zoom] redacted: Downloading webpage
[zoom] redacted: Validating passcode
ERROR: [zoom] redacted: Wrong passcode: HTTP Error 401: Unauthorized (caused by <HTTPError 401: 'Unauthorized'>); please report this issue on https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see https://github.com/yt-dlp/yt-dlp on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output. (caused by <HTTPError 401: 'Unauthorized'>); please report this issue on https://github.com/yt-dlp/yt-dlp . Make sure you are using the latest version; see https://github.com/yt-dlp/yt-dlp on how to update. Be sure to call yt-dlp with the --verbose flag and include its complete output.
File "/home/linuxbrew/.linuxbrew/Cellar/yt-dlp/2021.12.27/libexec/lib/python3.9/site-packages/yt_dlp/extractor/common.py", line 717, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/home/linuxbrew/.linuxbrew/Cellar/yt-dlp/2021.12.27/libexec/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3458, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "/home/linuxbrew/.linuxbrew/opt/python@3.9/lib/python3.9/urllib/request.py", line 523, in open
response = meth(req, response)
File "/home/linuxbrew/.linuxbrew/opt/python@3.9/lib/python3.9/urllib/request.py", line 632, in http_response
response = self.parent.error(
File "/home/linuxbrew/.linuxbrew/opt/python@3.9/lib/python3.9/urllib/request.py", line 561, in error
return self._call_chain(*args)
File "/home/linuxbrew/.linuxbrew/opt/python@3.9/lib/python3.9/urllib/request.py", line 494, in _call_chain
result = func(*args)
File "/home/linuxbrew/.linuxbrew/opt/python@3.9/lib/python3.9/urllib/request.py", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
About this issue
- Original URL
- State: open
- Created 2 years ago
- Reactions: 10
- Comments: 20 (2 by maintainers)
If you are on Firefox, you can just <kbd>Shift</kbd>+right click to force the context menu, then just click “Save Video As…” as usual. For Chromium browsers, I guess you could use some “enable right click” extensions, which should be less sketchy than the above option ^^
Have the same issue. The
validate_passwd
endpoint now seems to use some weird signature in the headers. Unlocking the video in browser and passing cookies does work around the issue.I can provide a video URL and password if anyone wants to work on this(expired)Faced with the same situation, I tried right-clicking and downloading the video directly, but I could not download it due to a 403 error, perhaps because Zoom had patched it. So, I found the other way to download video with developer tools.
1. Open developer tools and check the video file with Status 206, Type Media.
2. Right-click the row and copy it with
Copy -> Copy as cURL
.3. Paste the copied content into a text editor and modify
-H 'range: bytes=A-B'
to-H 'range: bytes=0-B'
.4. Finally, add
--compressed --output FILE_NAME.mp4
at the end of the code and run the modified code in the terminal.5. Success!
Manual workaround
In the meantime, a workaround for manually downloading the recordings:
Console
tab:Right-clink on this link and press "Save link as"
If it doesn’t work, Zoom must’ve changed something, so see the technical explanation below.
Technical explanation:
There are three parts:
Links:
Unless you know how to, no…
@sagz You can open and “unlock” the links in browser and then pass cookies to yt-dlp. Though copy-pasting 1200 passwords is quite a bit of work too… It could be automated through a headless browser/userscript
I’m afraid I could not get the
--cookies
or--cookies-from-browser
workarounds to succeed. yt-dlp still says the video is passcode-protected after loading cookies, and if also given the--video-password
it still gets a 401 Unauthorized error.Looks like Zoom has continued locking this stuff down, unfortunately.
A browser extension (in a dedicated profile) was the solution for me this time, but I’d rather use yt-dlp of course.