Closed nhockey closed 5 years ago
I can confirm this, ran into the same error today. Disabling the extension helped, I seem to at least get 720p on Fedora 29.
same... had to disable extension :(
I first noticed something wonky the other night. a movie I know is 1080p was only playing at 720p but I wasn't getting an error or anything. Then last night it was just a "nope browser boy, yer getting a pixilated mess or an error message, them's yer options." I fired up the dev console to look for anything obvious, but I haven't been keeping up to date on how the extension has been defeating their bs "soup nazi" like policy (NO 1080P FOR YOU!) So im just not sure what im looking for.
Can confirm. It's not working on Ubuntu 18.04
I enabled developer mode for extensions and merged in the pull request i found, #32 by @jeyk. I loaded the customized version of the extension with the new playercore and all seems to be working correctly.
It seems that Netflix has updated from cadmium playercore 6.0009.457.011 to cadmium playercore 6.0011.474.011.
I hear there is an issue with content which isn't avaliable in 1080p; however i have not come across this issue as of yet.
Version: 6.0011.474.011 UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 bitrate (a/v): 192 / 3010 (1920x1080) Current CDN (a/v): c001.ord001.dev.ix.nflxvideo.net, Id: 19880 / akamaitp, Id: 19 Audio Track: en, Id: A:1:1;6;en;1;, Channels: 5.1, Codec: audio/mp4;codecs=mp4a.40.2 Video Track: Codec: video/mp4;codecs=avc1.640028 (avc)
Guess I'll wait for them to push the next release out. Thought it was upgrading Chrome to 70.x that did it. Glad the issue has been identified. Netflix really needs to stop treating non-Windows users like lepers. Our OS runs their damn servers FFS.
Guess I'll wait for them to push the next release out. Thought it was upgrading Chrome to 70.x that did it. Glad the issue has been identified. Netflix really needs to stop treating non-Windows users like lepers. Our OS runs their damn servers FFS.
I ammend my previous comment. i tried some of the test patterns and the problem represented itself. So this isn't a "fix" but a work around on some videos. But it @jeyk seems to be onto something. @ThoreauHenry The problems is OS independedent it seems. I just happenend to fiddle with it in Linux because im more comfortable with vim/diff/git in unix type environments. :)
I hear there is an issue with content which isn't avaliable in 1080p; however i have not come across this issue as of yet.
Try Z Nation Season 2 Episode 12 to reproduce that issue https://www.netflix.com/watch/80068065?trackId=14170286
I hear there is an issue with content which isn't avaliable in 1080p; however i have not come across this issue as of yet.
Try Z Nation Season 2 Episode 12 to reproduce that issue https://www.netflix.com/watch/80068065?trackId=14170286
I used the "test patterns" to test and some of the patterns refused to play even though they were available in 1080p. But a couple 720p/480p movies play fine. So I'm thinking they are doing something with DRM on the backend to thwart piracy and they are slowly re-coding some titles and/or this new protection is working its way around to all their CDNs. I respect the anti-piracy thing; what bothers me is that I have to drop $400 on a special device to watch something I already pay for. Hope this is resolved soon as I've reached the limits of my understanding of the issue.
@ThoreauHenry The problems is OS independedent it seems. I just happenend to fiddle with it in Linux because im more comfortable with vim/diff/git in unix type environments. :)
As am I(Ubuntu 16.04). It's not OS independent when you look at what's supported and what ain't.
Safari: Up to 1080p (on Macs running OS X 10.10.3 or greater)
Microsoft Internet Explorer: Up to 1080p
ChromeOS Chrome: 1080p
Microsoft Edge: Up to 4K (requires HDCP 2.2-compliant connection to a 4K display, with at least Intel’s 7th gen Core CPU, plus the latest version of Windows)
Windows 10 App: Up to 4k
You can't even WINE it, because it's OS embedded. I suspect it's a DRM hardware acceleration shim that they want to ensure works to avoid support calls- even though the average Joe Linux is sitting on 12-16 thread CPU's.
In any case, this may take a bit of work to remedy if they are jerking with the DRM. Although hopefully not Denuvo level work.
The recent merges do help some but do not fix all content. I know that Test Patterns Season 1 Episode 1 Still results in Error Code: M7353-5101
I merged PR #32 to "fix" this issue, but there's still erroring on some series so I'll leave this open until I find a true fix.
I merged PR #32 to "fix" this issue, but there's still erroring on some series so I'll leave this open until I find a true fix.
I've been poking around myself for days and I can't figure out why some titles just refuse to work and others are just fine; it's very strange IMO. If there is anything I can do to help, just let me know.
I think I figured it out. Netflix changed the way manifests are requested so I'm actually replacing the profiles variable in the wrong place in the new player JS. Also, without VP9 profiles in the manifest request, Netflix denies it. After replacing the proper profiles variable and including VP9 profiles (they're included for verification - they aren't used in playback), Test Patterns works fine. I'll clean up the code and push a release in a bit.
Profiles variable should be this:
var profiles = [
"playready-h264mpl30-dash",
"playready-h264mpl31-dash",
"playready-h264mpl40-dash",
"vp9-profile0-L30-dash-cenc",
"vp9-profile0-L31-dash-cenc",
"heaac-2-dash",
"dfxp-ls-sdh",
"simplesdh",
"nflx-cmisc",
"BIF240",
"BIF320"
]
And I should be replacing the profiles variable on line 77771 of the player.
I think I figured it out. Netflix changed the way manifests are requested so I'm actually replacing the profiles variable in the wrong place in the new player JS. Also, without VP9 profiles in the manifest request, Netflix denies it. After replacing the proper profiles variable and including VP9 profiles (they're included for verification - they aren't used in playback), Test Patterns works fine. I'll clean up the code and push a release in a bit.
Profiles variable should be this:
var profiles = [ "playready-h264mpl30-dash", "playready-h264mpl31-dash", "playready-h264mpl40-dash", "vp9-profile0-L30-dash-cenc", "vp9-profile0-L31-dash-cenc", "heaac-2-dash", "dfxp-ls-sdh", "simplesdh", "nflx-cmisc", "BIF240", "BIF320" ]
And I should be replacing the profiles variable on line 77771 of the player.
:1st_place_medal: You certainly understand what's going better than i. It's just been a week-long crash course trying to understand how all the chatter works back and forth in an effort to debug it. That player core is a daunting piece of javascript. I've just been using vim plugins to just highlight functions in the other buffers and going "yep, looks about right" and moving on. :smile:
Well, I was mistaken. On movies like Thor Ragnarok (where the janky extra manifest method previously worked), VP9 is actually requested instead of the other profiles. When taking out VP9, Netflix throws a cryptic error. After modding the player to print decrypted MSL responses (because for some reason error messages are encrypted), it throws this error:
{"version":2,"id":5,"serverTime":1542778622406,"from":"nq_cadmium_pbo_logblobs@1.14.5/pbo-client@1.14.5","result":{"nlp":true}}
I have no idea what that means but I can only assume it has an issue with the fact that the client isn't getting VP9 profiles. I'll have to look into this further.
I figured out a clever workaround. Since the new MSL API gives (pardon my french) bullshit error messages, I thought about using the legacy MSL API. Doing the same thing with the old MSL API and it tells me:
DESCRIPTION: "Playback not permitted because device request did not include a PRK profile."
So, why not include a pointless HEVC PRK profile?
Changing the profiles variable to:
var profiles = [
"playready-h264mpl30-dash",
"playready-h264mpl31-dash",
"playready-h264mpl40-dash",
"hevc-main10-L30-dash-cenc-prk",
"heaac-2-dash",
"heaac-5.1-dash",
"simplesdh",
"nflx-cmisc",
"BIF240",
"BIF320"
];
allows it to work on movies like Thor Ragnarok perfectly.
Just pushed the fixing commit. I'll update the extension on the Chrome webstore. Before I close this issue, can everyone confirm my fix works? I tested Testing Patterns, Narcos: Mexico, and Thor: Ragnarok, and all worked fine.
i was trying to hack in what you said when i was just like "ah, to hell with it!" Remember when that was just a few lines of code? This is getting out of control! Thank you so much for saving my sanity, and probably loosing a bit of your own along the way. :+1:
I remember the good days when this extension was nothing more than a one-line fix, and I lost my sanity the second I made get-manifest.js
But on a serious note, this workaround relies on a huge oversight. Netflix could break this extension again if they choose, which means I'm going to have to find time in my schedule to sit down and fix it again, and who knows how long that will take. I'm starting to get seriously concerned for the future of this extension as if it breaks and I take longer than a week to fix it, the userbase would take a huge hit.
It seems you have plenty of people who are using this extension whom would be willing to offer you support any way they can. Who knows, maybe one day they will just let people using Chrome just have access to content greater than 720p? Thank you so much for spending time making this work again. Hopefully, Netflix will simply calm down about the whole thing and you'll be able to get a good nights rest. :smile:
So everything works? Just want to make sure.
Also, for posterity, I just want to report that the new MSL API actually does give full error messages. Here's what the PRK error message looks like from the new MSL API:
{"version":2,"id":15427813743298,"serverTime":1542781389452,"from":"nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4","error":{"pboc":true,"code":"FAIL","detail":"manifest/pbcs-445: Playback not permitted because device request did not include a PRK profile. (nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4)","display":"This title is not available to watch instantly. Please try another title.","errorDisplayMessage":"This title is not available to watch instantly. Please try another title.","errorActionId":3,"nccpError":{},"errorSubCode":0,"errorReasonCode":0,"errorNccpCode":0,"errorExternalCode":0,"bladeRunnerMessage":"manifest/pbcs-445: Playback not permitted because device request did not include a PRK profile. (nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4)","bladeRunnerCode":"445"}}
So everything works? Just want to make sure.
Also, for posterity, I just want to report that the new MSL API actually does give full error messages. Here's what the PRK error message looks like from the new MSL API:
{"version":2,"id":15427813743298,"serverTime":1542781389452,"from":"nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4","error":{"pboc":true,"code":"FAIL","detail":"manifest/pbcs-445: Playback not permitted because device request did not include a PRK profile. (nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4)","display":"This title is not available to watch instantly. Please try another title.","errorDisplayMessage":"This title is not available to watch instantly. Please try another title.","errorActionId":3,"nccpError":{},"errorSubCode":0,"errorReasonCode":0,"errorNccpCode":0,"errorExternalCode":0,"bladeRunnerMessage":"manifest/pbcs-445: Playback not permitted because device request did not include a PRK profile. (nq_cadmium_pbo_manifests@1.14.4/pbo-client@1.14.4)","bladeRunnerCode":"445"}}
I checked everything people had reported not working including 16:9 stuff 4:3 stuff... I can't find anything that's not working. I'll reopen it for the time being just so people can report anything else. But I think you nailed it. Give it 48h or so to see if anybody finds anything.
It is working again! Thanks!
Can confirm that it does not play more than 720p, just compared bitrates and stuff.
Thanks for your work man.
@Aspectsec it doesn't play more than 720p? What series did you try?
@truedread Awesome work, thanks a lot! I just tried four different programmes, all played instantly and in 1080p.
About your concerns for the future of this extension: I am pretty much depending on it (because I don't want to boot Windows every time I want to watch Netflix for an hour), so I will definitely try to help, should it break again. The problem is that at the moment I understand almost nothing of the stuff you are talking about. What is the "MSL API" and is there some documentation about it?
The MSL API is Netflix's E2E-encrypted API they use for requesting manifests and licenses. It's somewhat documented over here: https://github.com/Netflix/msl/wiki, but that's just for a general MSL implementation. To actually see how Netflix's implementation works you just have to reverse engineer it. I've written tools to interact with it, though. Like get_manifest.js
in this repo or https://github.com/truedread/pymsl.
cadmium-playercore-6.0011.474.011 worked for a few days.. Then it stopped working. Netflix has updated it to 6.0011.511.011 :(
I've followed the instructions in the readme.md and tried to patch the new version, but I couldn't get it to work. It fails after (successfully) acquiring an Edge manifest, but the playback never starts. Endless spinning circle.
It seems Netflix has added an upper limit to how many ESNs can request manifests from a single user account. I keep getting an error "The maximum number of devices for this user has been reached". Either it's due to the ephemeral Edge ESNs contributing towards a fixed upper limit, or Netflix is treating these requests like exceeding the concurrent devices limit of your plan (which would probably break this extension for good...)
@phaax What series?
@caphm A fix would be to use a constant ESN per device instead of randomly generating it every time a new video is played. I would try to implement but I haven't encountered this error yet.
@phaax What series?
"The OA".
And now it's working, strange! Using my modified version of cadmium-playercore-6.0011.511.011.
Working fine here, thanks for your hard work.
@truedread I have implemented this fix for the Kodi Netflix plugin and can confirm it works. If you ever encounter it, you know how to solve it ;)
@caphm i am unsure as to whether i should use the extension until this has been sorted. What is the upper-limit value? and can you get rid of that error somehow?
@prasoc I don't know the upper limit value. It seems like it's also dependant on the timeframe in which the requests are made. If you're not using this every couple seconds (like I was for testing purposes), your should be fine.
@Aspectsec it doesn't play more than 720p? What series did you try?
I tries many : Narcos, naruto shippuden, Ozark, ... on chrome with your extension then on Edge. No more than 720p on chrome whereas on edge it played 1080p.
EDIT : Tried it yesterday so I'll give it a shot again today. It's weird that it's working fine for some and not working for others, mmh.. At first when I updated your extension it wouldn't load then it worked up to 720p.
EDIT 2 : it works in 1080p now but when the title is 480p it just doesn't work. Naruto for exemple but once it's 1080p it's okay.
After modding the player to print decrypted MSL responses (because for some reason error messages are encrypted
@truedread Could you point me to the LoC I need to modify to print decrypted MSL requests and reponses to the console? The player code is a monstrum and I couldn't find a suitable point of entry.
I reenabled the plug in and now I'm getting the error "This title is not available to watch instantly" on many, but not all, movies. Most of the Marvel movies, the Pirates of the Caribbean Movies, and the Star Wars Movies are the ones I have tested that have this error . The error code is M7121-1331
Also, how are people checking the resolution? I've been using ctrl-shift-s but that only shows me the bit rate and for some videos it seems wrong, because it will say the bit rate is low like 600 but it doesn't look that low.
@fragmental ctrl
+ alt
+ shift
+ D
Oh boy, Netflix fixed my little workaround. Movies where the manifest has to be acquired separately no longer work and I'm trying to think of another workaround.
Thanks Netflix.
Oh boy, Netflix fixed my little workaround. Movies where the manifest has to be acquired separately no longer work and I'm trying to think of another workaround.
Thanks Netflix.
GG Netflix for making quality an exclusivity clap clap
What's going on is that Netflix denies any request for these movies that don't contain PRK profiles. PRK profiles are Per Resolution Key profiles, basically, each resolution is encrypted with a different key. Thing is, PRK profiles for AVC Main don't exist. And if you try requesting 1080p PRK AVC Hi or VP9 profiles, Netflix simply denies the request for the device not being authorized to play 1080p. Quite the conundrum.
What's going on is that Netflix denies any request for these movies that don't contain PRK profiles. PRK profiles are Per Resolution Key profiles, basically, each resolution is encrypted with a different key. Thing is, PRK profiles for AVC Main don't exist. And if you try requesting 1080p PRK AVC Hi or VP9 profiles, Netflix simply denies the request for the device not being authorized to play 1080p. Quite the conundrum.
So you'd have to fake the request being sent from Edge of whatever ? Or maybe you can reverse the verification algorithm from edge and chrome to get like a key or a manifest or whatever that actually is accepted.
The request is already being sent from an Edge ESN, but you can't perform a Widevine license request with an Edge ESN. Previously, since the keys for AVC Main were shared between resolutions, I would just do a Widevine license request with a Chrome ESN for SD AVC Main, and then get the 1080p AVC Main MP4 links with an Edge ESN and use those for playback. However, Netflix now doesn't allow Chrome to get a license for anything AVC Main on those videos, so I'm stuck. I'm just gonna update the extension to use AVC-Hi on those videos so it can at least play 720p instead of SD until I can think of a solution.
Seems that the v1.12 version does not work in some movies, error M7353-5101, even the 720 can not watch,but working fine on other videos(1080p)
Which movies?
Which movies?
Anime The Asterisk War S1
I tested a few of Netflix own productions. They work in 1080p. Friends and Passengers fail with M7353-5101. Breaking Bad is 1080p.
v1.12 works, but only on a few titles. I haven't gotten any "Unable to watch" errors, I just haven't been able to pass 720p.
This was working as of no less than 24h ago. Dunno what they did, nor why they are so adamant on preventing browser users from accessing 1080p content.... but none the less they seem to be at it again. It's the classic:
As expected if you disable your extension it resolves the error... to a dismal pixelated mess of 480 on my big beautiful screen. If there is any further information you need feel free to message me and i'll supply you with whatever i can, within my capabilities. I've confirmed this to be happening in Windows 7, Debian 9 Stretch, and OSX Sierra on Chrome 70.xxx.xxx.xx.xxx.x (insert obfuscated non-standard revision mishmash here)
Eidt: if you're not getting the error, just F5 and it will reload with the error message. Edit 2: Test patterns do confirm that 720p is working. However, the movie I was watching last night is a movie I know used to be available up to 1080p.