// ==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)
})();