forked from ljqailym/jd_scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dpqd3.js
103 lines (90 loc) · 7.2 KB
/
dpqd3.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
//
// ****************************************************************************
// 活动ID配置项目
const vas = [
"1000349325,10690424",//3天50豆1.3
"10022168,10677664",//50豆1.3
"611759,10682807",//7天50豆1.3
"10320079,10689382",//3天50豆1.3
"149656,10687352",//10豆1.3/20豆1.7/50豆1.15/100豆1.30
"1000347187,10685166",//5豆1.3/15豆1.7/50豆1.15
"1000090242,10688028",//70豆1.4/100豆1.6
"1000079865,10677302",//3天10豆1.4
"10009953,10688913",//100豆1.6
"1000118675,10682396",//7天50豆1.7
"10584039,10685228",//7天50豆1.7
"1000103103,10690224",//7天25豆1.8
"10503366,10685688",//20天100豆1.18
];
// ****************************************************************************
const $ = hammer("测试", 3);
let results = ["左滑 / 下拉 查看详细结果..."];
let options = {
url: "",
headers: {
Cookie: $.read('CookieJD'),
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1",
"referer": "https://h5.m.jd.com/",
}
};
function checkCookie(){
return new Promise(resolve => {
if(!options.headers.Cookie){
$.alert("Cookie不存在,中止运行.");
return resolve(false);
}
options.url = "https://plogin.m.jd.com/cgi-bin/ml/islogin";
$.request("GET", options, (err, resp, data) => {
if(err){
$.log(err);
$.alert("Cookie检测异常,查看日志");
return resolve(false);
}
resp = JSON.parse(resp);
if(resp.islogin == 1){
return resolve(true);
}
$.log(resp);
$.alert("Cookie已失效");
return resolve(false);
})
})
}
// ****************************************************************************
function buildOptions(va){
return new Promise(resolve => {
const nowTs = Date.now();
const [v, a] = va.split(",", 2);
options.url = `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${nowTs}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body=%7B%22token%22%3A%2293F80D2F93AD3591911610FE675280E%22%2C%22venderId%22%3A${v}%2C%22activityId%22%3A${a}%2C%22type%22%3A56%2C%22actionType%22%3A7%7D`;
$.request("GET", options, (err, resp, data) => {
if(err){
$.log(`<${va}>签到异常`, err);
results.push(`${va} ×`);
return resolve();
}
resp = JSON.parse(resp);
if(!resp.success){
$.log(resp);
results.push(`${va} ×\n(${resp.msg})`);
return resolve();
}
results.push(`${va} √`);
setTimeout(()=>{
return resolve();
}, 1234)
})
})
}
async function dailySign(){
if (!await checkCookie()) {
return $.done();
}
$.log("JDCookie校验完成,开始签到");
for (const va of vas) {
await buildOptions(va);
}
$.alert(results.join("\n"), "签到结束");
$.done();
}
$.isRequest ? $.done() : dailySign();
function hammer(t="untitled",l=3){return new class{constructor(t,l){this.name=t,this.logLevel=l,this.isRequest=("object"==typeof $request)&&$request.method!="OPTIONS",this.isSurge="undefined"!=typeof $httpClient,this.isQuanX="undefined"!=typeof $task,this.isNode="function"==typeof require,this.node=(()=>{if(!this.isNode){return null}const file="localstorage.yml";let f,y,r;try{f=require('fs');y=require('js-yaml');r=require('request');f.appendFile(file,"",function(err){if(err)throw err;})}catch(e){console.log("install unrequired module by: yarn add module_name");console.log(e.message);return{}}return{file:file,fs:f,yaml:y,request:r,}})()}log(...n){if(l<2){return null}console.log(`\n***********${this.name}***********`);for(let i in n)console.log(n[i])}alert(body="",subtitle="",options={}){if(l==2||l==0){return null}if(typeof options=="string"){options={"open-url":options}}let link=null;if(Object.keys(options).length){link=this.isQuanX?options:{openUrl:options["open-url"],mediaUrl:options["media-url"]}}if(this.isSurge)return $notification.post(this.name,subtitle,body,link);if(this.isQuanX)return $notify(this.name,subtitle,body,link);console.log(`系统通知📣\ntitle:${this.name}\nsubtitle:${subtitle}\nbody:${body}\nlink:${link}`)}request(method,params,callback){let options={};if(typeof params=="string"){options.url=params}else{options.url=params.url;if(typeof params=="object"){params.headers&&(options.headers=params.headers);params.body&&(options.body=params.body)}}method=method.toUpperCase();const writeRequestErrorLog=function(n,m,u){return err=>console.log(`${n}request error:\n${m} ${u}\n${err}`)}(this.name,method,options.url);if(this.isSurge){const _runner=method=="GET"?$httpClient.get:$httpClient.post;return _runner(options,(error,response,body)=>{if(error==null||error==""){response.body=body;callback("",body,response)}else{writeRequestErrorLog(error);callback(error,"",response)}})}options.method=method;if(this.isQuanX){$task.fetch(options).then(response=>{response.status=response.statusCode;delete response.statusCode;callback("",response.body,response)},reason=>{writeRequestErrorLog(reason.error);response.status=response.statusCode;delete response.statusCode;callback(reason.error,"",response)})}if(this.isNode){if(options.method=="POST"&&options.body){try{options.body=JSON.parse(options.body);options.json=true}catch(e){console.log(e.message)}}this.node.request(options,(error,response,body)=>{if(typeof body=="object"){body=JSON.stringify(body)}if(typeof response=='object'&&response){response.status=response.statusCode;delete response.statusCode}callback(error,body,response)})}}read(key){if(this.isSurge)return $persistentStore.read(key);if(this.isQuanX)return $prefs.valueForKey(key);if(this.isNode){let val="";try{const fileContents=this.node.fs.readFileSync(this.node.file,"utf8");const data=this.node.yaml.safeLoad(fileContents);val=(typeof(data)=="object"&&data[key])?data[key]:""}catch(e){console.log(`读取文件时错误:\n${e.message}`);return""}return val}}write(val,key){if(this.isSurge)return $persistentStore.write(val,key);if(this.isQuanX)return $prefs.setValueForKey(val,key);if(this.isNode){try{const fileContents=this.node.fs.readFileSync(this.node.file,"utf8");let data=this.node.yaml.safeLoad(fileContents);data=typeof data=="object"?data:{};data[key]=val;val=this.node.yaml.safeDump(data);this.node.fs.writeFileSync(this.node.file,val,'utf8')}catch(e){console.log(e.message);return false}return true}}delete(key){if(this.isNode){try{const fileContents=this.node.fs.readFileSync(this.node.file,"utf8");let data=this.node.yaml.safeLoad(fileContents);data=typeof data=="object"?data:{};if(!data.hasOwnProperty(key)){return true}delete data[key];const val=this.node.yaml.safeDump(data);this.node.fs.writeFileSync(this.node.file,val,'utf8')}catch(e){console.log(e.message);return false}return true}}done(value={}){if(this.isQuanX)return this.isRequest?$done(value):null;if(this.isSurge)return this.isRequest?$done(value):$done()}pad(s=false,c="*",l=15){return s?this.log(c.padEnd(l,c)):`\n${c.padEnd(l,c)}\n`}}(t,l)}