Battleman / zoomdl

Download Zoom recorded meetings easily
GNU General Public License v3.0
341 stars 44 forks source link

Zoom platform updated - Unable to find metadata #84

Open m0nsieurPsych0 opened 1 year ago

m0nsieurPsych0 commented 1 year ago

Prerequisite

Describe the bug

Seems like the zoom platform has been updated between December 12th and now. I was able to download videos from 14 links and it doesn't work anymore. Now it's not able to find the video URL and it's unable to find metadatas. I tried reloading the cookie file and refreshed the page, even re-downloaded the package just to be sure, but to no avail.

Seems like they removed data from the HTML body that allowed the metas to be parsed. The field return empty when I debug step by step. As a possible solution, the "viewMp4Url" and "mp4Url" are still available in the JSON Response data, but that's just a guess on my part, I did not go too deep on the inner working yet. But I am willing to do so if it's necessary.

To Reproduce

  1. Login with Uni creds
  2. Go to the zoom link
  3. Click SSO login
  4. Enter the video passphrase
  5. Click on the watch video button
  6. See video and be able to play it
  7. Export cookie using the extension "cookies.txt"
  8. Open zoomdl and use these parameters: "zoomdl -u {URL} --cookies cookies/cookies.txt -f videos/{filename} -v 0"

Expected behavior Be able to download the video.

URL (opt) Only if absolutely necessary and in private I might share it.

Logs

Using standard Windows UA
Changing page to https://«REDACTED».zoom.us/rec/play/miYHpCPaXuvrRhFOehKo83jxQ_0rv65E5s_JAArksfVqLlX1iRtUGzq_dE3IeA3GOC_5yCFUgSIxuveE.toB8ChPCWl9-a6Wr?canPlayFromShare=true&from=share_recording_detail&startTime=1665522825000&componentName=rec-play&originRequestUrl=https%3A%2F%2F«REDACTED».zoom.us%2Frec%2Fshare%2FkmaYyPPU8oCSJye3mJALPkjsSasG83_glnbNmSj5qFg73YZGkKpsvzRxlSeOdnk.HW7rtbCf_t0KFfGr%3FstartTime%3D1665522825000
Unable to extract chatList from page
Unable to extract transcriptList from page
Metas are {'cookie_currency': 'USD', 'currency_symbol': '$', 'currency_symbol_map': '{"USD":"$","CAD":"CAD","AUD":"A$","JPY":"¥","INR":"₹","EUR":"€","CNY":"¥","GBP":"£","NZD":"NZ$","VND":"₫","BRL":"R$","MXN":"MX$","SGD":"S$","IDR":"Rp","KRW":"₩","PHP":"₱","MYR":"RM"}', '__platformCheck': '', 'detect': 'https://ca01st2.zoom.us/cdn-detect.png', 'logo': {'img': 'https://«REDACTED».ca/mpo/ressources/images/v1/logo-ul.png', 'link': 'https://«REDACTED».zoom.us/', 'alt': 'Logo'}, 'meetingId': '', 'fileId': 'CAxGkrQfsjyTb3KXP_HAuVpV6Nu_sne5R30FJaYqxtUXgs8VXEuQBrrvhbtqhP32DRbv5YMkCBaGP-p2.Nc3O_CspZSuB2Tfx', 'isLogin': True, 'isFromShare': False, 'isVideoSDK': False, 'siteName': 'Zoom', 'enableNewPagePhase2': True, 'nwsDomain': '', 'chatList': [], 'transcriptList': []}
No video URL in meta, going bruteforce
[ERROR] Video not found in page. Is it login-protected?
Try to refresh the webpage, and export cookies again
Unable to find metadata, aborting.

if I add the password flag with the passphrase

"zoomdl -u {URL} --cookies cookies/cookies.txt -f videos/{filename} -v 0 -p Gg8qgB+t"

Using standard Windows UA
Changing page to https://«REDACTED».zoom.us/rec/play/oAiMWhKsWVhIXiAzi9-woZLfMc3E5VKi2pVMubEWkfisHW3jWa2gQ7juyv5iBmTcl7PscTzArIBJofze.H5TAGWsQpkstqBuM?canPlayFromShare=true&from=share_recording_detail&continueMode=true&componentName=rec-play&originRequestUrl=https%3A%2F%2F«REDACTED».zoom.us%2Frec%2Fshare%2FZdV0GCNhQNiBA_rEgPtCv20DT7G9xCHCHQ-WvnLD1la14Nx3iGn8XgvRbKspsxU9.3-cGpY69OARQNo6I
Using password 'Gg8qgB+t'
[CRITICAL]Unable to find meetId in the page
<input id="searchInput" type="text" role="searchbox" aria-label="Search" placeholder="Enter search here..." data-url="https://«REDACTED».zoom.us/en/search/"    
<input type="hidden" id="cookie_currency" value="USD" /
<input type="hidden" id="currency_symbol" value="$" /
<input type="hidden" id="currency_symbol_map" value="{&quot;USD&quot;:&quot;$&quot;,&quot;CAD&quot;:&quot;CAD&quot;,&quot;AUD&quot;:&quot;A$&quot;,&quot;JPY&quot;:&quot;¥&quot;,&quot;INR&quot;:&quot;₹&quot;,&quot;EUR&quot;:&quot;€&quot;,&quot;CNY&quot;:&quot;¥&quot;,&quot;GBP&quot;:&quot;£&quot;,&quot;NZD&quot;:&quot;NZ$&quot;,&quot;VND&quot;:&quot;₫&quot;,&quot;BRL&quot;:&quot;R$&quot;,&quot;MXN&quot;:&quot;MX$&quot;,&quot;SGD&quot;:&quot;S$&quot;,&quot;IDR&quot;:&quot;Rp&quot;,&quot;KRW&quot;:&quot;₩&quot;,&quot;PHP&quot;:&quot;₱&quot;,&quot;MYR&quot;:&quot;RM&quot;}" /
<input type="hidden" id="__platformCheck" value="" /
<input type="hidden" id="detect" value="https://ca01st2.zoom.us/cdn-detect.png"/
<input type="hidden" name="mtg_length" id="mtg_length"
<input type="hidden" name="mtg_length1" id="mtg_length1"
<input type="hidden" name="start_url" id="start_url"

Versions (please complete the following information):

Additional context (opt) Just a bit more context I run zoomdl directly from python, I'm not using the precompiled .exe. but I also tried the precompiled one for a test and I have the same result.

Yaco commented 1 year ago

I confirm this bug in Linux latest version.

Battleman commented 1 year ago

I don't have access to videos behind an SSO, as I'm not affiliated to a university/company that provides it. It seems to work on non-protected videos. Is it only videos behind SSO with cookies.txt, or other videos as well?

rmarcano commented 1 year ago

I'm seeing the same on a regular video meeting that's behind a password:

$ zoomdl -u https://us02web.zoom.us/rec/share/1YBpZU8HcqNNwv0VrfLhULiDY7BZ3_0o1[...] -p j=aadgCj 
--user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" -v 0
Using custom UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Changing page to https://us02web.zoom.us/rec/share/1YBpZU8HcqNNwv0VrfLhULiDY7BZ3_0o1-dHWAnxxKDqgF2ATyPFfCqO5rM-G5DH.IqY[...]
Using password 'j=aadgCj'
[CRITICAL]Unable to find meetId in the page
<input type="hidden" id="data_pwd" value="" /
<input type="hidden" id="data_uname" value="" /
<input type="hidden" id="data_wtk" value="" /
<input type="hidden" id="data_uid" value="" /
<input type="hidden" id="data_stype" value="" /
<input type="hidden" id="data_token" value="" /