diff --git a/app.py b/app.py index d2e902215330d16bb2ddf0cbc163a5293062e547..764eace030283150c7a6c2bf97f7a63cf4806ddc 100644 --- a/app.py +++ b/app.py @@ -216,6 +216,7 @@ def vod(): return jsonify(error.failed('爬虫规则加载失败')) # rule = ctx.eval('rule') + # print(type(ctx.rule.lazy()),ctx.rule.lazy().toString()) ruleDict = ctx.rule.to_dict() ruleDict['id'] = rule # 把路由请求的id装到字典里,后面播放嗅探才能用 # print(ruleDict) diff --git a/classes/cms.py b/classes/cms.py index 39816f5b258a06e31fbd7b149be950917a18a285..ae290b1053348c2f888e7db38f358e318703490e 100644 --- a/classes/cms.py +++ b/classes/cms.py @@ -14,7 +14,7 @@ from utils.log import logger from utils.encode import base64Encode,baseDecode,fetch,post,request,getCryptoJS,getPreJs,buildUrl,getHome from utils.encode import verifyCode from utils.safePython import safePython -from utils.parser import runPy,runJScode +from utils.parser import runPy,runJScode,JsObjectWrapper from utils.htmlParser import jsoup from urllib.parse import urljoin from concurrent.futures import ThreadPoolExecutor # 引入线程池 @@ -731,10 +731,13 @@ class CMS: if not jxs: jxs = [] if self.lazy: - print(f'{play_url}->开始执行免嗅代码->{self.lazy}') + print(f'{play_url}->开始执行免嗅代码{type(self.lazy)}->{self.lazy}') t1 = time() try: - if not str(self.lazy).startswith('js:'): + if type(self.lazy) == JsObjectWrapper: + logger.info(f'lazy非纯文本免嗅失败耗时:{get_interval(t1)}毫秒,播放地址:{play_url}') + + elif not str(self.lazy).startswith('js:'): pycode = runPy(self.lazy) if pycode: # print(pycode) @@ -750,16 +753,19 @@ class CMS: jscode = str(self.lazy).split('js:')[1] # jscode = f'var input={play_url};{jscode}' # print(jscode) + headers['Referer'] = getHome(play_url) py_ctx.update({ 'input': play_url, + 'fetch_params':{'headers':headers,'timeout':self.d.timeout,'encoding':self.d.encoding}, 'd': self.d, 'jxs':jxs, + 'getParse':self.d.getParse, + 'saveParse':self.d.saveParse, 'pdfh': self.d.jsp.pdfh, 'pdfa': self.d.jsp.pdfa, 'pd': self.d.jsp.pd, }) ctx = py_ctx # print(ctx) - t1 = time() jscode = getPreJs() + jscode # print(jscode) loader,_ = runJScode(jscode,ctx=ctx) @@ -782,6 +788,8 @@ if __name__ == '__main__': js_path = f'js/vip影院.js' ctx, js_code = parser.runJs(js_path,before=before) ruleDict = ctx.rule.to_dict() + # lazy = ctx.eval('lazy') + # print(lazy) # ruleDict['id'] = rule # 把路由请求的id装到字典里,后面播放嗅探才能用 cms = CMS(ruleDict) diff --git "a/js/\345\271\262\351\245\255\345\275\261\350\247\206.js" "b/js/\345\271\262\351\245\255\345\275\261\350\247\206.js" index 00a855716fd603d851d8f262cbc6d7b044e796ce..9d102b1bfa8b108fc338ad08112a440c2ac17e19 100644 --- "a/js/\345\271\262\351\245\255\345\275\261\350\247\206.js" +++ "b/js/\345\271\262\351\245\255\345\275\261\350\247\206.js" @@ -17,7 +17,8 @@ var rule = { // lazy:'干饭', // lazy:'@js:cacheUrl = d.getParse(input);print(cacheUrl);input=cacheUrl', // lazy:'js:cacheUrl = d.getParse(input);print(cacheUrl);input=cacheUrl', - lazy:'js:cacheUrl=d.getParse(input);if(cacheUrl){input=cacheUrl}else{try{let html=fetch(input,{headers:d.headers,timeout:d.timeout,encoding:d.encoding});let ret=html.match(/var player_(.*?)=(.*?)10){real_url="https://player.buyaotou.xyz/?url="+url;d.saveParse(input,real_url);input=real_url}}catch(e){print("网络请求发生错误:"+e.message)}}', + // lazy:'js:cacheUrl=d.getParse(input);if(cacheUrl){input=cacheUrl}else{try{let html=fetch(input,{headers:d.headers,timeout:d.timeout,encoding:d.encoding});let ret=html.match(/var player_(.*?)=(.*?)10){real_url="https://player.buyaotou.xyz/?url="+url;d.saveParse(input,real_url);input=real_url}}catch(e){print("网络请求发生错误:"+e.message)}}', + lazy:'js:cacheUrl=getParse(input);if(cacheUrl){input=cacheUrl}else{try{let html=fetch(input,fetch_params);let ret=html.match(/var player_(.*?)=(.*?)10){real_url="https://player.buyaotou.xyz/?url="+url;saveParse(input,real_url);input=real_url}}catch(e){print("网络请求发生错误:"+e.message)}}', limit:5, 推荐:'ul.stui-vodlist.clearfix;li;a&&title;.lazyload&&data-original;;a&&href', double:true, // 推荐内容是否双层定位 diff --git "a/js/\350\223\235\350\216\223\345\275\261\350\247\206.js" "b/js/\350\223\235\350\216\223\345\275\261\350\247\206.js" index 6e4793acb046d1f226b32ae35cb3a7a6229b7b23..8a18c056c17f12e9fd985674fa6d0628218787d1 100644 --- "a/js/\350\223\235\350\216\223\345\275\261\350\247\206.js" +++ "b/js/\350\223\235\350\216\223\345\275\261\350\247\206.js" @@ -6,5 +6,10 @@ searchUrl:'/search/**-fypage.html', searchable:1, quickSearch:1, class_parse:'.navbar-items li:gt(1):lt(8);a&&Text;a&&href;/(\\d+).html', -lazy:'js:var MY_HOME="http://lanmeiguojiang.com:5244/d/%E8%93%9D%E8%8E%93%E4%BA%91%E7%9B%98";let headers=d.headers;headers["Referer"]=input;let fetch_params={headers:headers,timeout:d.timeout,encoding:d.encoding};let html=fetch(input,fetch_params);var player=JSON.parse(html.match(/r player_.*?=(.*?) 10){ real_url = 'https://player.buyaotou.xyz/?url='+url; // log('免嗅地址:'+real_url); - d.saveParse(input,real_url); + // d.saveParse(input,real_url); + saveParse(input,real_url); input = real_url; } }catch (e) { diff --git "a/py/\350\223\235\350\216\223.js" "b/py/\350\223\235\350\216\223.js" index a744f7ec4b5e2ad20326175b7780cbf81bb35925..41f935f232825419d3e117ca9e57e152b8533a97 100644 --- "a/py/\350\223\235\350\216\223.js" +++ "b/py/\350\223\235\350\216\223.js" @@ -1,8 +1,9 @@ js: var MY_HOME='http://lanmeiguojiang.com:5244/d/%E8%93%9D%E8%8E%93%E4%BA%91%E7%9B%98'; -let headers = d.headers; -headers['Referer'] = input; -let fetch_params = {headers:headers,timeout:d.timeout,encoding:d.encoding}; +// let headers = d.headers; +// headers['Referer'] = input; +// let fetch_params = {headers:headers,timeout:d.timeout,encoding:d.encoding}; +print(fetch_params); let html = fetch(input,fetch_params); var player = JSON.parse(html.match(/r player_.*?=(.*?)