|
|
|
let 取随机列表 = function (arr, num) {
|
|
|
|
let sData = arr.slice(0), i = arr.length, min = i - num, item, index;
|
|
|
|
while (i-- > min) {
|
|
|
|
index = Math.floor((i + 1) * Math.random());
|
|
|
|
item = sData[index];
|
|
|
|
sData[index] = sData[i];
|
|
|
|
sData[i] = item;
|
|
|
|
}
|
|
|
|
return sData.slice(min);
|
|
|
|
};
|
|
|
|
function 取随机用户名(num) {
|
|
|
|
num = num || 6;
|
|
|
|
let arr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
|
|
|
|
return 取随机列表(arr, num).join("");
|
|
|
|
}
|
|
|
|
function 取随机QQ号(num) {
|
|
|
|
num = num || 6;
|
|
|
|
let arr = "0123456789".split("");
|
|
|
|
return 取随机列表(arr, num).join("");
|
|
|
|
}
|
|
|
|
|
|
|
|
let 注册账号 = {
|
|
|
|
A: function(regurl,regdata,jsonurl){
|
|
|
|
try{
|
|
|
|
let reg = request(regurl,
|
|
|
|
{headers: {'Referer': regurl },
|
|
|
|
body: regdata,
|
|
|
|
method: 'POST',
|
|
|
|
redirect:false,
|
|
|
|
withHeaders:true,
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
let regjg = JSON.parse(reg).headers.location || "";
|
|
|
|
if(/success/.test(regjg)){
|
|
|
|
let www = regurl.split('/');
|
|
|
|
let home = www[0]+'//'+www[2];
|
|
|
|
let loginurl = home+"/user/login";
|
|
|
|
let login = request(home+'/user/login/checkUser',
|
|
|
|
{headers: {'Referer': loginurl, 'Cookie': getCookie(loginurl)},
|
|
|
|
body: "username="+username+"&password="+username,
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
if(JSON.parse(login).status == 200){
|
|
|
|
let html = request(home+"/user/information", {headers: {'Referer': loginurl, 'Cookie': getCookie(loginurl)}});
|
|
|
|
let uid = html.split('<input type="number" class="form-control" value="')[1].split('"')[0];
|
|
|
|
let key = html.split('<input type="text" class="form-control" value="')[2].split('"')[0];
|
|
|
|
if(uid&&key){
|
|
|
|
return jsonurl.replace('@uid',uid).replace('@key',key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
log(regurl+'>注册失败>'+e.message);
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
},
|
|
|
|
B: function(regurl,regdata,jsonurl){
|
|
|
|
try{
|
|
|
|
let reg = request(regurl,
|
|
|
|
{headers: {'Referer': regurl },
|
|
|
|
body: regdata,
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
let regjg = JSON.parse(reg).status;
|
|
|
|
if(regjg==202){
|
|
|
|
let login = request(regurl,
|
|
|
|
{headers: {'Cookie': getCookie(regurl)},
|
|
|
|
body: regdata,
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
let www = regurl.split('/');
|
|
|
|
let home = www[0]+'//'+www[2];
|
|
|
|
if(JSON.parse(login).status == 200){
|
|
|
|
let html = request(home+"/user/information", {headers: {'Referer': regurl, 'Cookie': getCookie(regurl)}});
|
|
|
|
let uid = html.split('<input type="number" class="form-control" value="')[1].split('"')[0];
|
|
|
|
let key = html.split('<input type="text" class="form-control" value="')[2].split('"')[0];
|
|
|
|
if(uid&&key){
|
|
|
|
return jsonurl.replace('@uid',uid).replace('@key',key);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
log(regurl+'>注册失败>'+e.message);
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
},
|
|
|
|
C: function(regurl,regdata){
|
|
|
|
try{
|
|
|
|
fetch(regurl);
|
|
|
|
let headers = {
|
|
|
|
'Cookie': getCookie(regurl)
|
|
|
|
}
|
|
|
|
let reg = request(regurl,
|
|
|
|
{headers: headers,
|
|
|
|
body: regdata,
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
let regjg = JSON.parse(reg);
|
|
|
|
if(regjg.code==1){
|
|
|
|
let www = regurl.split('/');
|
|
|
|
let home = www[0]+'//'+www[2];
|
|
|
|
let login = request(home+"/adminapi/login/account",{
|
|
|
|
headers: headers,
|
|
|
|
body: {"account":regdata.account,"password":regdata.password,"terminal":1},
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
headers.token = JSON.parse(login).data.token;
|
|
|
|
request(home+"/adminapi/user/upkey",{
|
|
|
|
headers: headers,
|
|
|
|
body: {},
|
|
|
|
method: 'POST',
|
|
|
|
timeout: 3000
|
|
|
|
});
|
|
|
|
let getkey = JSON.parse(request(home+"/adminapi/user/getkey", {headers: headers})).data;
|
|
|
|
if(getkey.key){
|
|
|
|
return getkey.json;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
log(regurl+'>注册失败>'+e.message);
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
},
|
|
|
|
D: function(regurl,regdata){
|
|
|
|
try{
|
|
|
|
fetch(regurl);
|
|
|
|
let headers = {
|
|
|
|
'Cookie': getCookie(regurl)
|
|
|
|
}
|
|
|
|
let reg = request(regurl+"check/?"+regdata, {headers: headers, timeout: 3000});
|
|
|
|
let regjg = JSON.parse(reg);
|
|
|
|
if(regjg.ret==1){
|
|
|
|
let www = regurl.split('/');
|
|
|
|
let home = www[0]+'//'+www[2];
|
|
|
|
let html = request(home+"/user?act=%E6%B3%A8%E5%86%8C%E6%88%90%E5%8A%9F%EF%BC%8C%E6%AC%A2%E8%BF%8E%E5%9B%9E%E6%9D%A5",{headers: headers, timeout: 3000});
|
|
|
|
let key = pdfh(html,"body&&.card-inner&&input&&value");
|
|
|
|
if(key){
|
|
|
|
return key;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
log(regurl+'>注册失败>'+e.message);
|
|
|
|
}
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let username = 取随机用户名(10);
|
|
|
|
let qq = 取随机QQ号(10);
|
|
|
|
let 获取解析 = {
|
|
|
|
nx: function() {//诺讯
|
|
|
|
let regurl = "https://vip.nxflv.com/user/login/reg";
|
|
|
|
let regdata = "username="+username+"&qq="+qq+"&password="+username;
|
|
|
|
let jsonurl = "https://json.nxflv.com/?uid=@uid&key=@key&url=";
|
|
|
|
let result = 注册账号.A(regurl,regdata,jsonurl);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
m8: function() {//M3U8
|
|
|
|
let regurl = "https://api.m3u8.tv:5678/user/login/reg";
|
|
|
|
let regdata = "username="+username+"&qq="+qq+"&password="+username;
|
|
|
|
let jsonurl = "https://api.m3u8.tv:5678/home/api?type=ys&uid=@uid&key=@key&url=";
|
|
|
|
let result = 注册账号.A(regurl,regdata,jsonurl);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
fh: function() {//峰火
|
|
|
|
let regurl = "https://jx.fhyy-iptv.top/user/login/reg";
|
|
|
|
let regdata = "username="+username+"&qq="+qq+"&password="+username;
|
|
|
|
let jsonurl = "https://jx.fhyy-iptv.top/home/api?type=ys&uid=@uid&key=@key&url=";
|
|
|
|
let result = 注册账号.A(regurl,regdata,jsonurl);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
rr: function() {//人人
|
|
|
|
let regurl = "http://api.rryy.tv/user/login/reg";
|
|
|
|
let regdata = "username="+username+"&qq="+qq+"&password="+username;
|
|
|
|
let jsonurl = "http://api.rryy.tv/home/api?type=ys&uid=@uid&key=@key&url=";
|
|
|
|
let result = 注册账号.A(regurl,regdata,jsonurl);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
xz: function() {//鑫总
|
|
|
|
let regurl = "https://jiexi.xn--654a.cc/user/login/checkUser";
|
|
|
|
let regdata = "username="+username+"%40163.com&password="+username;
|
|
|
|
let jsonurl = "https://jiexi.xn--654a.cc/home/api?type=ys&uid=@uid&key=@key&url=";
|
|
|
|
let result = 注册账号.B(regurl,regdata,jsonurl);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
ak: function() {//爱酷
|
|
|
|
let regurl = "https://api.json.icu/adminapi/login/register";
|
|
|
|
let regdata = {"account":username,"password":username,"arrge":true,"code":"","mail":username+"@163.com","txcode":"","disable":false,"bname":"获取验证码","ca":"/adminapi/login/captcha?id=","loading":false,"passwords":username,"terminal":1};
|
|
|
|
let result = 注册账号.C(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
xmm: function() {//小猫咪https://api.xiaomaomi.tv/console/login
|
|
|
|
let regurl = "https://api.xiaomaomi.tv/adminapi/login/register";
|
|
|
|
let regdata = {"account":username,"password":username,"arrge":true,"code":"","mail":username+"@163.com","txcode":"","disable":false,"bname":"获取验证码","ca":"/adminapi/login/captcha?id=","loading":false,"passwords":username,"terminal":1};
|
|
|
|
let result = 注册账号.C(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
znjson: function() {//ZNJSON工具箱https://svip.znjson.com/console/login
|
|
|
|
let regurl = "https://svip.znjson.com/adminapi/login/register";
|
|
|
|
let regdata = {"account":username,"password":username,"arrge":true,"code":"","mail":username+"@163.com","txcode":"","disable":false,"bname":"获取验证码","ca":"/adminapi/login/captcha?id=","loading":false,"passwords":username,"terminal":1};
|
|
|
|
let result = 注册账号.C(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
mx: function() {//芒迅
|
|
|
|
let regurl = "https://jj.jx168.top/user/register/";
|
|
|
|
let regdata = "method=register&code=&email="+username+"%40126.com&username="+username+"&password="+username+"&repass="+username+"&jxname="+username;
|
|
|
|
let result = 注册账号.D(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
"255": function() {//255
|
|
|
|
let regurl = "http://jx.255jx.tk/user/register/";
|
|
|
|
let regdata = "method=register&code=&email="+username+"%40126.com&username="+username+"&password="+username+"&repass="+username+"&jxname="+username;
|
|
|
|
let result = 注册账号.D(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
tg: function() {//涛哥
|
|
|
|
let regurl = "http://121.4.51.101:86/user/register/";
|
|
|
|
let regdata = "method=register&code=&email="+username+"%40126.com&username="+username+"&password="+username+"&repass="+username+"&jxname="+username;
|
|
|
|
let result = 注册账号.D(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
cly: function() {//初恋云
|
|
|
|
let regurl = "https://sf.huijuku.cn:8686/user/register/";
|
|
|
|
let regdata = "method=register&code=&email="+username+"%40126.com&username="+username+"&password="+username+"&repass="+username+"&jxname="+username;
|
|
|
|
let result = 注册账号.D(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
},
|
|
|
|
zy: function() {//自用解析
|
|
|
|
let regurl = "http://bfqzy.top/user/register/";
|
|
|
|
let regdata = "method=register&code=&email="+username+"%40126.com&username="+username+"&password="+username+"&repass="+username+"&jxname="+username;
|
|
|
|
let result = 注册账号.D(regurl,regdata);
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function bpParse(vipUrl,parsename) {
|
|
|
|
try{
|
|
|
|
if(!/聚影|帅助手/.test(MY_RULE.title)&&config.parse!="聚影"){
|
|
|
|
log('非法白嫖');
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
let parsefile = readFile('hiker://files/rules/Src/bpParse.json');
|
|
|
|
if(parsefile){
|
|
|
|
var parsejson = JSON.parse(aesDecode('Juying', parsefile));
|
|
|
|
}else{
|
|
|
|
var parsejson = {};
|
|
|
|
}
|
|
|
|
function getparse(parse){
|
|
|
|
parse = 获取解析[parsename]();
|
|
|
|
if(parse){
|
|
|
|
log('获得到新的白嫖解析!');
|
|
|
|
parsejson[parsename] = parse;
|
|
|
|
saveFile('hiker://files/rules/Src/bpParse.json', aesEncode('Juying', JSON.stringify(parsejson)));
|
|
|
|
}
|
|
|
|
return parse;
|
|
|
|
}
|
|
|
|
let parse = parsejson[parsename]?parsejson[parsename]:"";
|
|
|
|
parse = parse?parse:getparse(parse);
|
|
|
|
if(parse){
|
|
|
|
let json = JSON.parse(request(parse + vipUrl, {timeout: 10000 }));
|
|
|
|
if(json.code==300 || json.code==-1){
|
|
|
|
parse = getparse(parse);
|
|
|
|
json = JSON.parse(request(parse + vipUrl, {timeout: 10000 }));
|
|
|
|
}
|
|
|
|
return json.url || "";
|
|
|
|
}else{
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}catch(e){
|
|
|
|
log(e.message);
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
}
|