-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Range is now mandatory for adaptive formats #83
Comments
I forgot that video size is included in the |
The youtube website doesn't seem to be using adaptiveFormats at all. The URL it requests no longer mentions an itag query parameter. The response content type is now "application/vnd.yt-ump". Example URL :
I noticed that there's a new field called "serverAbrStreamingUrl" in "streamingData" that includes a similar URL :
Here's a side by side comparison : The video URL has three additional parameters. Querying |
I did some digging into yt-dlp and found out that certain user agents return an HLS stream URL in Here's a 144p example :
|
The URLs of the HLS stream have two |
hey I am working on this as well I am able to get around the |
Thanks! I sort of gave up on that angle until I get HLS streams to work, but even that isn't without its problems. |
Thanks to bajas' iOS user agent tip, I was able to get adaptive formats to work again, even without providing a range. Edit: range is still needed to bypass rate limiting for large files. It can be provided with the |
How to solve the sabr.malformed_config error, can you share? I'm dealing with that side of things, too |
Initially reported here by bajas. I reproduced it with
youtube-d -f 399 https://youtu.be/dQw4w9WgXcQ
. The response is "Failed with status 403".Getting the video URL with
youtube-d -f 399 https://youtu.be/dQw4w9WgXcQ -o
then opening it in a browser or downloading it with cURL yields similar results.It's worth noting that while ParallelDownloader adds range headers that bypass this issue, it will still fail because it first send a HEAD request to the video URL in order to retrieve its full length in order to calculate appropriate range values from it. But this HEAD call also fails because it doesn't include a range header. This can be reproduced with
curl -LI $(youtube-d -f 399 https://youtu.be/dQw4w9WgXcQ -o | grep '^https')
$ curl -LI $(youtube-d -f 399 https://youtu.be/dQw4w9WgXcQ -o | grep '^https') HTTP/1.1 403 Forbidden Last-Modified: Wed, 02 May 2007 10:26:10 GMT Content-Type: text/plain Content-Length: 0 Connection: close Vary: Origin Cross-Origin-Resource-Policy: cross-origin X-Restrict-Formats-Hint: None X-Content-Type-Options: nosniff Date: Sat, 17 Aug 2024 19:52:07 GMT Server: gvs 1.0
The text was updated successfully, but these errors were encountered: