提交 37ce0a32 编写于 作者: H hjdhnx

尝试增加全局自动过宝塔验证

上级 77c526af
......@@ -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)
......
......@@ -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"},
......
......@@ -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
无法预览此类型文件
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册