An extension-based proxy for Widevine EME challenges and license messages. \ Modifies the challenge before it reaches the web player and retrieves the decryption keys from the response.
This addon requires a Widevine Device file to work, which is not provided by this project. + Use an existing Remote CDM like this one + Follow this guide if you want to dump your own device. + Ready-to-use Widevine Devices can be found on the VideoHelp forum.
chrome://extensions/Developer modeabout:addonsInstall Add-on From File...about:debugging#/runtime/this-firefoxLoad Temporary Add-on... and select the downloaded fileIf you only have a device_client_id_blob and device_private_key, run this command to create a .wvd file:
pywidevine create-device -k device_private_key -c device_client_id_blob -t "ANDROID" -l 3
Now, open the extension, click Choose File and select your Widevine Device file.
If you don't already have a remote.json file, open the API URL in the browser (if provided) and save the response as remote.json. \
Now, open the extension, click Choose remote.json and select the JSON file provided by your API.
chrome.storage.sync storage and will be synchronized across any browsers into which the user is signed in with their Google account.Enabled to activate the message interception and you're done.All the user has to do is to play a DRM protected video and the decryption keys should appear in the Keys group box (if the service is not unsupported, as stated above). \
Keys are saved:
+ Temporarily until the extension is either refreshed manually (if installed temporarily) or a removal of the keys is manually initiated.
+ Permanently in the extension's chrome.storage.local storage until manually wiped or exported via the command line.
[!NOTE]
The video will not play when the interception is active, as the Widevine CDM library isn't able to decrypt the Android CDM license.
+ button to expand the section to reveal the PSSH and keys.What if I'm unable to get the keys?
This automatically means that the license server is blocking your CDM and that you either need a CDM from a physical device, a ChromeCDM, or an L1 Android CDM. Don't ask where you can get these
$ claude mcp add WidevineProxy2 \
-- python -m otcore.mcp_server <graph>