Sleazy Fork is available in English.

红杏视频破解会员

针对红杏视频的优化脚本,此脚本可以让用户观看VIP视频

Från och med 2022-11-16. Se den senaste versionen.

// ==UserScript==
// @name                红杏视频破解会员
// @namespace           https://tampermonkey.net.cn/
// @version             0.4.1
// @license MIT
// @match               *://www.hxaa11.com/*
// @description         针对红杏视频的优化脚本,此脚本可以让用户观看VIP视频
// @author              Niko
// ==/UserScript==

function importLib(){
    importJS("https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.1.5/hls.min.js")
    importJS("https://cdnjs.cloudflare.com/ajax/libs/dplayer/1.26.0/DPlayer.min.js")
}

function importJS(src){
    let script = document.createElement('script');
    script.src = src;
    document.head.appendChild(script);
}

function getLocalStorage(){
    let storage = localStorage.getItem('move-client-user-info')
    return JSON.parse(storage)
}

async function getLogin(){
    let registerUrl = 'https://api.hxff88.com/WebApp/Register'
    let prefixArray = ["130", "131", "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
    let pwd = '123456'
    let registerData = {"client_system":0,"referral_code":"m2RsTs3d","password":pwd,"phone":phone}
    let res = await fetch(registerUrl, {
        method:'post',
        body:JSON.stringify(registerData),
        headers: new Headers({
            'Content-Type': 'application/json'
        })
     })
    let response = await res.json()
    let token = response.data.token
    document.querySelector('#app > div > div.top_bar > div.container.top > div.top_right > div.top_right_photo > div:nth-child(2)').click()
    let event = document.createEvent('HTMLEvents')
    event.initEvent("input", true, true)
    event.eventType = 'message'
    setTimeout(() => {
        let account = document.getElementsByClassName('van-field__control')[0]
        account.value = phone
        account.dispatchEvent(event)
        let password = document.getElementsByClassName('van-field__control')[1]
        password.value = pwd
        password.dispatchEvent(event)
        document.getElementsByClassName('van-button')[0].click()
    }, 1000)
    return token
}

/* storage-用户的json格式数据 */
async function getToken(storage){
    let token = storage.user.token
    if (token === ''){
        token = await 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 0
    }
}

// function destroyPlayer(){
//     setTimeout(()=>{
//         if (document.getElementsByClassName('play_video')[0]){
//             document.getElementsByClassName('play_video_zhec')[0].remove()
//         }
//     }, 1000)
// }

async function play(token){
    let videoM3u8 = 'https://api.hxff88.com/WebApp/WebVideo/CheckSeeVideoAccess'
    let token1 = await token
    let videoId = getId()
    // console.log(token1)
    if (videoId){
        importLib()
        // destroyPlayer()
        let res = await fetch(videoM3u8 + '?id=' + videoId, {
            method:'get',
            headers: new Headers({
                'Content-Type': 'application/json',
                'token': token1
            })
        })
        let response = await res.json()
        let url = response.data.url
        let splitList = url.split("&")
        console.log(splitList[0] + '&' + splitList[1])
        let playUrl = splitList[0] + '&' + splitList[1]

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


(function() {
    'use strict'
    // setTimeout(async () => {
    //     var userInfo = getLocalStorage()
    //     var token = await getToken(userInfo);
    //     console.log(1)
    //     play(token)
    // }, 1000)
    setInterval(async () =>{
        let el = document.getElementsByClassName('play_video_zhec')[0]
        let userInfo = getLocalStorage()
        let token = await getToken(userInfo);
        console.log(token)
        if (el){
            await play(token)
        }
    }, 1000)
}
)();