forked from hoothin/UserScripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVIP Video Cracker.user.js
More file actions
325 lines (324 loc) · 16.8 KB
/
Copy pathVIP Video Cracker.user.js
File metadata and controls
325 lines (324 loc) · 16.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
// ==UserScript==
// @name VIP视频破解
// @name:en VIP Video Cracker
// @namespace hoothin
// @version 1.8.7
// @description 解析并破解各大视频站的VIP权限
// @description:en Crack VIP permissions of some chinese video sites
// @author hoothin
// @include *://v.qq.com/x/*
// @include *://m.v.qq.com/*
// @include *://*.mgtv.com/*b/*
// @include *://*.le.com/ptv/vplay/*
// @include *://m.le.com/*
// @include *://v.youku.com/v_show/*
// @include *://m.youku.com/video/*
// @include *://*.iqiyi.com/v_*
// @include *://*.iqiyi.com/dianying/*
// @include *://*.tudou.com/albumplay/*
// @include *://*.tudou.com/listplay/*
// @include *://*.tudou.com/programs/view/*
// @include *://*.wasu.cn/*Play/show/id/*
// @include *://*tv.sohu.com/*
// @include *://*film.sohu.com/album/*
// @include *://ddp.vip.pptv.com/vod_detail/*
// @include *://*.pptv.com/show/*
// @include *://*.acfun.cn/v/*
// @include *://*.fun.tv/vplay/*
// @include *://vip.1905.com/play/*
// @include *://vip.pptv.com/show/*
// @include *://v.yinyuetai.com/video/*
// @include *://v.yinyuetai.com/playlist/*
// @include *://*.bilibili.com/video/*
// @exclude *?url=*
// @exclude *?qt=*
// @exclude *?v=*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_openInTab
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @license MIT License
// @connect cache.video.qiyi.com
// ==/UserScript==
(function() {
'use strict';
var cracks=[
{name:"47影视云(s)",url:"https://api.47ks.com/webcloud/?v=%s",title:"首选"},
{name:"无名小站",url:"http://www.wmxz.wang/video.php?url=%s",title:"次选"},
{name:"石头解析(s)",url:"https://jiexi.071811.cc/jx.php?url=%s"},
{name:"最小品(s)",url:"https://www.zuixiaopin.com/api/cloudVideo?url=%s"},
{name:"妹儿云(s)",url:"https://www.yymeier.com/api.php?url=%s"},
{name:"那片(s)",url:"https://jxapi.nepian.com/ckparse/?url=%s"},
{name:"FlvSP(s)",url:"https://api.flvsp.com/?url=%s"},
{name:"海播",url:"http://www.0335haibo.com/tong.php?url=%s"},
{name:"眼睛会下雨",url:"http://www.vipjiexi.com/yun.php?url=%s",title:"域名改成海播了,https证书也没了"},
{name:"小海解析(s)",url:"https://ckplaer.duapp.com/hai2.php?url=%s",title:"播放器放在百度开发者平台"},
{name:"爱看TV",url:"http://aikan-tv.com/?url=%s"},
{name:"噗噗电影",url:"http://pupudy.com/webcloud/index.php?url=%s"},
{name:"米沃",url:"http://jx.mihatv.com/miwo1.php?url=%s"},
{name:"速度牛",url:"http://api.wlzhan.com/tong/?url=%s"},
{name:"资源帝",url:"http://www.ziyuand.cn/jx1/jx.php?url=%s"},
{name:"旋风解析",url:"http://api.xfsub.com/index.php?url=%s"},
{name:"Relon",url:"http://yyygwz.com/index.php?url=%s"},
{name:"SO视频",url:"http://parse.colaparse.cc/?url=%s"},
{name:"5奇异",url:"http://www.jiexi.cx/5qiyi/?url=%s"},
{name:"Moondown",url:"http://moon.moondown.net/?url=%s"},
{name:"选片网",url:"http://jx.xuanpianwang.com/parse?url=%s"},
{name:"云上",url:"http://www.ou522.cn/t2/1.php?url=%s"},
{name:"强强卷",url:"http://000o.cc/jx/ty.php?url=%s"},
{name:"Lewei369",url:"http://s1y2.com/?url=%s"},
{name:"紫狐云",url:"http://yun.zihu.tv/api.php?url=%s"},
{name:"土豪网",url:"http://www.tuhao13.com/yunparse/index.php?url=%s"},
{name:"舞动秋天",url:"http://qtzr.net/s/?qt=%s"},
{name:"97在线看",url:"http://www.97zxkan.com/jiexi/97zxkanapi.php?url=%s"},
{name:"百域阁",url:"http://api.svip.baiyug.cn/svip/index.php?url=%s",title:"会检测是否frame,只能跳转不能嵌"},
{name:"言朋影院",url:"http://vip.yingyanxinwen.cn/vip/index.php?url=%s",title:"会检测是否frame,只能跳转不能嵌"},
{name:"迷失之梦",url:"http://mt2t.com/yun?url=%s",title:"这个解析站似乎不大稳定"},
{name:"无名小站源",url:"http://www.sfsft.com/admin.php?url=%s",title:"无名小站的源"},
{name:"VIP看看",url:"http://2.jx.72du.com/video.php?url=%s",title:"嵌了无名小站的服务"},
{name:"歪歪电影",url:"http://www.yydy8.com/common/?url=%s",title:"嵌了47影视云的服务"},
{name:"梦中人",url:"http://www.wpswan.com/mzr/vipparse/index.php?url=%s",title:"嵌了47影视云的服务"},
{name:"71ki解析",url:"http://jx.71ki.com/tong.php?url=%s"},
{name:"CloudParse",url:"http://api.cloudparse.com/?url=%s"},
{name:"10号影院",url:"http://player.gakui.top/?url=%s"},
{name:"PPYPP",url:"http://www.ppypp.com/yunparse/?url=%s"},
{name:"疯狂解析",url:"http://vip.ifkdy.com/?url=%s",title:"仅是简单嵌了47影视云、小海解析等几个解析站"},
],video,videoWidth,videoHeight,i=0;
var isMobile=function() {
var userAgentInfo = navigator.userAgent.toLowerCase();
var Agents=["android", "iphone",
"symbianos", "windows phone",
"ipad", "ipod" ,"midp" ,"ucweb"];
var flag=false;
for (var v=0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag=true;
break;
}
}
return flag;
}();
var iqiyi=location.hostname.indexOf("iqiyi.com")!=-1;
var vipVideoCrackJump=GM_getValue(location.hostname+"_vipVideoCrackJump");
var vipVideoCrackEmbed=GM_getValue("vipVideoCrackEmbed");
var vipVideoCrackUrl=GM_getValue("vipVideoCrackUrl");
var iframe=document.createElement("iframe");
iframe.style.border="0";
var selectStyle=document.createElement("style");
selectStyle.innerHTML=".crackJump{font-size:12px;margin-left:5px;color:white;text-shadow:#000 1px 0 0,#000 0 1px 0,#000 -1px 0 0,#000 0 -1px 0;-webkit-text-shadow:#000 1px 0 0,#000 0 1px 0,#000 -1px 0 0,#000 0 -1px 0;-moz-text-shadow:#000 1px 0 0,#000 0 1px 0,#000 -1px 0 0,#000 0 -1px 0;*filter: Glow(color=#000, strength=1);}.crackJump input{vertical-align:middle;}.vipSelect{background:black;color:white;font-size:12px;border:none;}.crackArea{position:absolute;z-index:999999;left:0px;top:0px;opacity:0.50;filter:alpha(opacity=50);transition:opacity 0.3s ease,width 0.3s ease;width:18px;height:18px;overflow:hidden;white-space:nowrap;border:1px solid #666;background:black;}.crackArea:hover{opacity:1;filter:alpha(opacity=100);width:230px;}.crackArea>p{display:block;font-size:13px;text-align:center;float:left;position:absolute;top:0px;background-color:black;width:100%;height:100%;margin:0 auto}.crackArea:hover>p{display:none;}.crackArea>label{display:none;}.crackArea:hover>label{display:initial;}";
document.getElementsByTagName("head")[0].appendChild(selectStyle);
var placeholder=document.createElement("div");
placeholder.style.cssText="width:100%;height:100%;text-align:center;font-size:x-large;cursor:pointer;color:#666;";
placeholder.innerHTML="点击恢复视频播放";
placeholder.addEventListener("click",function(){
if(placeholder.parentNode){
placeholder.parentNode.replaceChild(video,placeholder);
}
});
var select=document.createElement("select");
select.className="vipSelect";
select.innerHTML="<option value=''>💎 VIP解析</option>";
if(!GM_getValue("hacgGodTurnVisited")){
select.innerHTML+="<option value='https://greasyfork.org/scripts/23316/code/hacg.user.js'>\u2605\u4e0a\u8f66\u2605</option>";
}
cracks.forEach(function(item){
var optionStr="<option value='"+item.url+"'"+(item.title?"title='"+item.title+"'":"")+">"+item.name+"</option>";
select.innerHTML+=optionStr;
});
select.onchange=function(){
var value=select.options[select.options.selectedIndex].value;
if(value){
var url=value.replace("%s",(iqiyi&&location.href.indexOf("#")!=-1?decodeURIComponent(document.querySelector(".sns-icon>li>a").href.replace(/.*url=(.*)%3Fsrc.*/,"$1")):location.href));
if(value.indexOf("hacg.user.js")!=-1){
GM_setValue("hacgGodTurnVisited",true);
select.options.remove(select.options.selectedIndex);
}else{
vipVideoCrackUrl=value;
GM_setValue("vipVideoCrackUrl",vipVideoCrackUrl);
if(video.parentNode)video.parentNode.replaceChild(placeholder,video);
}
if(!vipVideoCrackEmbed || !embedCrack(url)){
unsafeWindow.open(url);
}
select.options.selectedIndex=0;
}
};
var quickAccess=document.createElement("label");
quickAccess.className="crackJump";
quickAccess.title="立即利用上次选择的接口破解";
quickAccess.innerHTML="<input type='checkbox'>立即破解";
var jumpCheck=quickAccess.querySelector("input");
jumpCheck.onclick=function(){
vipVideoCrackJump=jumpCheck.checked;
GM_setValue(location.hostname+"_vipVideoCrackJump",vipVideoCrackJump);
crackJump();
};
var embedLabel=document.createElement("label");
embedLabel.className="crackJump";
embedLabel.title="能嵌入当前站点的接口就直接嵌入页面";
embedLabel.innerHTML="<input type='checkbox'>能嵌就嵌";
var embedCheck=embedLabel.querySelector("input");
embedCheck.onclick=function(){
vipVideoCrackEmbed=embedCheck.checked;
GM_setValue("vipVideoCrackEmbed",vipVideoCrackEmbed);
crackJump();
};
var showP=document.createElement("p");
showP.innerHTML="💎";
var crackArea=document.createElement("div");
crackArea.className="crackArea";
crackArea.appendChild(select);
crackArea.appendChild(showP);
crackArea.appendChild(quickAccess);
crackArea.appendChild(embedLabel);
function crackJump(){
if(vipVideoCrackJump){
var value=vipVideoCrackUrl?vipVideoCrackUrl:cracks[0].url;
var url=value.replace("%s",(iqiyi?location.href.replace(/#.*/,""):location.href));
if(!vipVideoCrackEmbed || !embedCrack(url)){
GM_openInTab(url,false);
if(video.parentNode)video.parentNode.replaceChild(placeholder,video);
}
}
}
function embedCrack(url){
var canEmbed=false;
if(/^https/.test(url)){
url=location.protocol+url.slice(6);
canEmbed=true;
}else if(location.protocol=="http:"){
canEmbed=true;
}
var htmlVideo=document.querySelector("video");
if(htmlVideo){
var vi=setInterval(function(){
if(htmlVideo.src){
setTimeout(function() {
htmlVideo.click();
},1000);
clearInterval(vi);
}
},500);
}
if(canEmbed){
if(iqiyi){
var plgcontainer=document.querySelector('[data-player-hook=plgcontainer]');
var videoLoading=document.querySelector('[data-player-hook=videoLoading]');
var isi=setInterval(function(){
var jplayUnderFrame=document.querySelector('.J_play-underFrame');
if(jplayUnderFrame){
clearInterval(isi);
var flashArea_paypop=document.querySelector('#flashArea_paypop');
if(flashArea_paypop)flashArea_paypop.parentNode.parentNode.removeChild(flashArea_paypop.parentNode);
jplayUnderFrame.parentNode.removeChild(jplayUnderFrame);
}
},500);
if(plgcontainer)plgcontainer.parentNode.removeChild(plgcontainer);
if(videoLoading)videoLoading.parentNode.removeChild(videoLoading);
}
iframe.width=videoWidth;
iframe.height=videoHeight;
iframe.src=url;
if(!iframe.parentNode){
if(video.parentNode){
video.parentNode.replaceChild(iframe,video);
}else{
placeholder.parentNode.replaceChild(iframe,placeholder);
}
video=iframe;
}
}
return canEmbed;
}
if(isMobile){
crackArea.style.position="fixed";
document.body.appendChild(crackArea);
}else{
var si=setInterval(function(){
[].every.call(document.querySelectorAll("object,embed,video"),function(item){
var style=unsafeWindow.getComputedStyle(item, null);
if(style.width.replace("px","")>100 && style.height.replace("px","")>100){
video=item;
return false;
}
return true;
});
if(video){
clearInterval(si);
var videoStyle=unsafeWindow.getComputedStyle(video, null);
videoWidth=videoStyle.width;
videoHeight=videoStyle.height;
var videoParent=video.parentNode;
videoParent.appendChild(crackArea);
placeholder.style.lineHeight=unsafeWindow.getComputedStyle(videoParent).height;
if(location.hostname.indexOf("v.yinyuetai.com")!=-1){
if (!/^https?:\/\/v\.yinyuetai\.com\/video\/h5\//.test(location.href)) {
unsafeWindow.location.href = unsafeWindow.location.href.replace(/^https?:\/\/v\.yinyuetai\.com\/video\//,"http://v.yinyuetai.com/video/h5/");
}else{
videoParent.parentNode.style.position="absolute";
setTimeout(function(){
videoStyle=unsafeWindow.getComputedStyle(video, null);
videoWidth=videoStyle.width;
videoHeight=videoStyle.height;
},1000);
}
}else if(location.hostname.indexOf("v.youku.com")!=-1){
if(vipVideoCrackEmbed)videoHeight="580px";
}else if(location.hostname.indexOf("le.com")!=-1){
document.querySelector('.juji_cnt').addEventListener('click', function(e){
if(!vipVideoCrackJump)return;
var target=e.target;
if(target.tagName!="A")return;
location.href="http://www.le.com/ptv/vplay/"+target.getAttribute("data-vid")+".html";
});
}else if(iqiyi){
document.querySelector('#widget-dramaseries').addEventListener('click', function(e){
if(!vipVideoCrackJump)return;
var target=e.target.parentNode.tagName=="LI"?e.target.parentNode:(e.target.parentNode.parentNode.tagName=="LI"?e.target.parentNode.parentNode:e.target.parentNode.parentNode.parentNode);
if(target.tagName!="LI")return;
GM_xmlhttpRequest({
method: 'GET',
url: "http://cache.video.qiyi.com/jp/vi/"+target.dataset.videolistTvid+"/"+target.dataset.videolistVid+"/?callback=crackIqiyi",
onload: function(result) {
var crackIqiyi=function(d){
location.href=d.vu;
};
eval(result.responseText);
}
});
});
unsafeWindow.addEventListener("hashchange",function(){
crackJump();
});
}
if(vipVideoCrackJump){
jumpCheck.checked=true;
}
if(vipVideoCrackEmbed){
embedCheck.checked=true;
}
crackJump();
unsafeWindow.eval(`
var pushState = window.history.pushState;
window.history.pushState=function(a){
window.postMessage("pushState","*");
return pushState.apply(history, arguments);
};
var replaceState = window.history.pushState;
window.history.replaceState=function(a){
window.postMessage("replaceState","*");
return pushState.apply(history, arguments);
};`);
unsafeWindow.addEventListener('message',function(e) {
if(e.data=="pushState" || e.data=="replaceState"){
setTimeout(function(){crackJump();},1);
}
});
}
},500);
setTimeout(function(){
clearInterval(si);
},20000);
}
})();