Version
v6.2.13 / master
Details
When using the TVHTML5_SIMPLY_EMBEDDED_PLAYER client (or any other JS-enabled client, but this is the one we're using), occasionally YouTube may return a stream that has the n parameter. This parameter is an encrypted signature, similar to sig, but is responsible for rate throttling.
It also incorporates much more complicated cipher functions, so the existing deciphering code will not be enough to tackle it.
Currently, these kinds of streams are not too common, but I assume they will become more prolific as time goes on. It's not a huge issue now as the TVHTML5_SIMPLY_EMBEDDED_PLAYER client is only used for age-restricted videos.
Steps to reproduce
- Use the Demo.Gui project
- Resolve stream manifest for any age-restricted video:
|
public const string AgeRestrictedViolent = "rXMX4YJ7Lks"; |
|
public const string AgeRestrictedSexual = "SkRSXFQerZs"; |
|
public const string AgeRestrictedEmbedRestricted = "hySoCSoH-g8"; |
- Try to download any stream and observe very low download speed
- If the issue doesn't happen, retry from the beginning again (this can take several attempts)
Updated, much more consistent steps to reproduce that require a VPN:
Version
v6.2.13 / master
Details
When using the
TVHTML5_SIMPLY_EMBEDDED_PLAYERclient (or any other JS-enabled client, but this is the one we're using), occasionally YouTube may return a stream that has thenparameter. This parameter is an encrypted signature, similar tosig, but is responsible for rate throttling.It also incorporates much more complicated cipher functions, so the existing deciphering code will not be enough to tackle it.
Currently, these kinds of streams are not too common, but I assume they will become more prolific as time goes on. It's not a huge issue now as the
TVHTML5_SIMPLY_EMBEDDED_PLAYERclient is only used for age-restricted videos.Steps to reproduce
YoutubeExplode/YoutubeExplode.Tests/TestData/VideoIds.cs
Lines 11 to 13 in a8318c0
Updated, much more consistent steps to reproduce that require a VPN: