Studying Polyv hotlink protection: customized hls.js with multiple encryption layers against hotlinking, merging and downloads
I recently studied Polyv's hotlink-protection strategy. Its core is custom encryption and decryption of the key in m3u8, implemented through modified hls.js logic with symmetric encryption, protected by JS obfuscation. I spent 3 days examining hls.js source. Once familiar with it, I produced a customized HLS.JS similar to Polyv, with domain-bound playback, symmetric encryption and decryption with EFV, and protection against hotlinking, downloading, merging and cracking.
Features
- One: Customized
HLS.JSimplements our encryption and decryption logic. - Two: Symmetric encryption between
EFVand frontendHLS.JSfundamentally addresses hotlinking, merging and downloads. - Three: Multiple encryption layers in
HLS.JSmake cracking difficult, with tens of thousands of lines of code. - Four: The communication
KEYmakes cracking impossible according to this design. Each change to the protectionKEYand regeneratedHLS.JSproduces a new version and protection architecture in only1minute. - Five: Experts are welcome to test and attempt cracking or unauthorized playback. Testing is ongoing; contact customer support on
QQfor details.
Example
https://moeb.me/ is bound to moeb.me and the corresponding EFV protection KEY. Only this domain can play it, with unauthorized playback, downloading and merging protected through one file. You are welcome to inspect and test it.
Limitations
Mobile browsers that intercept the player and replace M3U8 parsing cannot play it. Polyv has the same limitation because both use custom decryption. Direct users to browsers such as Google's, or implement an APP using the decryption logic.


