- A browser extension to play DRM-protected content without a real CDM
- Works by redirecting the content keys to the browser's ClearKey handler
- User-friendly / GUI-based
- Supports Widevine and PlayReady-protected content
- Manifest V3 compliant
- Per-site configuration
- This addon requires a Widevine/PlayReady Device file (
*.wvd/*.prd) to work. Don't ask me where to get those. - For remote devices, you can find samples in the
devicesdirectory. Some of them might require modification to work with your specific use case.
- Should be compatible with all modern browsers that support the standard EME, the ClearKey CDM, and the Manifest V3 extensions
- Tested browsers
- Chrome, Edge, Brave, Supermium, ungoogled-chromium, Firefox, LibreWolf, and Marble on Windows
- Lemur Browser on Android
- Incompatible browsers:
- Tor Browser (does not support ClearKey)
- Firefox for Android, and its forks, such as Kiwi Browser (does not support ClearKey)
- Safari and other WebKit-based browsers (its ClearKey implementation is weird and non-standard I think)
- Internet Explorer, obviously.
- Works with any service that accepts challenges from Android devices on the same endpoint.
- Services incompatible with mobile/TV devices:
- Netflix
- VdoCipher (if 2074 error occurs)
- CBS
- Fastevo
- Rakuten TV (only applies to Widevine)
- Some services may detect your browser and interfere with PlayReady playback. Try using a user-agent changer extension, or use a Chromium-based browser for PlayReady playback.
- Firefox-based browsers may fail to play some PlayReady-protected video, with an internal error saying
ChromiumCDMParent::RecvDecodeFailed with status decode error. This is a problem with the browser's ClearKey handler, and Vineless can do nothing about it. Please use a Chromium-based browser if this error occurs. - Incompatible extensions:
- WidevineProxy2, PlayreadyProxy2, or anything similar
- EME Call and Event Logger (extension, not the userscript)
- For Vineless to work, these extensions must be fully disabled in the browser's extensions page
- Chrome
- Download the ZIP file from the releases section
- Navigate to
chrome://extensions/ - Enable
Developer mode - Drag-and-drop the downloaded file into the window
- Firefox
- Persistent installation
- Download the XPI file from the releases section
- Navigate to
about:addons - Click the settings icon and choose
Install Add-on From File... - Select the downloaded file
- Temporary installation
- Download the ZIP file from the releases section
- Navigate to
about:debugging#/runtime/this-firefox - Click
Load Temporary Add-on...and select the downloaded file
- Persistent installation
- Open the extension and select the type of device you're using in the top
Systemssection - Click one of the
Choose Filebuttons to select device files - You're all set!
- The files are saved in the extension's
chrome.storage.syncstorage and will be synchronized across any browsers into which the user is signed in with their Google account. - The maximum number of devices is ~25 Local OR ~200 Remote CDMs
- The maximum number of per-site profiles is ~200 profiles
- The number of saved key logs is unlimited as long as your disk space allows
All the user has to do is to play a DRM protected video. With everything set up properly, videos will start to play even without a supported DRM system.
What if I'm unable to play the video?
- First, check if the service accepts your device and is working correctly.
- For Widevine, use either WidevineProxy2 or openwv with the same WVD file.
- For PlayReady, use PlayreadyProxy2 with the same PRD file.
- For ClearKey, just fully disable Vineless and test the playback with the non-intercepted ClearKey handler.
- Do note that WidevineProxy2 and PlayreadyProxy2 do not support playback, so just test if you can acquire the keys with them. Also, fully disable Vineless before testing those two.
- If those aren't working as well, 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.
- If those are working but Vineless isn't working, please report this on the issues page. Please include the DevTools console logs as well, and make sure the verbose/debug logs are enabled.
- Requirements: Node.js (with npm), Git (if cloning from GitHub)
git clone https://github.com/Ingan121/Vineless
cd Vineless
npm install
npm run build
# The build output will be in the `dist` directory- This program is intended solely for educational purposes.
- Do not use this program to decrypt or access any content for which you do not have the legal rights or explicit permission.
- Unauthorized decryption or distribution of copyrighted materials is a violation of applicable laws and intellectual property rights.
- This tool must not be used for any illegal activities, including but not limited to piracy, circumventing digital rights management (DRM), or unauthorized access to protected content.
- The developers, contributors, and maintainers of this program are not responsible for any misuse or illegal activities performed using this software.
- By using this program, you agree to comply with all applicable laws and regulations governing digital rights and copyright protections.