From 6ea327ef5cb320af3c8ca700eb72b908cf3946c1 Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Sat, 22 Oct 2022 14:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'SrcParseS.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SrcParseS.js | 141 ++++++++------------------------------------------- 1 file changed, 20 insertions(+), 121 deletions(-) diff --git a/SrcParseS.js b/SrcParseS.js index e1ff69be..03bd17aa 100644 --- a/SrcParseS.js +++ b/SrcParseS.js @@ -49,11 +49,10 @@ var SrcParseS = { } return header; }, - 嗅探: function (vipUrl, excludeurl ,testurl) { + 嗅探: function (vipUrl, excludeurl) { showLoading('√视频解析中,请稍候...'); excludeurl = excludeurl||[]; - var testurl = testurl||this.testvideourl; - return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl,vipUrl,excludeurl,testurl) => { + return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl,vipUrl,excludeurl) => { if (window.c == null) { if (typeof (request) == 'undefined' || !request) { eval(fba.getInternalJs()); @@ -77,7 +76,12 @@ var SrcParseS = { var exclude = /\/404\.m3u8|\/xiajia\.mp4|\/余额不足\.m3u8|\.css|\.js|\.gif|\.png|\.jpeg|api\.m3u88\.com|html,http|\.php\?v=h|\?url=h|\&url=h|%253Furl%253Dh/;//设置排除地址 var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4|\.ts\?|TG@UosVod/;//设置符合条件的正确地址 for (var i in urls) { - if (!exclude.test(urls[i]) && contain.test(urls[i]) && excludeurl.indexOf(urls[i])==-1 && testurl(urls[i],false,false,true)==1) { + var tc = 1; + if(/cdn\.oss-cn-m3u8\.tv-nanjing-chengdu\.myqcloud\.com\.zh188.net/.test(urls[i])){ + var html = request(urls[i],{timeout:1500})||""; + if(html.indexOf("token过期了")>-1){tc = 0;} + } + if (!exclude.test(urls[i]) && contain.test(urls[i]) && excludeurl.indexOf(urls[i])==-1 && tc==1) { //fba.log("嗅探成功>"+urls[i]); //return urls[i]+'#isVideo=true#'; if(fy_bridge_app.getHeaderUrl&&vipUrl.indexOf("=http")==-1) @@ -97,7 +101,7 @@ var SrcParseS = { } } } - }, this.formatUrl, vipUrl, excludeurl, testurl) + }, this.formatUrl, vipUrl, excludeurl) }, 智能: function (vipUrl, input) { showLoading('√智能解析中,请稍候'); @@ -354,111 +358,7 @@ var SrcParseS = { } let libsjxhtml = "hiker://files/libs/" + md5(jxhtml) + ".html"; writeFile(libsjxhtml, libsjxjs); - return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl, excludeurl, this.testvideourl); - }, - - APP: function (vipUrl) { - var appParses = getMyVar('parse_api', ''); - var Uparselist = []; - Uparselist = appParses.split(','); - function uniq(array) { - var temp = []; //一个新的临时数组 - for (var i = 0; i < array.length; i++) { - if (temp.indexOf(array[i]) == -1) { - temp.push(array[i]); - } - } - return temp; - } - Uparselist = uniq(Uparselist);//去重 - var x5jxlist = []; //x5嗅探接口存放数组 - var url = ""; - var parseurl = ""; - var urls = [];//多线路地址 - var headers = [];//多线路头信息 - var exclude = /404\.m3u8|xiajia\.mp4|余额不足\.m3u8|\.suoyo|\.ruifenglb|m3u8\.tv/;//设置排除地址 - var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/;//设置符合条件的正确地址 - if (!exclude.test(vipUrl) && contain.test(vipUrl)) { - url = vipUrl; - } - for (var i = 0; i < Uparselist.length; i++) { - if (contain.test(url)) { break; } - if (x5jxlist.length >= 3) { break; } - let UrlList = []; - let p = i + 3; - if (p > Uparselist.length) { p = Uparselist.length } - for (let s = i; s < p; s++) { - parseurl = Uparselist[s]; - if (parseurl[0] == '/') { parseurl = 'https:' + parseurl } - if (parseurl.substring(0, 4) == 'http') { - UrlList.push(parseurl); - } - i = s; - } - if (UrlList.length > 0) { - let playUrls = UrlList.map((playUrl) => { - return { - url: playUrl + vipUrl, - options: { headers: { 'User-Agent': PC_UA }, timeout: 2000 } - } - }); - - let bfhtml = batchFetch(playUrls); - for (let k in bfhtml) { - let gethtml = bfhtml[k]; - parseurl = UrlList[k]; - if (gethtml == undefined || gethtml == "" || !/<|{/.test(gethtml)) { - //url直链网页打不开 - } else { - try { - try { - var rurl = JSON.parse(gethtml).url || JSON.parse(gethtml).data; - } catch (e) { - try { - var rurl = gethtml.match(/urls = "(.*?)"/)[1]; - } catch (e) { - x5jxlist.push(parseurl); - } - } - if (typeof (rurl) != "undefined" && contain.test(rurl) && !exclude.test(rurl)) { - url = rurl; - urls.push(this.formatUrl(url, urls.length)); - headers.push(this.mulheader(url)); - } - } catch (e) { } - } - }//批量结果循环 - } - } - - if (url == "") { - if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) { - if (getMyVar('SrcGJFS', '1') == "2") { - return this.DN(vipUrl); - } else { - if (getMyVar('author') == "帅√`人才") { - return this.聚嗅(vipUrl); - } else { - return this.聚嗅(vipUrl, x5jxlist); - } - } - } else { - if (getMyVar('author') == "帅√`人才") { - return this.智能(vipUrl); - } else { - return this.聚嗅(vipUrl, x5jxlist); - } - } - } else { - if (urls.length > 1) { - return JSON.stringify({ - urls: urls, - headers: headers - }); - } else { - return this.formatUrl(url); - } - } + return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl, excludeurl); }, 聚影: function (vipUrl,parseStr) { //聚影采用新的、独立的解析逻辑 @@ -1103,7 +1003,7 @@ var SrcParseS = { } }, //测试视频地址有效性 - testvideourl: function (url,name,times,nolog) { + testvideourl: function (url,name,times) { if(!url){return 0} if(!name){name = "解析"} if(!times){times = 120} @@ -1112,10 +1012,9 @@ var SrcParseS = { return 1; }else if (/\.m3u8/.test(url)) { var urlcode = JSON.parse(request(url,{withStatusCode:true,timeout:1500})); - fba.log(urlcode); //log(name+'url访问状态码:'+urlcode.statusCode) if(urlcode.statusCode==-1){ - if(!nolog){log(name+'>m3u8探测超时未拦载,结果未知');} + log(name+'>m3u8探测超时未拦载,结果未知'); return 1; }else if(urlcode.statusCode!=200){ //log(name+'>m3u8播放地址疑似失效或网络无法访问,不信去验证一下>'+url); @@ -1125,11 +1024,11 @@ var SrcParseS = { var tstime = urlcode.body.match(/#EXT-X-TARGETDURATION:(.*?)\n/)[1]; var urltss = urlcode.body.replace(/#.*?\n/g,'').replace('#EXT-X-ENDLIST','').split('\n'); }catch(e){ - if(!nolog){log(name+'>√错误:探测异常未拦截>'+e.message);} + log(name+'>√错误:探测异常未拦截>'+e.message); return 1; } if(parseInt(tstime)*parseInt(urltss.length) < times){ - if(!nolog){log(name+'>m3u8视频长度小于设置的'+times+'s,疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);} + log(name+'>m3u8视频长度小于设置的'+times+'s,疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url); return 0; }else{ var urlts = urltss[0]; @@ -1140,10 +1039,10 @@ var SrcParseS = { var tscode = JSON.parse(request(urlts,{headers:{'Referer':url},onlyHeaders:true,timeout:1500})); //log(name+'ts访问状态码:'+tscode.statusCode) if(tscode.statusCode==-1){ - if(!nolog){log(name+'>ts段探测超时未拦载,结果未知');} + log(name+'>ts段探测超时未拦载,结果未知'); return 1; }else if(tscode.statusCode!=200){ - if(!nolog){log(name+'>ts段地址疑似失效或网络无法访问,不信去验证一下>'+url);} + log(name+'>ts段地址疑似失效或网络无法访问,不信去验证一下>'+url); return 0; } } @@ -1151,22 +1050,22 @@ var SrcParseS = { }else if (/\.mp4/.test(url)) { var urlheader = JSON.parse(request(url,{onlyHeaders:true,timeout:1500})); if(urlheader.statusCode==-1){ - if(!nolog){log(name+'>mp4探测超时未拦载,结果未知');} + log(name+'>mp4探测超时未拦载,结果未知'); return 1; }else if(urlheader.statusCode!=200){ - if(!nolog){log(name+'>mp4播放地址疑似失效或网络无法访问,不信去验证一下>'+url);} + log(name+'>mp4播放地址疑似失效或网络无法访问,不信去验证一下>'+url); return 0; }else{ var filelength = urlheader.headers['content-length']; if(parseInt(filelength[0])/1024/1024 < 30){ - if(!nolog){log(name+'>mp4播放地址疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url);} + log(name+'>mp4播放地址疑似跳舞小姐姐或防盗小视频,不信去验证一下>'+url); return 0; } } } return 1; } catch(e) { - if(!nolog){log(name+'>错误:探测异常未拦截,可能是失败的>'+e.message);} + log(name+'>错误:探测异常未拦截,可能是失败的>'+e.message); return 1; } }