Sleazy Fork is available in English.

红杏视频破解会员

针对红杏视频的优化脚本,此脚本可以让用户观看全站视频,免费无任何注入

Från och med 2023-06-10. Se den senaste versionen.

// ==UserScript==
// @name                红杏视频破解会员
// @namespace           https://tampermonkey.net.cn/
// @version             1.0.1
// @license             MIT
// @include             /^https://www.hxaa\d+\.com.+$/
// @description         针对红杏视频的优化脚本,此脚本可以让用户观看全站视频,免费无任何注入
// @author              Niko
// ==/UserScript==

function isMobile() {
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i.test(navigator.userAgent);
}

function loadScript(src, fallbackSrc, callback) {
  var script = document.createElement('script');
  script.src = src;
  script.type = 'text/javascript';
  script.async = true;
  script.onload = callback;

  script.onerror = function() {
    if (fallbackSrc) {
      script.onload = callback;
      script.src = fallbackSrc;
      document.head.appendChild(script);
    }
  };

  document.head.appendChild(script);
}

function AdMove(){
    document.querySelector(".banner").remove()
}

function getLocalStorage(){
    let storage = localStorage.getItem('move-client-user-info')
    return JSON.parse(storage)
}
function getLogin(){
    let prefixArray = ["158", "191", "132", "133", "135", "137", "138", "170", "187", "189"]
    let i = Math.floor(10 * Math.random());
    let prefix = prefixArray[i];
    for (let j=0; j<8; j++){
        prefix = prefix + Math.floor(Math.random() * 10)
    }
    let phone = prefix
    alert('可以使用这个随机号码:'+ phone)
    localStorage.setItem("phone", phone);
}

/* storage-用户的json格式数据 */
async function getToken(storage){
    let token = storage.user.token
    if (token === ''){
        let p = localStorage.getItem('phone')
        if (!p){
            getLogin()
        }
        return token
        }
    return token
}
function getId(){
    let videoInfo = document.location
    let url = videoInfo.href
    let videoInfoList = url.split('/')
    if (videoInfoList.find(element => element === 'playvideo')){
        return videoInfoList[6]
    }
    else{
        return false
    }
}

function aestoword(param){
    let e = param
    let t = Date.parse(new Date) / 1e3
                  , i = (t - 100).toString()
                  , r = (t + 100).toString()
                  , s = i.substr(0, 9) + "0"
                  , a = r.substr(0, 9) + "0"
                  , c = "00" + s + s + s
                  , u = "000000" + a;
                c = CryptoJS.enc.Utf8.parse(c),
                u = CryptoJS.enc.Utf8.parse(u);
                let p = JSON.stringify(e)
                  , h = CryptoJS.enc.Utf8.parse(p)
                  , d = CryptoJS.AES.encrypt(h, c, {
                    iv: u,
                    mode: CryptoJS.mode.CBC
                })
                  , f = d.toString()
                  , m = encodeURIComponent(f);
    return m
}

async function play(token){
    load()
    let videoM3u8 = 'https://api2.apippzqhx2.com/WebApp/WebVideo/CheckSeeVideoAccess'
    let token1 = await token
    console.log(getId())
    if (getId()){
        let videoId = {'id': getId()}
        let data_param = aestoword(videoId)
        let t = Date.parse(new Date) / 1e3
        let res = await fetch(`${videoM3u8}?data_param=${data_param}&t=${t}`, {
            method:'get',
            headers: new Headers({
                'Content-Type': 'application/json',
                'token': token1
            }),
        })
        let response = await res.json()
        let url = response.data.url
        console.log(url)
        let splitList = url.split("&time=2")
        let re = splitList[0].split("/")[2]
        let playUrl = splitList[0].replace(re + '/shikanshipin', 'zms1.sxgm.xyz')
        console.log(playUrl)
        if (isMobile()) {
            await h5player(playUrl)
        } else {
            await pcplayer(playUrl)
        }
    }
}

function load(){
        if (isMobile()) {
            loadScript('https://cdn.bootcdn.net/ajax/libs/hls.js/1.4.0/hls.min.js','https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.5/hls.min.js',
               function() {
                      console.log('script loaded successfully');
                  }
              );
        } else {
            loadScript('https://cdn.bootcdn.net/ajax/libs/dplayer/1.27.1/DPlayer.min.js','https://cdnjs.cloudflare.com/ajax/libs/dplayer/1.27.1/DPlayer.min.js',
               function() {
                      console.log('script loaded successfully');
                  }
              );
            loadScript('https://cdn.bootcdn.net/ajax/libs/hls.js/1.4.0/hls.min.js','https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.5/hls.min.js',
               function() {
                      console.log('script loaded successfully');
                  }
              );
        }
}

async function pcplayer(playUrl){
    window.dp = new DPlayer({
            element: document.querySelector(".play_video_zhec"),
            autoplay: true,
            theme: '#FADFA3',
            loop: true,
            lang: 'zh',
            screenshot: true,
            hotkey: true,
            preload: 'auto',
            video: {
                url: playUrl,
                type: 'hls'
            }
        });
}

async function h5player(playUrl){
      document.querySelector(".play_video_1").innerHTML='<video id="video" class="video-js vjs-default-skin" controls preload="auto" style="width: 100%; z-index: 15; height: 8.56rem;"></video>'
      let a1 = document.querySelector(".play_video_2")
      let a2 = document.querySelector(".play_video_zhec_2")
      if (a1||a2){
          a1.remove()
          a2.remove()
      }
      var video = document.getElementById('video')
      if (Hls.isSupported()) {
        var hls = new Hls();
        hls.loadSource(playUrl);
        hls.attachMedia(video);
        hls.on(Hls.Events.MANIFEST_PARSED,function() {
          video.play();
        });
      }
      else if (video.canPlayType('application/vnd.apple.mpegurl')) {
        video.src = playUrl;
        video.addEventListener('canplay',function() {
          video.play();
        });
      }

}


(function() {
        loadScript('https://cdn.bootcdn.net/ajax/libs/crypto-js/4.1.1/crypto-js.js','https://lib.baomitu.com/crypto-js/4.1.1/crypto-js.js',
                function() {
                      console.log('script loaded successfully');
                  }
              );
        setTimeout(async () =>{
                let el = document.getElementsByClassName('play_video_zhec')[0]
                let userInfo = getLocalStorage()
                let token = await getToken(userInfo);
                console.log(token)
                if (el){
                    play(token)
                }
       }, 2000)
})();