Posted by Amir Mazzarella on February 23, 2018
I wrote a Google Chrome extension to play Netflix 1080p in Chrome. You can find the link here: https://github.com/truedread/netflix-1080p. I had written in 4 months ago but only decided to release it now as I was curious as to what Netflix’s reaction would be. Apparently, a senior UI developer from Netflix contacted me and showed interest, saying that he had no issue with it. The plugin only changed two lines of Netflix’s core JavaScript player, which I detailed in the README of the GitHub link. What’s curious is that Netflix’s JS is heavily obfuscated, which is understandable considering the open-source nature of JavaScript. You can’t make JavaScript closed source unless you encrypt it and load it as a blob within a browser, but somewhere it must be a decrypted. So, the obfuscated JS obviously proved a problem when developing the plugin, but anything is possible. Using Chrome’s web developer tools, I set a multitude of breakpoints and slowly gained an understanding into how a Netflix video is loaded and played. I finally saw the array for the video profiles and saw a minified if statement that handled client-side UA detection (I detail this in the repo).
Apparently, the restriction isn’t due to licensing or DRM; it’s due to hardware acceleration. 1080p is allowed on ChromeOS due to the hardware acceleration provided, and the only way to check for that hardware acceleration is a UA check. If you try playing 1080p on Chrome with my extension, you may notice a CPU usage bump, and this is what Netflix tried to avoid by only supplying Chrome with 720p. However, after my exchange with the UI developer from Netflix, if Chrome can be proven to sustain 1080p playback with minimal CPU usage, 1080p playback within Chrome may become official.