diff --git a/controllers/cms.py b/controllers/cms.py index 7ff72e128f0f4d67b8b5e83597755945a7449ffb..4cb5b2ce1383d8f5576e9c347f0ed9e80084aa87 100644 --- a/controllers/cms.py +++ b/controllers/cms.py @@ -3,6 +3,7 @@ # File : cms.py # Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------ # Date : 2022/8/25 +import json import requests import re @@ -301,6 +302,25 @@ class CMS: else: return '' + def checkHtml(self,r): + r.encoding = self.encoding + html = r.text + if html.find('?btwaf=') > -1: + btwaf = re.search('btwaf(.*?)"',html,re.M|re.I).groups()[0] + url = r.url.split('#')[0]+'?btwaf'+btwaf + # print(f'需要过宝塔验证:{url}') + cookies_dict = requests.utils.dict_from_cookiejar(r.cookies) + cookie_str = ';'.join([f'{k}={cookies_dict[k]}' for k in cookies_dict]) + self.headers['cookie'] = cookie_str + r = requests.get(url, headers=self.headers, timeout=self.timeout) + r.encoding = self.encoding + html = r.text + if html.find('?btwaf=') < 0: + self.saveCookie(cookie_str) + + # print(html) + return html + def saveParse(self, play_url,real_url): if not self.db: msg = '未提供数据库连接' @@ -367,8 +387,7 @@ class CMS: else: new_classes = [] r = requests.get(self.homeUrl, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - html = r.text + html = self.checkHtml(r) # print(html) # print(self.headers) if self.class_parse and not has_cache: @@ -558,10 +577,9 @@ class CMS: items = [] try: r = requests.get(url, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - print(r.url) - # html = r.text - html = r.json() if is_json else r.text + html = self.checkHtml(r) + if is_json: + html = json.loads(html) # print(html) items = pdfa(html,p[0].replace('json:','',1)) except: @@ -657,10 +675,9 @@ class CMS: obj = {} vod_name = '' r = requests.get(url, headers=self.headers, timeout=self.timeout) - r.encoding = self.encoding - # html = r.text - html = r.json() if is_json else r.text - # print(html) + html = self.checkHtml(r) + if is_json: + html = json.loads(html) if p.get('title'): p1 = p['title'].split(';') vod_name = pdfh(html,p1[0]).replace('\n',' ') @@ -808,9 +825,9 @@ class CMS: videos = [] try: r = requests.get(url, headers=self.headers,timeout=self.timeout) - r.encoding = self.encoding - # html = r.text - html = r.json() if is_json else r.text + html = self.checkHtml(r) + if is_json: + html = json.loads(html) # print(html) if not is_json and html.find('输入验证码') > -1: cookie = verifyCode(url,self.headers,self.timeout,self.retry_count,self.ocr_api) diff --git "a/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" "b/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" index ecededc1cd326758a6850db610e0e4a7c64d3b58..73aede65e990ef3e00faa481aafc527de1088fad 100644 --- "a/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" +++ "b/js/\345\245\207\347\217\215\345\274\202\345\205\275.js" @@ -21,7 +21,8 @@ var rule = { lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', // 一级:'json:.data.list;.name;.imageUrl;.latestOrder;.albumId', - 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=request(input);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + // 一级:'js:let d=[];if(cateID==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(cateID==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=cateID+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', // 一级:'json:.data.list;.name;.imageUrl;.playUrl;.latestOrder', // 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"}, 二级:{is_json:1,"title":"data.name+data.subtitle;data.latestOrder","img":"data.imageUrl","desc":"data.categories;data.areas","content":"data.description","tabs":"data.name","lists":"data.playlinksdetail.#idv.default_url"}, diff --git a/libs/pre.js b/libs/pre.js index 1e8b19824d5c3094b87acdf7a7d2ce6b9924e0e3..f7aad6e7d4a5e96710371662101bd3db9c144882 100644 --- a/libs/pre.js +++ b/libs/pre.js @@ -161,4 +161,23 @@ function maoss(jxurl, ref, key) { } catch (e) { return ''; } +} + +function request(url,obj){ + if(typeof(fetch_params)!=='undefined'){ + obj = obj?Object.assign(fetch_params,obj):fetch_params; + }else{ + obj = obj||{} + } + // print(obj); + if(typeof(fetch)!==undefined){ + let html = fetch(url,obj); + if (/\?btwaf=/.test(html)) {//宝塔验证 + url=url.split('#')[0]+'?btwaf'+html.match(/btwaf(.*?)\"/)[1]; + log("宝塔验证跳转到:"+url); + html = fetch(url, obj); + } + return html + } + return '' } \ No newline at end of file diff --git a/models/rules.db b/models/rules.db index cdc11959bd264a4d48bf101268a7f1ea526dcdb9..8baf4fc801d9781903212783b1c35f751ce8ca68 100644 Binary files a/models/rules.db and b/models/rules.db differ diff --git "a/py/\347\210\261\345\245\207\350\211\272\344\270\200\347\272\247.js" "b/py/\347\210\261\345\245\207\350\211\272\344\270\200\347\272\247.js" index 159c94f2d68da9090a3a1620fb669afad1568f03..df20f905a55187beb2aa8f5539f395d3ee5fd82d 100644 --- "a/py/\347\210\261\345\245\207\350\211\272\344\270\200\347\272\247.js" +++ "b/py/\347\210\261\345\245\207\350\211\272\344\270\200\347\272\247.js" @@ -7,7 +7,8 @@ if(cateID==='16'){//网络电影 }else if(cateID==='5'){//音乐 input = input.replace("data_type=1", "data_type=2"); } -let html = fetch(input,fetch_params); +// let html = fetch(input,fetch_params); +let html = request(input); let json = JSON.parse(html); if (json.code === "A00003") { fetch_params.headers['user-agent'] = PC_UA;