├── Ariszy.boxjs.json
├── Ariszy.quanx_gallery.json
├── JD
├── zy_ccfxj.js
├── zy_ckcheck.js
├── zy_ddwj.js
├── zy_djyyj.js
├── zy_festival.js
├── zy_hxddsh.js
├── zy_jxcollect.js
├── zy_jxdzz.js
└── zy_sjjc.js
├── Loon
├── conf
│ └── u
└── plugin
│ ├── Ariszy.plugin
│ ├── Price.plugin
│ ├── READEME.md
│ ├── TF_Download.plugin
│ └── Youtube15.26.4.plugin
├── Quantumult X
├── QuantumultX_Zero.conf
├── Surge4_Zero.conf
├── quanx.conf
├── readme.md
└── wangyiyunjd.txt
├── README.md
├── Scripts
├── TT.js
├── cglm.js
├── dyjsb.js
├── fqxs.js
├── hhz.js
├── hotsoon.js
├── hotsoon_old.js
├── huoshan.js
├── jrtt.js
├── jxcollect.js
├── kkd.js
├── klcg.js
├── kxhy.js
├── pyq.js
├── qqMsgDel.js
├── ranlv.js
├── ryhy.js
├── xjaxc.js
├── xp.js
├── xpread.js
├── zcy.js
├── zy_618jc.js
├── zy_ccfxj.js
└── zy_xckh.js
├── Surge
├── Conf
│ └── conf.js
└── sgmodule
│ ├── BlockOTA.sgmodule
│ ├── Cookies.sgmodule
│ ├── Script.sgmodule
│ ├── TF_Download.sgmodule
│ ├── YouTubeAd.sgmodule
│ ├── YouTubeAds.sgmodule
│ ├── jd_unbind.sgmodule
│ └── price.sgmodule
├── TASK
├── DYJSB
│ ├── README.md
│ ├── dyjsb.PNG
│ ├── dyjsb.js
│ └── dyjsb_rewrite.conf
├── JRTT
│ ├── README.md
│ ├── jrtt.js
│ └── jrtt_rewrite.conf
└── RANLV
│ ├── README.md
│ ├── ranlv.js
│ └── ranlv_rewrite.conf
├── User
├── BaiduCloud.js
├── KuWoMusicDownload.js
├── TF_Download.js
├── YouTube.js
├── convenient.conf
└── wps.js
├── img
├── Ariszy.jpg
├── TT.png
├── ZhiYi-N.png
├── cglm.png
├── dyjsb-mini.png
├── dyjsb.png
├── elecv2p.png
├── fqxs.png
├── hotsoon .png
├── hotsoon-mini.png
├── hotsoon.png
├── hs-mini.png
├── hs.png
├── huoshan.png
├── jrtt-mini.png
├── jrtt.png
├── kkd-mini.png
├── kkd.png
├── klcg.png
├── kxhy.png
├── leisu.png
├── pyq.png
├── qq.png
├── rl-mini.png
├── rl.png
├── ryhy.png
├── thanks.JPG
├── xp-mini.png
├── xp.png
├── zcy-min.png
└── zcy.png
├── jd_backup
├── zy_618jc.js
├── zy_ccfxj.js
├── zy_ddsj.js
├── zy_kxcdz.js
├── zy_ldhwj.js
├── zy_qcshj.js
├── zy_qycl.js
├── zy_ryhxj.js
├── zy_xckh.js
└── zy_xyzzh.js
└── rewrite
├── memobdc.js
├── mubu.js
├── picsew.js
├── picsew2.js
└── xmind.js
/Ariszy.quanx_gallery.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Ariszy task gallery",
3 | "description": "后5个失效!",
4 | "task": [
5 | " 10 10 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zy_618jc.js, tag=618手机竞猜, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true",
6 | " 0 10 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zy_xckh.js, tag=新潮品牌狂欢, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true",
7 | " 0 23 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/qqMsgDel.js, tag=QQ批量删除空间留言,img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/qq.png, enabled=true",
8 | " 0 */3 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zy_ccfxj.js, tag=城城分现金互助, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true",
9 | " 20 10 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/xpread.js, tag=笑谱阅读, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/xp.png, enabled=true",
10 | " 10 10 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/chlm.js, tag=猜歌联萌, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/cglm.png, enabled=true",
11 | " 0 10 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/klcg.js, tag=快乐猜歌, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/klcg.png, enabled=true",
12 | " */30 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/kxhy.js, tag=开心花园, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/kxhy.png, enabled=true",
13 | " */30 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/ryhy.js, tag=如意花园, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/ryhy.png, enabled=true",
14 | " 0 9 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/fqxs.js, tag=番茄小说, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/fqxs.png, enabled=true",
15 | " 1,30 10-20 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/ranlv.js, tag=燃旅视频, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/rl.png, enabled=true",
16 | " 5,35 8-23 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jrtt.js, tag=今日头条极速版, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/jrtt.png, enabled=false",
17 | " */20 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/kkd.js, tag=快看点, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/kkd.png, enabled=true",
18 | " * */2 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js, tag=京喜收电力, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png, enabled=true ",
19 | " */6 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/hotsoon_old.js, tag=火山视频极速版, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/hotsoon%20.png, enabled=true",
20 | " */8 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/dyjsb.js, tag=抖音极速版, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/dyjsb.png, enabled=true",
21 | " */6 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/xp.js, tag=笑谱, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/xp.png, enabled=true",
22 | " * */1 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zcy.js, tag=走财运, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/zcy.png, enabled=true",
23 | " */30 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/pyq.js, tag=评友圈, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/pyq.png, enabled=true",
24 | " */10 * * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/huoshan.js, tag=抖音火山版, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/hs.png, enabled=true",
25 | " 0 8 * * * https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/TT.js, tag=TT语音签到, img-url=https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/TT.png, enabled=true",
26 | ]
27 | }
28 |
--------------------------------------------------------------------------------
/JD/zy_ckcheck.js:
--------------------------------------------------------------------------------
1 | const $ = new Env('Cookie检查')
2 | const notify = $.isNode() ?require('./sendNotify') : '';
3 | cookiesArr = []
4 | CodeArr = []
5 | cookie = ''
6 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : '';
7 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item);
8 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
9 | const invite=1;//新用户自动邀请,0关闭,1默认开启
10 | const logs =0;//0为关闭日志,1为开启
11 | var hour=''
12 | var minute=''
13 | if ($.isNode()) {
14 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
15 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
16 | }else{
17 | hour = (new Date()).getHours();
18 | minute = (new Date()).getMinutes();
19 | }
20 | //CK运行
21 | if ($.isNode()) {
22 | Object.keys(jdCookieNode).forEach((item) => {
23 | cookiesArr.push(jdCookieNode[item])
24 | })
25 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {};
26 | } else {
27 | cookiesArr = [
28 | $.getdata("CookieJD"),
29 | $.getdata("CookieJD2"),
30 | ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item);
31 | }
32 |
33 | !(async () => {
34 |
35 | for (let i =0; i < cookiesArr.length; i++) {
36 | cookie = cookiesArr[i];
37 | $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
38 | message = ''
39 | $.isLogin = true;
40 | $.index = i + 1;
41 |
42 | await check()
43 | }
44 |
45 | })()
46 | .catch((e) => $.logErr(e))
47 | .finally(() => $.done())
48 |
49 | async function check(){
50 | return new Promise((resolve) => {
51 | let check_url = {
52 | url: `https://me-api.jd.com/user_new/info/GetJDUserInfoUnion`,
53 | headers:{
54 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
55 | "Accept-Encoding": "gzip, deflate, br",
56 | "Accept-Language": "zh-cn",
57 | "Connection": "keep-alive",
58 | "Content-Type": "application/x-www-form-urlencoded",
59 | "Cookie": cookie,
60 | "Host": "me-api.jd.com",
61 | "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1"
62 | }
63 | }
64 | $.get(check_url,async(error, response, data) =>{
65 | try{
66 | const result = JSON.parse(data)
67 | if(logs)$.log(data)
68 | if(result.retcode == 0)
69 | $.log($.UserName+"\n\n"+cookie+"\n✅Cookie有效中\n")
70 | else
71 | $.log($.UserName+"\n\n"+cookie+"\n❌Cookie失效\n")
72 | }catch(e) {
73 | $.logErr(e, response);
74 | } finally {
75 | resolve();
76 | }
77 | })
78 | })
79 | }
80 | //showmsg
81 | //boxjs设置tz=1,在12点<=20和23点>=40时间段通知,其余时间打印日志
82 |
83 | async function showmsg() {
84 | if (tz == 1) {
85 | if ($.isNode()) {
86 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
87 | await notify.sendNotify($.name, message)
88 | } else {
89 | $.log(message)
90 | }
91 | } else {
92 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
93 | $.msg(zhiyi, '', message)
94 | } else {
95 | $.log(message)
96 | }
97 | }
98 | } else {
99 | $.log(message)
100 | }
101 | }
102 | function safeGet(data) {
103 | try {
104 | if (typeof JSON.parse(data) == "object") {
105 | return true;
106 | }
107 | } catch (e) {
108 | console.log(e);
109 | console.log(`京东服务器访问数据为空,请检查自身设备网络情况`);
110 | return false;
111 | }
112 | }
113 |
114 | function jsonParse(str) {
115 | if (typeof str == "string") {
116 | try {
117 | return JSON.parse(str);
118 | } catch (e) {
119 | console.log(e);
120 | $.msg($.name, "", "不要在BoxJS手动复制粘贴修改cookie");
121 | return [];
122 | }
123 | }
124 | }
125 | Array.prototype.distinct = function (){
126 | var arr = this,
127 | result = [],
128 | len = arr.length;
129 | arr.forEach(function(v, i ,arr){ //这里利用map,filter方法也可以实现
130 | var bool = arr.indexOf(v,i+1); //从传入参数的下一个索引值开始寻找是否存在重复
131 | if(bool === -1){
132 | result.push(v);
133 | }
134 | })
135 | return result;
136 | };
137 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
138 |
--------------------------------------------------------------------------------
/JD/zy_jxcollect.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy_Script
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 |
6 | 转载留个名字,谢谢
7 | #本脚本只为昨天自己京喜工厂不自动收取而出发,看群中好多朋友同样问题困扰,做成脚本,没有任何别的用意
8 | #ck共分为jxcollecturl
9 | 请进入京喜app找到京喜工厂进入收取一次电力提示获取成功
10 | ⚠️是京喜app⚠️是京喜app⚠️是京喜app
11 |
12 | 作者:执意Ariszy
13 |
14 | [mitm]
15 | hostname = m.jingxi.com
16 | #圈x
17 | [rewrite local]
18 | https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity? url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js
19 |
20 |
21 | #loon
22 | http-request https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity? script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js, requires-body=true, timeout=10, tag=京喜工厂电力收取
23 |
24 |
25 | #surge
26 | 京喜工厂电力收取 = type=http-request,pattern=https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity?,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js,script-update-interval=0
27 | */
28 | const $ = new Env('京喜工厂收取电力')
29 | const notify = $.isNode() ?require('./sendNotify') : '';
30 | let status;
31 | status = (status = ($.getval("jxcollectstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
32 | jxcollecturlArr = [],cookiesArr = []
33 | let jxcollecturl = $.getdata('jxcollecturl')
34 |
35 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item);
36 |
37 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
38 | const invite=1;//新用户自动邀请,0关闭,1默认开启
39 | const logs =0;//0为关闭日志,1为开启
40 | var hour=''
41 | var minute=''
42 | if ($.isNode()) {
43 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
44 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
45 | }else{
46 | hour = (new Date()).getHours();
47 | minute = (new Date()).getMinutes();
48 | }
49 | //CK运行
50 | let isGetCookie = typeof $request !== 'undefined'
51 | if (isGetCookie) {
52 | GetCookie();
53 | $.done()
54 | }
55 | if ($.isNode()) {
56 | if (process.env.JXCOLLECTURL && process.env.JXCOLLECTURL.indexOf('#') > -1) {
57 | jxcollecturl = process.env.JXCOLLECTURL.split('#');
58 | console.log(`您选择的是用"#"隔开\n`)
59 | }
60 | else if (process.env.JXCOLLECTURL && process.env.JXCOLLECTURL.indexOf('\n') > -1) {
61 | jxcollecturl = process.env.JXCOLLECTURL.split('\n');
62 | console.log(`您选择的是用换行隔开\n`)
63 | } else {
64 | jxcollecturl = process.env.JXCOLLECTURL.split()
65 | };
66 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
67 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
68 | } else {
69 | jxcollecturlArr.push($.getdata('jxcollecturl'))
70 | let jxcollectcount = ($.getval('jxcollectcount') || '1');
71 | for (let i = 2; i <= jxcollectcount; i++) {
72 | jxcollecturlArr.push($.getdata(`jxcollecturl${i}`))
73 | }
74 | }
75 | !(async () => {
76 | if (!jxcollecturlArr[0] && !jxcollectheaderArr[0]) {
77 | $.msg($.name, '【提示】请先获取京喜工厂电力收取一cookie')
78 | return;
79 | }
80 | console.log(`------------- 共${jxcollecturlArr.length}账号----------------\n`)
81 | for (let i = 0; i < jxcollecturlArr.length; i++) {
82 | if (jxcollecturlArr[i]) {
83 | message = ''
84 | jxcollecturl = jxcollecturlArr[i];
85 | cookie = cookiesArr[i];
86 | $.index = i + 1;
87 | console.log(`\n开始【京喜工厂电力收取${$.index}】`)
88 | await collect()
89 | await showmsg()
90 | }
91 | }
92 | })()
93 | .catch((e) => $.logErr(e))
94 | .finally(() => $.done())
95 |
96 |
97 | function GetCookie() {
98 | if($request&&$request.url.indexOf("CollectCurrentElectricity")>=0) {
99 | const jxcollecturl = $request.url.split('?')[1]
100 | if(jxcollecturl) $.setdata(jxcollecturl,`jxcollecturl${status}`)
101 | $.log(`[${$.jsname}] 获取jxcollecturl请求: 成功,jxcollecturl: ${jxcollecturl}`)
102 | $.msg(`jxcollecturl${status}: 成功🎉`, ``)
103 |
104 | const jxcollectheader = JSON.stringify($request.headers)
105 | if(jxcollectheader) $.setdata(jxcollectheader,`jxcollectheader${status}`)
106 | $.log(`[${$.jsname}] 获取jxcollectheader请求: 成功,jxcollectheader: ${jxcollectheader}`)
107 | $.msg(`jxcollectheader${status}: 成功🎉`, ``)
108 | }
109 | }
110 | async function collect(){
111 | let url = jxcollecturl.replace(/doubleflag=\d/,'doubleflag=1')
112 | $.uri = $.getval("jxcollectdoublenum") == 1 ? url : jxcollecturl
113 |
114 | let name = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
115 | return new Promise((resolve) => {
116 | let collect_url = {
117 | url: `https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity?`+$.uri,
118 | headers: {
119 | "Accept": "*/*",
120 | "Accept-Encoding": "gzip, deflate, br",
121 | "Accept-Language": "zh-cn",
122 | "Connection": "keep-alive",
123 | "Cookie": `${cookie}`,
124 | "Host": "wq.jd.com",
125 | "Referer": "https://wqsd.jd.com/pingou/dream_factory/index.html",
126 | "User-Agent": "jdapp;iPhone;9.4.6;14.4;0bcbcdb2a68f16cf9c9ad7c9b944fd141646a849;network/4g;ADID/BF650B20-A81A-4172-98EE-064834D97D6E;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone12,1;addressid/2377723269;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"}
127 | }
128 | $.get(collect_url,async(error, response, data) =>{
129 | try{
130 | //const result = JSON.parse(data)
131 | if(logs)$.log(data)
132 | let number = data.match(/CollectElectricity":\d+/)+''
133 | let num = number.replace(/CollectElectricity":/,'')
134 | console.log(`账号:`+name+"\n🎈本次收取电力"+num+'\n')
135 | message = `账号:`+name+"\n🎈本次收取电力"+num
136 | }catch(e) {
137 | $.logErr(e, response);
138 | } finally {
139 | resolve();
140 | }
141 | })
142 | })
143 | }
144 |
145 | //showmsg
146 | //boxjs设置tz=1,在12点<=20和23点>=40时间段通知,其余时间打印日志
147 |
148 | async function showmsg() {
149 | if (tz == 1) {
150 | if ($.isNode()) {
151 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
152 | await notify.sendNotify($.name, message)
153 | } else {
154 | $.log(message)
155 | }
156 | } else {
157 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
158 | $.msg(zhiyi, '', message)
159 | } else {
160 | $.log(message)
161 | }
162 | }
163 | } else {
164 | $.log(message)
165 | }
166 | }
167 | function jsonParse(str) {
168 | if (typeof str == "string") {
169 | try {
170 | return JSON.parse(str);
171 | } catch (e) {
172 | console.log(e);
173 | $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie')
174 | return [];
175 | }
176 | }
177 | }
178 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
179 |
--------------------------------------------------------------------------------
/Loon/conf/u:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Loon/plugin/Ariszy.plugin:
--------------------------------------------------------------------------------
1 | #!icon= https://raw.githubusercontent.com/Ariszy/Private-Script/master/img/Ariszy.jpg
2 | [URL Rewrite]
3 | ctier=[A-Z] citer=A 302
4 | [Script]
5 | #执意
6 | #野比
7 | http-response https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js, requires-body=true, timeout=10, tag=百度网盘倍速
8 | http-request https?:\/\/musicpay\.kuwo.cn\/music\.pay\?uid=\d+ script-path= https://raw.githubusercontent.com/Ariszy/Private-Script/master/User/KuWoMusicDownload.js,requires-body=true, timeout=10, tag=酷我音乐下载
9 | http-response ^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js,requires-body=true, timeout=10, tag=酷我音乐vip
10 | http-response ^https?:\/\/account\.wps\.cn\/api\/users requires-body=1,max-size=-1,script-path= https://raw.githubusercontent.com/Ariszy/Private-Script/master/User/wps.js,requires-body=true, timeout=10, tag=WPS
11 | #yichahucha
12 | http-response ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js, tag=微博去广告
13 | http-response ^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/photos/pic_recommend_status|video/tiny_stream_video_list|photo/info) requires-body=1,max-size=-1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js, tag=微博去广告
14 |
15 | [Rule]
16 | #屏蔽证书
17 | DOMAIN,ocsp.apple.com,REJECT
18 | #屏蔽系统更新
19 | DOMAIN,gdmf.apple.com,REJECT
20 | DOMAIN,gdmf.apple.com.akadns.net,REJECT
21 | DOMAIN,mesu.apple.com,REJECT
22 | DOMAIN,mesu-cdn.apple.com.akadns.net,REJECT
23 | DOMAIN,mesu-cdn.origin-apple.com.akadns.net,REJECT
24 | DOMAIN,mesu.g.aaplimg.com,REJECT
25 | DOMAIN,appldnld.apple.com,REJECT
26 | DOMAIN,appldnld.apple.com.akadns.net,REJECT
27 | #Youtube去广告
28 | URL-REGEX,https:\/\/[\s\S]*\.googlevideo\.com/.*&(oad|ctier),REJECT
29 | [MITM]
30 | hostname = api2.mubu.com,buy.itunes.apple.com,api.maimemo.com,pan.baidu.com,vip1.kuwo.cn,*.googlevideo.com,account.wps.cn,api.weibo.cn,mapi.weibo.com,*.uve.weibo.com,mp.weixin.qq.com
31 |
--------------------------------------------------------------------------------
/Loon/plugin/Price.plugin:
--------------------------------------------------------------------------------
1 | [script]
2 | http-request ^http://.+/amdc/mobileDispatch requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js,tag=淘宝比价1 Lite(通知版)
3 | http-response ^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js, tag=淘宝比价2 Lite(通知版)
4 | http-response ^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig) requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js, tag=京东比价(内置版)
5 | [mitm]
6 | hostname = trade-acs.m.taobao.com,api.m.jd.com
7 |
--------------------------------------------------------------------------------
/Loon/plugin/READEME.md:
--------------------------------------------------------------------------------
1 | 部分来自网络整理,小弟眼拙,知道大佬的标注了,未标注的可能不知道,请谅解
2 |
--------------------------------------------------------------------------------
/Loon/plugin/TF_Download.plugin:
--------------------------------------------------------------------------------
1 | [Script]
2 | http-request ^https?:\/\/testflight\.apple\.com\/v2\/accounts\/.*\/apps\/\d*/builds/\d*/install script-path=https://gist.githubusercontent.com/NobyDa/9be418b93afc5e9c8a8f4d28ae403cf2/raw/TF_Download.js, requires-body=true, timeout=10, tag=TF国区下载
3 | [MITM]
4 | hostname = testflight.apple.com
5 |
--------------------------------------------------------------------------------
/Loon/plugin/Youtube15.26.4.plugin:
--------------------------------------------------------------------------------
1 | #YouTube去广告
2 | ^https?:\/\/.+\.googlevideo\.com\/.+&oad url reject-img
3 | ^https?:\/\/.+\.googlevideo\.com\/.+ctier url reject-img
4 | ^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+ad_ url reject-img
5 | ^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+log_ url reject-img
6 | ^https?:\/\/.+\.youtube\.com\/get_midroll_ url reject-img
7 | ^https?:\/\/premiumyva\.appspot\.com\/vmclickstoadvertisersite url reject-img
8 | ^https?:\/\/.+\.youtube\.com\/api\/stats\/ads url reject-img
9 | ^https?:\/\/.+\.youtube\.com\/api\/stats\/.+adformat url reject-img
10 | ^https?:\/\/.+\.youtube\.com\/pagead\/ url reject-img
11 | ^https?:\/\/.+\.youtube\.com\/ptracking url reject-img
12 | hostname = *.googlevideo.com
13 |
--------------------------------------------------------------------------------
/Quantumult X/Surge4_Zero.conf:
--------------------------------------------------------------------------------
1 | # @Glitter_Zero / 2021.02.27 / Surge4_Zero 新手入门配置
2 | # Zero频道:https://t.me/Light_Zero
3 | # 执意脚本频道:https://t.me/Ariszy8028
4 |
5 | [General]
6 | # 日志等级 warning, notify, info, verbose (默认: notify)
7 | loglevel = notify
8 | # 网络诊断
9 | # > Internet 测试 URL
10 | internet-test-url = http://bing.com
11 | # > 代理测速 URL
12 | proxy-test-url = http://www.google.com/generate_204
13 | # > 测速超时 (s)
14 | test-timeout = 3
15 | # IPv6 支持
16 | ipv6 = false
17 | # Wi-Fi 访问
18 | # > 允许 Wi-Fi 网络下其它设备访问
19 | allow-wifi-access = true
20 | # > HTTP 代理服务端口(默认 "6152")
21 | # wifi-access-http-port = 6152
22 | # > SOCKS5 代理服务端口(默认 "6153")
23 | # wifi-access-socks5-port = 6153
24 | # 外部控制器
25 | external-controller-access = Zero@127.0.0.1:6170
26 | # 兼容性
27 | # > 兼容模式(默认 "禁用")
28 | # compatibility-mode = 0
29 | # > 跳过某个域名或者IP段
30 | skip-proxy = 192.168.0.0/16, 193.168.0.0/24, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 17.0.0.0/8, 127.0.0.1, localhost, *.local
31 | bypass-system = true
32 | # 实验性支持
33 | # > TLS Provider: default, secure-transport, network-framework, openssl (默认: default)
34 | tls-provider = default
35 | # > 启动 Network.framework(默认不启用)
36 | network-framework = false
37 | # 其他(请先阅读手册,除非你明确知道其含义,否则不要修改任何设置)
38 | # > Show Reject Error Page
39 | show-error-page-for-reject = true
40 | # > Hijack DNS
41 | # hijack-dns =
42 | # > TCP Force HTTP Hosts
43 | # force-http-engine-hosts = example.com:80
44 | # > VIF Excluded Routes
45 | tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
46 | # > VIF Included Routes
47 | tun-included-routes = 192.168.1.12/32
48 | # DNS 服务器
49 | dns-server = 119.29.29.29,223.5.5.5,system
50 |
51 | [Replica]
52 | # [抓取流量] => 过滤器
53 | # > 隐藏 Apple 请求
54 | hide-apple-request = true
55 | # > 隐藏 Crashlytics 请求
56 | hide-crashlytics-request = true
57 | # > 隐藏 UDP 会话
58 | hide-udp = false
59 | # > 关键词过滤器
60 | keyword-filter-type = (null)
61 | keyword-filter = icloud,ocsp,logs,analytic,ads,imap,adthor,applovin,appnext,talk,dropbox,spys
62 |
63 | [Proxy]
64 | 𝐃𝐢𝐫𝐞𝐜𝐭 = direct
65 | 𝐑𝐞𝐣𝐞𝐜𝐭 = reject
66 |
67 | [Proxy Group]
68 | # 把机场订阅地址替换掉下方策略中的“订阅地址”
69 | 节点选择 = select, 延迟最低, 手动选择, 故障切换
70 | 𝐍𝐞𝐭𝐟𝐥𝐢𝐱 = select, policy-path=订阅地址
71 | 𝐘𝐨𝐮𝐓𝐮𝐛𝐞 = select, 节点选择, 𝐃𝐢𝐫𝐞𝐜𝐭
72 | 𝐓𝐞𝐥𝐞𝐠𝐫𝐚𝐦 = select, 节点选择, 𝐃𝐢𝐫𝐞𝐜𝐭
73 | 𝐒𝐩𝐞𝐞𝐝𝐓𝐞𝐬𝐭 = select, 节点选择, 𝐃𝐢𝐫𝐞𝐜𝐭
74 | 𝐀𝐩𝐩𝐥𝐞服务 = select, 𝐃𝐢𝐫𝐞𝐜𝐭, 节点选择
75 | 延迟最低 = url-test, policy-path=订阅地址, url=http://www.gstatic.com/generate_204, interval=600, tolerance=50
76 | 手动选择 = select, policy-path=订阅地址
77 | 故障切换 = fallback, policy-path=订阅地址, url=http://www.gstatic.com/generate_204, interval=600, tolerance=50
78 | 负载均衡 = load-balance, persistent=1, policy-path=订阅地址, update-interval=0
79 | 𝐅𝐢𝐧𝐚𝐥 = select, 节点选择, 𝐃𝐢𝐫𝐞𝐜𝐭
80 |
81 | [Rule]
82 | # > Proxy
83 | PROCESS-NAME,v2ray,𝐃𝐢𝐫𝐞𝐜𝐭
84 | PROCESS-NAME,ss-local,𝐃𝐢𝐫𝐞𝐜𝐭
85 | PROCESS-NAME,UUBooster,𝐃𝐢𝐫𝐞𝐜𝐭
86 | # > Download
87 | PROCESS-NAME,aria2c,𝐃𝐢𝐫𝐞𝐜𝐭
88 | PROCESS-NAME,fdm,𝐃𝐢𝐫𝐞𝐜𝐭
89 | PROCESS-NAME,Folx,𝐃𝐢𝐫𝐞𝐜𝐭
90 | PROCESS-NAME,NetTransport,𝐃𝐢𝐫𝐞𝐜𝐭
91 | PROCESS-NAME,Thunder,𝐃𝐢𝐫𝐞𝐜𝐭
92 | PROCESS-NAME,Transmission,𝐃𝐢𝐫𝐞𝐜𝐭
93 | PROCESS-NAME,uTorrent,𝐃𝐢𝐫𝐞𝐜𝐭
94 | PROCESS-NAME,WebTorrent,𝐃𝐢𝐫𝐞𝐜𝐭
95 | PROCESS-NAME,WebTorrent Helper,𝐃𝐢𝐫𝐞𝐜𝐭
96 | # > BlockOTA(屏蔽系统版本更新)
97 | DOMAIN,gdmf.apple.com,𝐑𝐞𝐣𝐞𝐜𝐭
98 | DOMAIN,gdmf.apple.com.akadns.net,𝐑𝐞𝐣𝐞𝐜𝐭
99 | DOMAIN,mesu.apple.com,𝐑𝐞𝐣𝐞𝐜𝐭
100 | DOMAIN,mesu-cdn.apple.com.akadns.net,𝐑𝐞𝐣𝐞𝐜𝐭
101 | DOMAIN,mesu-cdn.origin-apple.com.akadns.net,𝐑𝐞𝐣𝐞𝐜𝐭
102 | DOMAIN,mesu.g.aaplimg.com,𝐑𝐞𝐣𝐞𝐜𝐭
103 | DOMAIN,appldnld.apple.com,𝐑𝐞𝐣𝐞𝐜𝐭
104 | DOMAIN,appldnld.apple.com.akadns.net,𝐑𝐞𝐣𝐞𝐜𝐭
105 | # Rulesets (by eHpo1 + DivineEngine)
106 | # 后续规则修正
107 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Unbreak.list,𝐃𝐢𝐫𝐞𝐜𝐭,update-interval=3600
108 | # 广告拦截
109 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Advertising.list,𝐑𝐞𝐣𝐞𝐜𝐭,update-interval=3600
110 | # 隐私保护
111 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Privacy.list,𝐑𝐞𝐣𝐞𝐜𝐭,update-interval=3600
112 | # 运营商劫持或恶意网站
113 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Hijacking.list,𝐑𝐞𝐣𝐞𝐜𝐭,update-interval=3600
114 | # Netflix
115 | RULE-SET,https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Surge/Surge%203/Provider/Media/Netflix.list,𝐍𝐞𝐭𝐟𝐥𝐢𝐱,update-interval=3600
116 | # YouTube
117 | RULE-SET,https://raw.githubusercontent.com/lhie1/Rules/master/Surge/Surge%203/Provider/Media/YouTube.list,𝐘𝐨𝐮𝐓𝐮𝐛𝐞,update-interval=3600
118 | # Speedtest
119 | RULE-SET,https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Surge/Surge%203/Provider/Speedtest.list,𝐒𝐩𝐞𝐞𝐝𝐓𝐞𝐬𝐭,update-interval=3600
120 | # 国际流媒体服务
121 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/StreamingMedia/Streaming.list,节点选择,update-interval=3600
122 | # 中国流媒体服务(面向海外版本)
123 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/StreamingMedia/StreamingSE.list,𝐑𝐞𝐣𝐞𝐜𝐭,update-interval=3600
124 | # Apple 服务
125 | RULE-SET,https://cdn.jsdelivr.net/gh/lhie1/Rules@master/Surge/Surge%203/Provider/Apple.list,𝐀𝐩𝐩𝐥𝐞服务,update-interval=3600
126 | # TestFlight
127 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Extra/Apple/TestFlight.list,𝐀𝐩𝐩𝐥𝐞服务,update-interval=3600
128 | # 全球加速
129 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Global.list,节点选择,update-interval=3600
130 | # 中国直连
131 | RULE-SET,https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/China.list,𝐃𝐢𝐫𝐞𝐜𝐭,update-interval=3600
132 | # 局域网
133 | RULE-SET,LAN,𝐃𝐢𝐫𝐞𝐜𝐭
134 | # GeoIP China
135 | GEOIP,CN,𝐃𝐢𝐫𝐞𝐜𝐭
136 | FINAL,𝐅𝐢𝐧𝐚𝐥,dns-failed
137 |
138 | [Host]
139 | # Firebase Cloud Messaging
140 | mtalk.google.com = 108.177.125.188
141 |
142 | [URL Rewrite]
143 | # 如果你解锁了「模块」功能可以使用 sgmodule 后清空 [URL Rewrite] 及 [MITM] 部分,MitM 证书重新生成配置。
144 | # 建议必选使用 General.sgmodule,其他 .sgmodule 按需加入
145 |
146 | [Header Rewrite]
147 | # 据粗略统计,有大概三分之二的本项目使用者停留在了 Surge 2、3 时期故而保留了 Rewrite 及 MitM,所以如果你解锁了「模块」功能可以使用 sgmodule 后清空 [URL Rewrite] 及 [MITM] 部分,MitM 证书重新生成配置。
148 | # 建议必选使用 General.sgmodule,其他 .sgmodule 按需加入
149 | # 百度防跳转
150 | ^https?:\/\/.*\.baidu\.com header-replace User-Agent Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/16C50 Quark/604.1 T7/10.3 SearchCraft/2.6.3 (Baidu; P1 8.0.0)$2
151 |
152 | [MITM]
153 | skip-server-cert-verify = true
154 | hostname = www.google.cn, api.abema.io, ios.prod.ftl.netflix.com, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, -*.weibo.com, api.m.jd.com, trade-acs.m.taobao.com, jdjoy.jd.com, mp.weixin.qq.com, pan.baidu.com, vip1.kuwo.cn, weixin110.qq.com, testflight.apple.com, *.baidu.com,
155 | ca-passphrase = UNCLEWANG
156 | ca-p12 = MIIJ4QIBAzCCCacGCSqGSIb3DQEHAaCCCZgEggmUMIIJkDCCBEcGCSqGSIb3DQEHBqCCBDgwggQ0AgEAMIIELQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIIID8XedewzgCAggAgIIEANnWZ5t2guVFaifs0lzFt9/vD4NhiDeDTnk/0F8RIUg1WdKBgsj4SvtvTBogsVQvMhyq5Y3+zMC3IW3FTs+5JW+ZTQl3MKiiDpENTIQhaxv+mP40Ml02wKqWKavJQ3lvNjPt0kSAY5VmBrs8CTdr9PzqUBEfHdLJnmJXSpxrtVAoW5ikDQ86CabvC0gs25KfK0lUWWRyW2Y4Euv7lzhtcfOzk7Z3dYDUpb9woazbMJgqtLwK7D087CgTq37JdLu6XvgtVAsknUQRASOM1zvBsaRw7vDL6sA6IdLaIe9CdL77wEAwhCMR8y5z4QYgMu7Vlvxd3htka9M+o6zOjsyeer8pM/xo1fLxbljzg7wB/yBjtQ/bMX2xNiQiLYw1mJDbvqhDw2yobBSvuhTNiaKqCSZnQvFJgcO2wWlOVDpu/xnsw39YLSFLt2Kav8PqilrOb3h964vpQxezNQA//oqQglhi36uc33QDXIbOsHdSjxrVvbESYSeG8P1bCMML3YwS0w4Ywhbf8HaZ1xpejUI6m7E1ww2LBO4H8+6z1gbnm0peR1bsRbU4oW4OZsTZN9lppUfzH6cDkcG4M3gCO+urnXrRyM9om37J3mERs9OpXpU3TLUVb+uN5mQy5IfBHELPQfSAJsVgOQGxZCqA0f091o0MQAfgjO168GLYI9rgqzAQV/GCDMqQzt4/EVVK6UBhnAkOmvKnBsrCQYNSeBE6W7cej5UCVAMQfrQYtJrz1u9R1YXYb3pvEMPlnkvHtETTNPsVqqvalYq6cJTzwItetdzyjVNEEEDjhx57GoAU2fB/vlq2IzDz78WLo9iDA0kmtgpPdx8w9NhOhgVth8MvWvN5WEiAAq6/fszfauVASL0YYt96F6Tflis55p55LvgbNqjpa6SlJhgOesh3rwed982dToglRZ4yJe9JSKgyO89e0XVI//PHpShH9mEQ8WADWVR9cNqHdNhLw/mRvK4B89MxJeSmWlqxhsntCuGVSxbeEzho9cirfwkkHfPQYO7fCDobtM/3loDAb441Do432Swj/Lp2l3LLGDSAZNKVOX6HAo1GmyI1wRo/frdetiz1c2h0BEVdDTGoyIpFoam+GkU4WYZvHhGw3lExMuEpjVp/0HEauQe6wDDLXSDLqHl9uJJTi8LqPhXxYuaW1XgEr9slP6RCwsIAq2wxOdf4BaalFt3gNcoHW+uh/YIwgK4319g3XPr9VrZyK/AHOqV9FoCIqMuUpBzD2Q7KpiZXFoIi1qTyg8sherZyLSv8fUIXETnD1FWx6yBt3unpx8DLuuyn7D6MMxfmQ4to4azThHXP7ln78lOGuIMLJD/6iX9U4ASxwqmmGjdkPQCBs8mX2EswggVBBgkqhkiG9w0BBwGgggUyBIIFLjCCBSowggUmBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQIdH+6OhZ7nGwCAggABIIEyOZHte71jtoiTqgSURn+fY+zMNo/Q2gAf0BfDBZDV3wJHikMmFC1ZANUSpqlx5QmpfyxqTJSRMU/J5I+IKn7O7smRidDdakcS+xweKxQwtjVkl2TQZx7swoqM5A1eKEAt5Qw1FvqiTt2Qfr7yezjdF0PG7I4A826UpqsqMqLWN8S4oXY5y9wra9DdjITHq1ll8/XvGclYozPL1qxv3B6YXqUX9ES/JOoo3rGPGC6qvxyVwsRpzpFSsM7U/8HBBiHtfflei6JRNCVAD0Dd01klMlnE9FDXKCEezfOnl7yPYcIffvDBcyGyxMbLk3+BAc5QEmFa6rql2K3xhzmPGS5EFLhR0wzFZ5W2NlzOk5TV9RGC+EmSHBAFBbGMuh3Id896yxx7kPO0HnVrOCa6YujwMmMk2WSCtcFwXlAjI+Y/T2ofKVNWxkpBSVfu9rjULiF5/2f56Nl7INpx5lgSCH4NbeKaSsGnVdWLe15eJ+HFG2l/Ss0oCknffKCyKqVvRRGqFfWgKwcHC6Bmb8QAKAHdDBMgPTXV/2siRkwcxG8KJEc9U9t0m9chsDh7vGhucR5ybaNBMqo2M/wwezPugEc6mm8ficSlIiGvW633aFqmuVCOhta1K1ky5O3+fqbqw4q04Z//6ToiUa+P5pa41E7BUzJeEZp1U981UxXDwdiEv/VYIf//TCU8pIVSXmLmDTxInD/h2ZJ/fCuVqnH86fP5nKti92npKlr/ulH4av8VYFiDlHhllHjTqrT3lL6wcHkpJuCrs1FCzWjRYPCRcR9PHphs40nB0FJxFcwpablRou30b9Aw6m88xe7feuEYzer884EJLxmFYKba5Xuc38ZDoiI6kf+49U8iqIsbqlPv56NgaZCcOekrd/fJsZrLzCnhfej/LGeIOeOdFzcRv4ilGn0APcb+vZzVINE6nYevyED1UOaQmc/tozFC7Cus3WYQmToTgrTyyb8TcqbKg6npMEZy0gbUEGa9dw7JaCgy0Jv+VNCthL0jgo2+3Uw/jAHl2K/TpvtQGQiMywO3DKcYLjoShdZbhn7DSgOkygMXri0QwYY3USt0QPIoE7QJxLtcBFjPjggTVZ67/wz+yvrtT9ldAWMxk2c3+iuosqAFK4/kfEJsqrU3hQwD0ZvOiQh8vTaqC17ZtxRrG4824pPjsA3uXZpOz0nAbfz9s6zCLlHi6Jcq+LL5SpFO2ZPKihGUXwo3OxLpRw1RZar9ZRntnRl2n9/ExTUawTqYpg+g/gb6rN3XUioyQY0q7RuyS9uQK5GIQ+8HJh4yd8DZOKuFOBKQ6nI8lLfFgW6H9XX+TqK/05pcjpAb+Gc15Z9Cb0CArUeaZG0Xikr4CpcP294MO9twNLPesRb/ZAryIjp8VFM/DWFi027l5Q9M00PF/gyOdOcIdUlUoU3MLSpb/1vVkZNMWIEx7nG8ZtJE9T7Zlxt+/v56C5gm2EEGBkz7xY0q2lYMxV43BusBi5hbcOv+MF/w6dplL/6udQj/QBhPuXCPBHAVu0giFjYmDPHdHQKoVE+8JSC+cHd7df6iwsmVvZECVfKnUcv/T4j7uxUXopTYVlLgoBWlydgvo4BI4sLbbngt2zGqq6RRUcDToIqKkfDsld2g0frBjElMCMGCSqGSIb3DQEJFTEWBBQKwhbGZp3ZUB4s0EFGdDEjsOdG6TAxMCEwCQYFKw4DAhoFAAQURUuNj4DsRdHOU+VdF1f1LMcVK9sECJeYQZ+sQWRAAgIIAA==
157 |
158 | [Script]
159 | # > BoxJs (多账号Cookie保存切换)
160 | # 访问: http://boxjs.com管理
161 | Rewrite: BoxJs = type=http-request,pattern=^https?://boxjs.com(/api|/home|/sub|/my|/app|/log|/revert)?($|\/),script-path=https://gitee.com/chavyleung/scripts/raw/master/chavy.box.js, requires-body=true, timeout=120
162 | # > Netflix评分
163 | Netflix评分 = type=http-request,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js
164 | Netflix评分 = type=http-response,requires-body=1,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js
165 | # > 微博去广告
166 | 微博开屏去广告 = type=http-response,pattern=^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua),requires-body=1,max-size=0,timeout=30,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js,script-update-interval=0
167 | 微博去广告 = type=http-response,pattern=^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/photos/pic_recommend_status|video/tiny_stream_video_list|photo/info),requires-body=1,max-size=-1,timeout=30,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js,script-update-interval=0
168 | # > 京东比价
169 | jd_price.js = type=http-response,pattern=https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js,script-update-interval=0
170 | # > 淘宝比价
171 | # 不生效或失效的需要卸载 tb 重装,注意不开脚本进 tb 会失效
172 | tb_price.js = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js,type=http-request,pattern=^http://.+/amdc/mobileDispatch
173 | tb_price.js = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js,type=http-response,pattern=^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail
174 | # > 微信公众号去广告/链接跳转
175 | 微信公众号去广告 = script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js,type=http-request,pattern=^https://mp\.weixin\.qq\.com/mp/getappmsgad
176 | 微信链接跳转 = type=http-response,pattern=^https?:\/\/weixin110\.qq\.com\/cgi-bin\/mmspamsupport-bin\/newredirectconfirmcgi,script-path=https://raw.githubusercontent.com/HotKids/Rules/master/Script/weixin110.js
177 | # > 百度云vip倍速播放
178 | 百度云VIP倍速播放 = type=http-response,pattern=https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user,requires-body=1,max-size=0,timeout=50,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js,script-update-interval=0
179 | # > 酷我音乐VIP
180 | 酷我音乐下载 = type=http-request,pattern=^https?:\/\/musicpay\.kuwo.cn\/music\.pay\?uid=\d+,requires-body=1,max-size=0,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/KuWoMusicDownload.js,script-update-interval=0
181 | 酷我音乐VIP = type=http-response,pattern=^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice),requires-body=1,max-size=0,timeout=60,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js,script-update-interval=0
182 | # > TestFlight下载修正
183 | TestFlight下载修正 = type=http-request,pattern=^https?:\/\/testflight\.apple\.com\/v\d\/accounts\/.+?\/install$,requires-body=1,max-size=0,script-path=https://gist.githubusercontent.com/NobyDa/9be418b93afc5e9c8a8f4d28ae403cf2/raw/TF_Download.js
184 |
--------------------------------------------------------------------------------
/Quantumult X/readme.md:
--------------------------------------------------------------------------------
1 | # 说明:
2 |
3 | ## 1、本文件夹用于代存Light_Zero圈x、surge4配置
4 |
5 | ## 2、所有配置由Light_Zero整理制作
6 |
7 | ## 3、本配置所包含但不限于脚本的文件,执意不知情也不负责
8 |
9 | ## 4、因使用此配置出现泄密等损失与执意无关
10 |
11 | ## 5、一旦使用此配置视为知情此说明,并严格遵守此说明
12 |
--------------------------------------------------------------------------------
/Quantumult X/wangyiyunjd.txt:
--------------------------------------------------------------------------------
1 | http=106.52.127.71:19931, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐1
2 | http=106.52.127.72:19951, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐2
3 | http=aimer.one:3333,fast-open=false, udp-relay=false, tag=网易云音乐3
4 | http=block4music.poetyin.me:39000, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐4
5 | http=3music.poetyin.me:100, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐5
6 | http=music.lolico.me:39000, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐6
7 | http=taron.top:100, over-tls=false, fast-open=false, udp-relay=false, tag=网易云音乐7
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 说明 :
2 |
3 | * 部分搬运和同步更新大佬脚本,不负责维护脚本.
4 |
5 | * 部分自用脚本.
6 |
7 |
8 | ### 特别声明:
9 |
10 | 1、本仓库发布的Script项目中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。
11 |
12 | 2、本仓库内所有资源文件,禁止任何公众号、自媒体进行任何形式的转载、发布。
13 |
14 | 3、Ariszy对任何脚本问题概不负责,包括但不限于由任何脚本错误导致的任何损失或损害。
15 |
16 | 4、间接使用脚本的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, Ariszy对于由此引起的任何隐私泄漏或其他后果概不负责。
17 |
18 | 5、请勿将Script项目的任何内容用于商业或非法目的,否则后果自负,Ariszy对此引起的一切后果概不负责。
19 |
20 | 6、如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,请及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本文件。
21 |
22 | 7、任何以任何方式查看此项目的人或直接或间接使用该Script项目的任何脚本的使用者都需仔细阅读此声明。Ariszy保留随时更改或补充此免责声明的权利。一旦使用并复制了任何相关脚本或Script项目的规则,则视为您已接受此免责声明,并对自己行为负责。
23 |
24 | ## 赞赏码(开发不易,赏杯阔乐吧!)
25 |
26 |

27 |
--------------------------------------------------------------------------------
/Scripts/TT.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy_Script
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 | 转载留个名字,谢谢
6 | 邀请码:######
7 | 谢谢
8 | 作者:执意Ariszy
9 | #打卡一次获取ck成功
10 |
11 | [mitm]
12 | hostname = node.52tt.com
13 | #圈x
14 | [rewrite local]
15 | https://node.52tt.com/activity-production/new-user-month-checkin/activity.Checkin/checkin url script-request-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/TT.js
16 |
17 |
18 | #loon
19 | http-request https://node.52tt.com/activity-production/new-user-month-checkin/activity.Checkin/checkin script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/TT.js, requires-body=true, timeout=10, tag=TT语音
20 |
21 |
22 | #surge
23 | TT语音 = type=http-request,pattern=https://node.52tt.com/activity-production/new-user-month-checkin/activity.Checkin/checkin,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/TT.js,script-update-interval=0
24 |
25 | */
26 |
27 | const $ = new Env('TT语音')
28 | const notify = $.isNode() ?require('./sendNotify') : '';
29 | let status;
30 | status = (status = ($.getval("TTstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
31 | const TTreferArr = [],TTbodyArr = []
32 | let TTrefer = $.getdata('TTrefer')
33 | let TTbody= $.getdata('TTbody')
34 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
35 | const invite=1;//新用户自动邀请,0关闭,1默认开启
36 | const logs =0;//0为关闭日志,1为开启
37 | var hour=''
38 | var minute=''
39 | if ($.isNode()) {
40 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
41 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
42 | }else{
43 | hour = (new Date()).getHours();
44 | minute = (new Date()).getMinutes();
45 | }
46 | //CK运行
47 | let isGetCookie = typeof $request !== 'undefined'
48 | if (isGetCookie) {
49 | GetCookie();
50 | $.done()
51 | }
52 | if ($.isNode()) {
53 | if (process.env.TTREFER && process.env.TTREFER .indexOf('#') > -1) {
54 | TTrefer = process.env.TTREFER .split('#');
55 | console.log(`您选择的是用"#"隔开\n`)
56 | }
57 | else if (process.env.TTREFER && process.env.TTREFER .indexOf('\n') > -1) {
58 | TTrefer = process.env.TTREFER .split('\n');
59 | console.log(`您选择的是用换行隔开\n`)
60 | } else {
61 | TTrefer = process.env.TTREFER .split()
62 | };
63 | if (process.env.TTBODY&& process.env.TTBODY.indexOf('#') > -1) {
64 | TTbody= process.env.TTBODY.split('#');
65 | console.log(`您选择的是用"#"隔开\n`)
66 | }
67 | else if (process.env.TTBODY&& process.env.TTBODY.indexOf('\n') > -1) {
68 | TTbody= process.env.TTBODY.split('\n');
69 | console.log(`您选择的是用换行隔开\n`)
70 | } else {
71 | TTbody= process.env.TTBODY.split()
72 | };
73 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
74 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
75 | } else {
76 | TTreferArr.push($.getdata('TTrefe'))
77 | TTbodyArr.push($.getdata('TTbody'))
78 | let TTcount = ($.getval('TTcount') || '1');
79 | for (let i = 2; i <= TTcount; i++){
80 | TTreferArr.push($.getdata(`TTrefer${i}`))
81 | TTbodyArr.push($.getdata(`TTbody${i}`))
82 | }
83 | }
84 | !(async () => {
85 | if (!TTreferArr[0] && !TTbodyArr[0] ) {
86 | $.msg($.name, '【提示】请先获取TT语音一cookie')
87 | return;
88 | }
89 | console.log(`------------- 共${TTbodyArr.length}个账号----------------\n`)
90 | for (let i = 0; i < TTbodyArr.length; i++) {
91 | if (TTbodyArr[i]) {
92 | message = ''
93 | TTrefer= TTreferArr[i];
94 | TTbody = TTbodyArr[i];
95 | $.index = i + 1;
96 | console.log(`\n开始【TT语音${$.index}】`)
97 | await checkin()
98 | await showmsg()
99 | }
100 | }
101 | })()
102 | .catch((e) => $.logErr(e))
103 | .finally(() => $.done())
104 |
105 |
106 | function GetCookie() {
107 | if($request&&$request.url.indexOf("checkin")>=0) {
108 | const TTrefer = $request.headers['Referer']
109 | if(TTrefer) $.setdata(TTrefer,`TTrefer${status}`)
110 | $.log(`[${$.jsname}] 获取TTrefer请求: 成功,TTrefer: ${TTrefer}`)
111 | $.msg(`TTrefer${status}: 成功🎉`, ``)
112 | const TTbody= $request.body
113 | if(TTbody) $.setdata(TTbody,`TTbody${status}`)
114 | $.log(`[${$.jsname}] 获取TTbody请求: 成功,TTbody: ${TTbody}`)
115 | $.msg(`TTbody${status}: 成功🎉`, ``)
116 | }
117 | }
118 | //checkin
119 | async function checkin(){
120 | return new Promise((resolve) => {
121 | let checkin_url = {
122 | url: `https://node.52tt.com/activity-production/new-user-month-checkin/activity.Checkin/checkin`,
123 | headers: {
124 | 'Accept': '*/*',
125 | 'Accept-Encoding': 'gzip,deflate,br',
126 | 'Accept-Language': 'zh-cn',
127 | 'Connection': 'keep-alive',
128 | 'Content-Type': 'application/json',
129 | 'Host': 'node.52tt.com',
130 | 'Origin': 'http://appcdn.52tt.com',
131 | 'Referer': `${TTrefer}`,
132 | 'User-Agent': `Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 TT/5.5.6 NetType/Wifi`
133 | },
134 | body: TTbody
135 | }
136 | $.post(checkin_url,async(error, response, data) =>{
137 | try{
138 | const result = JSON.parse(data)
139 | if(logs)$.log(data)
140 | if(result.code == 0){
141 | for(let i = 0; i < 29; i++){
142 | let day = result.data.record.i == 0 ? (i -1) : i
143 | }
144 | console.log(`打卡成功:累计获得${result.data.curMoney}元\n`)
145 | message += `打卡成功:累计获得${result.data.curMoney}元`
146 | }else if(result.code == 2){
147 | console.log(result.msg+`\n`)
148 | message += result.msg
149 | }
150 | }catch(e) {
151 | $.logErr(e, response);
152 | } finally {
153 | resolve();
154 | }
155 | })
156 | })
157 | }
158 | //showmsg
159 | async function showmsg() {
160 | if (tz == 1) {
161 | if ($.isNode()) {
162 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
163 | await notify.sendNotify($.name, message)
164 | } else {
165 | $.log(message)
166 | }
167 | } else {
168 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
169 | $.msg($.jsname, '', message)
170 | } else {
171 | $.log(message)
172 | }
173 | }
174 | } else {
175 | $.log(message)
176 | }
177 | }
178 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
179 |
--------------------------------------------------------------------------------
/Scripts/cglm.js:
--------------------------------------------------------------------------------
1 |
2 | const $ = new Env('猜歌联萌')
3 | const notify = $.isNode() ?require('./sendNotify') : '';
4 | let status;
5 | let num = 21;
6 | status = (status = ($.getval("cglmstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
7 | cglmheaderArr = []
8 | let cglmheader = $.getdata('cglmheader')
9 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
10 | const invite=1;//新用户自动邀请,0关闭,1默认开启
11 | const logs =0;//0为关闭日志,1为开启
12 | var hour=''
13 | var minute=''
14 | if ($.isNode()) {
15 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
16 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
17 | }else{
18 | hour = (new Date()).getHours();
19 | minute = (new Date()).getMinutes();
20 | }
21 | //CK运行
22 | let isGetCookie = typeof $request !== 'undefined'
23 | if (isGetCookie) {
24 | GetCookie();
25 | $.done()
26 | }
27 |
28 | cglmheaderArr.push($.getdata('cglmheader'))
29 | let cglmcount = ($.getval('cglmcount') || '1');
30 | for (let i = 2; i <= cglmcount; i++) {
31 | cglmheaderArr.push($.getdata(`cglmheader${i}`))
32 | }
33 | !(async () => {
34 | if (!cglmheaderArr[0]) {
35 | $.msg($.name, '【提示】请先获取猜歌联萌一cookie')
36 | return;
37 | }
38 | console.log(`------------- 共${cglmheaderArr.length}账号----------------\n`)
39 | for (let i = 0; i < cglmheaderArr.length; i++) {
40 | if (cglmheaderArr[i]) {
41 | message = ''
42 | let turn = 0;
43 | cglmheader = cglmheaderArr[i];
44 | $.index = i + 1;
45 | console.log(`\n开始【猜歌联萌${$.index}】`)
46 | do{
47 | await passstage()
48 | await dailycashvideo()
49 | await $.wait(300)
50 | turn++;
51 | }while(turn < num)
52 | await postalv2()
53 | await postalv3()
54 | }
55 | }
56 | })()
57 | .catch((e) => $.logErr(e))
58 | .finally(() => $.done())
59 |
60 |
61 | function GetCookie() {
62 | if($request&&$request.url.indexOf("passstage")>=0) {
63 |
64 | const cglmheader = JSON.stringify($request.headers)
65 | if(cglmheader) $.setdata(cglmheader,`cglmheader${status}`)
66 | $.log(`[${$.jsname}] 获取cglmheader请求: 成功,cglmheader: ${cglmheader}`)
67 | $.msg(`cglmheader${status}: 成功🎉`, ``)
68 | }
69 | }
70 |
71 | async function passstage(){
72 | return new Promise((resolve) => {
73 | let passstage_url = {
74 | url: `https://www.xizai.com/ge/api/v1/cg/ga/passstage`,
75 | headers: JSON.parse(cglmheader),
76 | body: `{"gameCategory":4,"serNum":"20201102_1snkd","userAnswer":"A"}`
77 | }
78 | $.post(passstage_url,async(error, response, data) =>{
79 | try{
80 | const result = JSON.parse(data)
81 | if(logs)$.log(data)
82 | if(result.code == 0)
83 | $.log(result.msg+"获得"+result.coins+"钻石\n")
84 | }catch(e) {
85 | $.logErr(e, response);
86 | } finally {
87 | resolve();
88 | }
89 | })
90 | })
91 | }
92 | async function dailycashvideo(){
93 | return new Promise((resolve) => {
94 | let cashvideo_url = {
95 | url: `https://www.xizai.com/ge/api/v1/cg/dailycash/video`,
96 | headers: JSON.parse(cglmheader),
97 | body: `{}`
98 | }
99 | $.post(cashvideo_url,async(error, response, data) =>{
100 | try{
101 | const result = JSON.parse(data)
102 | if(logs)$.log(data)
103 | if(result.code == 0)
104 | $.log(result.msg+"观看"+result.amount+"\n")
105 | }catch(e) {
106 | $.logErr(e, response);
107 | } finally {
108 | resolve();
109 | }
110 | })
111 | })
112 | }
113 |
114 |
115 | async function postalv2(){
116 | return new Promise((resolve) => {
117 | let postalv2_url = {
118 | url: `https://www.xizai.com/ge/api/v1/cg/cash/postalv2`,
119 | headers: JSON.parse(cglmheader),
120 | body: `{"cashModel":"0.3-30","payType":1}`
121 | }
122 | $.post(postalv2_url,async(error, response, data) =>{
123 | try{
124 | const result = JSON.parse(data)
125 | if(logs)$.log(data)
126 | if(result.code == 0)
127 | $.log("提现"+result.msg+"\n")
128 | else
129 | $.log(result.msg+"\n")
130 | }catch(e) {
131 | $.logErr(e, response);
132 | } finally {
133 | resolve();
134 | }
135 | })
136 | })
137 | }
138 | //每日提现
139 | async function postalv3(){
140 | return new Promise((resolve) => {
141 | let postalv3_url = {
142 | url: `https://www.xizai.com/ge/api/v1/cg/dailycash/cash`,
143 | headers: JSON.parse(cglmheader),
144 | body: `{}`
145 | }
146 | $.post(postalv3_url,async(error, response, data) =>{
147 | try{
148 | const result = JSON.parse(data)
149 | if(logs)$.log(data)
150 | if(result.code == 0)
151 | $.log("提现"+result.msg+"\n")
152 | else
153 | $.log(result.msg+"\n")
154 | }catch(e) {
155 | $.logErr(e, response);
156 | } finally {
157 | resolve();
158 | }
159 | })
160 | })
161 | }
162 | //showmsg
163 | //boxjs设置tz=1,在12点<=20和23点>=40时间段通知,其余时间打印日志
164 |
165 | async function showmsg() {
166 | if (tz == 1) {
167 | if ($.isNode()) {
168 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
169 | await notify.sendNotify($.name, message)
170 | } else {
171 | $.log(message)
172 | }
173 | } else {
174 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
175 | $.msg(zhiyi, '', message)
176 | } else {
177 | $.log(message)
178 | }
179 | }
180 | } else {
181 | $.log(message)
182 | }
183 | }
184 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
185 |
--------------------------------------------------------------------------------
/Scripts/fqxs.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy8028
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 | 转载留个名字,谢谢
6 | 邀请码:7672016831
7 | 谢谢
8 | 版本3.5.0
9 | 作者:执意Ariszy
10 | #签到界面或者签到详情
11 | #读书任务可以完成,时长上传没做好,广告偶尔可以
12 | [mitm]
13 | hostname = *.snssdk.com
14 | #圈x
15 | [rewrite local]
16 | luckycat/novel/v1/task/sign_in/* url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/fqxs.js
17 |
18 |
19 | #loon
20 | http-request luckycat/novel/v1/task/sign_in/* script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/fqxs.js, requires-body=true, timeout=10, tag=🍅番茄小说
21 |
22 |
23 | #surge
24 | 🍅番茄小说 = type=http-request,pattern=luckycat/novel/v1/task/sign_in/*,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/fqxs.js,script-update-interval=0
25 |
26 | */
27 | const $ = new Env('🍅番茄小说')
28 | const notify = $.isNode() ?require('./sendNotify') : '';
29 | let status,no;
30 | status = (status = ($.getval("fqxsstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
31 | const fqxsurlArr = [],fqxsArr = []
32 | let fqxaurl = $.getdata('fqxsurl')
33 | let fqxs= $.getdata('fqxs')
34 | let host = $.getdata('host')
35 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
36 | const invite=1;//新用户自动邀请,0关闭,1默认开启
37 | const logs =0;//0为关闭日志,1为开启
38 | var hour=''
39 | var minute=''
40 | if ($.isNode()) {
41 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
42 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
43 | }else{
44 | hour = (new Date()).getHours();
45 | minute = (new Date()).getMinutes();
46 | }
47 | //CK运行
48 | let isfqxsck = typeof $request !== 'undefined'
49 | if (isfqxsck) {
50 | fqxsck();
51 | $.done()
52 | }
53 | if ($.isNode()) {
54 | if (process.env.FQXSURL && process.env.FQXSURL .indexOf('#') > -1) {
55 | fqxsurl = process.env.FQXSURL .split('#');
56 | console.log(`您选择的是用"#"隔开\n`)
57 | }
58 | else if (process.env.FQXSURL && process.env.FQXSURL .indexOf('\n') > -1) {
59 | fqxsurl = process.env.FQXSURL .split('\n');
60 | console.log(`您选择的是用换行隔开\n`)
61 | } else {
62 | fqxsurl = process.env.FQXSURL .split()
63 | };
64 | if (process.env.FQXS&& process.env.FQXS.indexOf('#') > -1) {
65 | fqxs= process.env.FQXS.split('#');
66 | console.log(`您选择的是用"#"隔开\n`)
67 | }
68 | else if (process.env.FQXS&& process.env.FQXS.indexOf('\n') > -1) {
69 | fqxs= process.env.FQXS.split('\n');
70 | console.log(`您选择的是用换行隔开\n`)
71 | } else {
72 | fqxs= process.env.FQXS.split()
73 | };
74 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
75 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
76 | } else {
77 | fqxsurlArr.push($.getdata('fqxsurl'))
78 | fqxsArr.push($.getdata('fqxs'))
79 | let fqxscount = ($.getval('fqxscount') || '1');
80 | for (let i = 2; i <= fqxscount; i++) {
81 | fqxsurlArr.push($.getdata(`fqxsurl${i}`))
82 | fqxsArr.push($.getdata(`fqxs${i}`))
83 | }
84 | }
85 | !(async () => {
86 | if (!fqxsurlArr[0] && !fqxsArr[0] ) {
87 | $.msg($.name, '【提示】请先获取🍅番茄小说一cookie')
88 | return;
89 | }
90 | console.log(`------------- 共${fqxsurlArr.length}个账号----------------\n`)
91 | for (let i = 0; i < fqxsArr.length; i++) {
92 | if (fqxsArr[i]) {
93 | message = ''
94 | note = ''
95 | fqxsurl= fqxsurlArr[i];
96 | fqxs = fqxsArr[i];
97 | $.index = i + 1;
98 | console.log(`\n开始【番茄小说${$.index}】`)
99 | await task_list()
100 | await showmsg()
101 | }
102 | }
103 | })()
104 | .catch((e) => $.logErr(e))
105 | .finally(() => $.done())
106 |
107 | function fqxsck() {
108 | if($request&&$request.url.indexOf("sign_in")>=0) {
109 | const fqxsurl = $request.url.split('?')[1]
110 | if(fqxsurl) $.setdata(fqxsurl,`fqxsurl${status}`)
111 | $.log(`[${$.jsname}] 获取fqxsurl请求: 成功,fqxsurl: ${fqxsurl}`)
112 | $.msg(`fqxsurl${status}: 成功🎉`, ``)
113 | const host = $request.headers['Host']
114 | if(host) $.setdata(host,'host')
115 | $.log(`[${$.jsname}] 获取host请求: 成功,host: ${host}`)
116 | const fqxs = JSON.stringify($request.headers)
117 | if(fqxs) $.setdata(fqxs,`fqxs${status}`)
118 | $.log(`[${$.jsname}] 获取fqxs请求: 成功,fqxs: ${fqxs}`)
119 | $.msg(`fqxs${status}: 成功🎉`, ``)
120 | }
121 | }
122 | //task_list
123 | async function task_list(){
124 | return new Promise((resolve) => {
125 | let task_list_url = {
126 | url: `https://${host}/luckycat/novel/v1/task/list?${fqxsurl}polaris_page=client_task_page&new_bookshelf=1`,
127 | headers: JSON.parse(fqxs),
128 | }
129 | $.get(task_list_url,async(error, response, data) =>{
130 | try{
131 | if (error) {
132 | console.log("⛔️API查询请求失败❌ ‼️‼️");
133 | console.log(JSON.stringify(error));
134 | $.logErr(error);
135 | } else {
136 | const result = JSON.parse(data)
137 | if(logs)$.log(data)
138 | let qd_status = result.data.task_list.daily.find(item => item.task_id === 203)
139 | let sign_status = qd_status.completed
140 | if(!sign_status)
141 | await sign_in()
142 | let yd_status_5 = result.data.task_list.daily.find(item => item.task_id === 1006)
143 | if(!yd_status_5.completed)
144 | no = 5
145 | let yd_status_10 = result.data.task_list.daily.find(item => item.task_id === 1003)
146 | if(!yd_status_10.completed)
147 | no = 10
148 | let yd_status_30 = result.data.task_list.daily.find(item => item.task_id === 1009)
149 | if(!yd_status_30.completed)
150 | no = 30
151 | let yd_status_60 = result.data.task_list.daily.find(item => item.task_id === 1010)
152 | if(!yd_status_60.completed)
153 | no = 60
154 | let yd_status_120 = result.data.task_list.daily.find(item => item.task_id === 1011)
155 | if(!yd_status_120.completed)
156 | no = 120
157 | let yd_status_180 = result.data.task_list.daily.find(item => item.task_id === 1012)
158 | if(!yd_status_180.completed)
159 | no = 180
160 | if(yd_status_180.completed && yd_status_120.completed && yd_status_120.completed && yd_status_60.completed && yd_status_30.completed && yd_status_10.completed && yd_status_5.completed){
161 | console.log('阅读任务已经完成\n')
162 | message += '阅读任务已经完成\n'
163 | }else{
164 | $.log('开始阅读任务\n')
165 | await read()
166 | }
167 | let sp_status = result.data.task_list.daily.find(item => item.task_id === 111)
168 | let video_status = sp_status.completed
169 | console.log('开始视频任务\n视频任务进度:'+sp_status.desc)
170 | if(!video_status)
171 | await ad()
172 | }
173 | }catch(e) {
174 | $.logErr(e, response);
175 | } finally {
176 | resolve();
177 | }
178 | })
179 | })
180 | }
181 | //sign_in
182 | async function sign_in(){
183 | return new Promise((resolve) => {
184 | let sign_in_url = {
185 | url: `https://${host}/luckycat/novel/v1/task/done/sign_in?${fqxsurl}`,
186 | headers: JSON.parse(fqxs),
187 | body: `{}`
188 | }
189 | $.post(sign_in_url,async(error, response, data) =>{
190 | try{
191 | if (error) {
192 | console.log("⛔️API查询请求失败❌ ‼️‼️");
193 | console.log(JSON.stringify(error));
194 | $.logErr(error);
195 | } else {
196 | const result = JSON.parse(data)
197 | if(logs)$.log(data)
198 | if(result.err_no == 0){
199 | console.log(result.err_tips+'获得'+result.data.amount+'🍅')
200 | message += result.err_tips+'获得'+result.data.amount+'🍅\n'
201 | }else{
202 | console.log('签到任务:'+result.err_tips)
203 | message += '签到任务:'+result.err_tips+'\n'
204 | console.log('\n来自执意⏰:请稍后再试,等几个小时之后试试就好了,这不是黑号,这是因为之前提交数据错误导致的\n')
205 | }
206 | }
207 | }catch(e) {
208 | $.logErr(e, response);
209 | } finally {
210 | resolve();
211 | }
212 | })
213 | })
214 | }
215 | //read
216 | async function read(){
217 | return new Promise((resolve) => {
218 | let read_url = {
219 | url: `https://${host}/luckycat/novel/v1/task/done/daily_read_${no}m?${fqxsurl}`,
220 | headers: JSON.parse(fqxs),
221 | body: `{
222 | "new_bookshelf" : true,
223 | "task_key" : "daily_read_${no}m"
224 | }`
225 | }
226 | $.post(read_url,async(error, response, data) =>{
227 | try{
228 | if (error) {
229 | console.log("⛔️API查询请求失败❌ ‼️‼️");
230 | console.log(JSON.stringify(error));
231 | $.logErr(error);
232 | } else {
233 | const result = JSON.parse(data)
234 | if(logs)$.log(data)
235 | if(result.err_no == 0){
236 | console.log(`第${no}时段阅读`+result.err_tips+'获得'+result.data.amount+'🍅\n')
237 | message += `第${no}时段阅读`+ result.err_tips+'获得'+result.data.amount+'🍅\n'
238 | }else{
239 | console.log('阅读任务:'+result.err_tips)
240 | message += '阅读任务:'+result.err_tips+'\n'
241 | console.log('\n来自执意⏰:请稍后再试,等几个小时之后试试就好了,这不是黑号,这是因为之前提交数据错误导致的\n')
242 | }
243 | }
244 | }catch(e) {
245 | $.logErr(e, response);
246 | } finally {
247 | resolve();
248 | }
249 | })
250 | })
251 | }
252 | //ad
253 | async function ad(){
254 | return new Promise((resolve) => {
255 | let ad_url = {
256 | url: `https://${host}/luckycat/novel/v1/task/done/excitation_ad?${fqxsurl}`,
257 | headers: JSON.parse(fqxs),
258 | body: `{
259 | "new_bookshelf" : true,
260 | "task_key" : "excitation_ad"
261 | }`
262 | }
263 | $.post(ad_url,async(error, response, data) =>{
264 | try{
265 | if (error) {
266 | console.log("⛔️API查询请求失败❌ ‼️‼️");
267 | console.log(JSON.stringify(error));
268 | $.logErr(error);
269 | } else {
270 | const result = JSON.parse(data)
271 | if(logs)$.log(data)
272 | if(result.err_no == 0){
273 | console.log('视频任务:'+result.err_tips+'获得'+result.data.amount+'🍅')
274 | message += '视频任务:'+result.err_tips+'获得'+result.data.amount+'🍅'
275 | }else{
276 | console.log('视频任务:'+result.err_tips)
277 | message += '视频任务:'+result.err_tips+'\n'
278 | console.log('\n来自执意⏰:请稍后再试,等几个小时之后试试就好了,这不是黑号,这个广告没找到解决办法')
279 | note = '\n来自执意⏰:请稍后再试,等几个小时之后试试就好了,这不是黑号'
280 | }
281 | }
282 | }catch(e) {
283 | $.logErr(e, response);
284 | } finally {
285 | resolve();
286 | }
287 | })
288 | })
289 | }
290 | //showmsg
291 | async function showmsg(){
292 | if(tz == 1){
293 | if ($.isNode()){
294 | await notify.sendNotify($.name,message)
295 | }else{
296 | $.msg($.jsname,'',message+note)
297 | }
298 | }else{
299 | console.log(message+note)
300 | }
301 | }
302 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
303 |
--------------------------------------------------------------------------------
/Scripts/hhz.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy_Script
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 | */
6 |
7 | const $ = new Env('好好住-领E卡')
8 | const notify = $.isNode() ?require('./sendNotify') : '';
9 | let status;
10 | status = (status = ($.getval("hhzstatus") || "3") ) > 1 ? `${status}` : ""; // 账号扩展字符
11 | var hhz_tokenArr = []
12 | var hhz_cookieArr = []
13 | var hhz_bodyArr = []
14 | var hhz_token = ($.isNode() ? process.env.hhz_token : $.getdata('hhz_token')) || '';
15 | var hhz_cookie = ($.isNode() ? process.env.hhz_cookie : $.getdata('hhz_cookie')) || '';
16 | var hhz_body = ($.isNode() ? process.env.hhz_body : $.getdata('hhz_body')) || '';
17 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
18 | var hhz_count = ($.isNode() ? hhz_tokenArr.length : $.getdata("hhz_count")) || "10";
19 |
20 | const logs =0;//0为关闭日志,1为开启
21 | var hour = ($.isNode() ? new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours() : (new Date()).getHours());
22 | var minute = ($.isNode() ? new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes() : (new Date()).getMinutes());
23 | //CK运行
24 | !(async () => {
25 | if (typeof $request !== 'undefined') {
26 | await GetCookie();
27 | } else{
28 | if($.isNode()){
29 | hhz_cookieArr = hhz_cookie.split("@")
30 | hhz_bodyArr = hhz_body.split("@")
31 | }else{
32 | hhz_cookieArr.push($.getdata(`hhz_cookie`))
33 | hhz_bodyArr.push($.getdata(`hhz_body`))
34 | for(let i = 2; i <= hhz_count; i++){
35 | hhz_cookieArr.push($.getdata(`hhz_cookie${i}`))
36 | hhz_bodyArr.push($.getdata(`hhz_body${i}`))
37 | }
38 | }
39 | if(hhz_cookie[0] && hhz_body[0]){
40 | console.log(`------------- 共${hhz_count}个账号----------------\n`)
41 | for (let i = 0; i < hhz_count; i++) {
42 | hhz_cookie = hhz_cookieArr[i];
43 | hhz_body = hhz_bodyArr[i];
44 | $.index = i + 1;
45 | console.log(`\n开始【好好住打卡${$.index}】(1.14-1.23)`)
46 | $.log("开始登陆账号\n")
47 | await Login()
48 | await $.wait(10000)
49 | await prize()
50 | }
51 | }else{
52 | $.msg("","","钢丝用户先获取cookie")
53 | }
54 | }
55 | })()
56 | .catch((e) => $.logErr(e))
57 | .finally(() => $.done())
58 |
59 |
60 | function GetCookie() {
61 | if($request && $request.url.indexOf("Login/Login") >= -1) {
62 | const hhz_cookie = $request.headers['Cookie']
63 | const hhz_body = $request.body
64 | if(hhz_cookie) $.setdata(hhz_cookie,`hhz_cookie${status}`)
65 | $.log(`[${$.jsname}] 获取好好住cookie请求: 成功,cookie: ${hhz_cookie}`)
66 | $.msg(`hhz_cookie${status}: 成功🎉`, ``)
67 | if(hhz_body) $.setdata(hhz_body,`hhz_body${status}`)
68 | $.log(`[${$.jsname}] 获取好好住body请求: 成功,body: ${hhz_body}`)
69 | $.msg(`hhz_body${status}: 成功🎉`, ``)
70 | }
71 | }
72 | //Login
73 | async function Login(){
74 | return new Promise((resolve) => {
75 | let Login_url = {
76 | url: `https://yapi.haohaozhu.cn/Login/Login`,
77 | headers: {
78 | 'Accept': '*/*',
79 | 'Accept-Encoding': 'gzip,deflate,br',
80 | 'Accept-Language': 'zh-Hans-CN;q=1',
81 | 'Connection': 'keep-alive',
82 | 'Content-Type': 'application/x-www-form-urlencoded',
83 | 'Host': 'yapi.haohaozhu.cn',
84 | 'Cookie': hhz_cookie,
85 | 'User-Agent': 'HaoHaoZhu/5.15.1 (iPhone; iOS 14.8; Scale/2.00)-h10a796d5457e24578e67d12-dide44e7da8287545491dea2b7ed5aa1915-HaoHaoZhu5.15.1-piPhone12_1-nwWIFI-k3vo9'
86 | },
87 | body: hhz_body
88 | }
89 | $.post(Login_url,async(error, response, data) =>{
90 | try{
91 | const result = JSON.parse(data)
92 | if(logs)$.log(data)
93 | if(result.code == 1){
94 | $.log("账号登录成功")
95 | let hhz_tokens = result.data.hhz_token
96 | hhz_token = "hhz_token="+hhz_tokens
97 | await Userinfo()
98 | }else{
99 | $.log(result.msg)
100 | }
101 | }catch(e) {
102 | $.logErr(e, response);
103 | } finally {
104 | resolve();
105 | }
106 | })
107 | })
108 | }
109 | //prize
110 | async function prize(){
111 | return new Promise((resolve) => {
112 | let prize_url = {
113 | url: `https://m.haohaozhu.cn/f/y/api/Activity/GetMyLucky`,
114 | headers: {
115 | 'Accept': 'application/json, text/plain, */*',
116 | 'Accept-Encoding': 'gzip,deflate,br',
117 | 'Accept-Language': 'zh-cn',
118 | 'Connection': 'keep-alive',
119 | 'Content-Type': 'application/json;charset=utf-8',
120 | 'Host': 'm.haohaozhu.cn',
121 | 'Cookie': hhz_token,
122 | 'User-Agent': 'HaoHaoZhu/5.15.1 (iPhone; iOS 14.8; Scale/2.00)-h10a796d5457e24578e67d12-dide44e7da8287545491dea2b7ed5aa1915-HaoHaoZhu5.15.1-piPhone12_1-nwWIFI-k3vo9'
123 | },
124 | //body: hhz_body
125 | }
126 | $.get(prize_url,async(error, response, data) =>{
127 | try{
128 | const result = JSON.parse(data)
129 | if(logs)$.log(data)
130 | if(result.code == 1){
131 | $.log("\n查询获得的礼品")
132 | for(let i = 0;i < result.data.length; i++){
133 | $.log("已获得"+result.data[i].lucky_info.name)
134 | $.log("兑换码"+result.data[i].lucky_info.code)
135 | }
136 | }else{
137 | $.log(result.msg)
138 | }
139 | }catch(e) {
140 | $.logErr(e, response);
141 | } finally {
142 | resolve();
143 | }
144 | })
145 | })
146 | }
147 | //Userinfo
148 | async function Userinfo(){
149 | return new Promise((resolve) => {
150 | let Userinfo_url = {
151 | url: `https://yapi.haohaozhu.cn/member/getCurrUserInfo`,
152 | headers: {
153 | 'Accept': '*/*',
154 | 'Accept-Encoding': 'gzip,deflate,br',
155 | 'Accept-Language': 'zh-Hans-CN;q=1',
156 | 'Connection': 'keep-alive',
157 | 'Content-Type': 'application/x-www-form-urlencoded',
158 | 'Host': 'yapi.haohaozhu.cn',
159 | 'Cookie': hhz_token,
160 | 'User-Agent': 'HaoHaoZhu/5.15.1 (iPhone; iOS 14.8; Scale/2.00)-h10520bc4e74c46f6bef7611-proxyhttp-dide44e7da8287545491dea2b7ed5aa1915-HaoHaoZhu5.15.1-vid_dfee44b4f1e992bb2a79e1fed0bf1971-uid13933402-piPhone12_1-nwWIFI-k3vo9'
161 | },
162 | body: ''
163 | }
164 | $.post(Userinfo_url,async(error, response, data) =>{
165 | try{
166 | const result = JSON.parse(data)
167 | if(logs)$.log(data)
168 | if(result.code == 1){
169 | var bindPhone = result.data.user_info.bindPhone;
170 | var bindweixin = result.data.user_info.bindweixin;
171 | let nick = result.data.user_info.nick;
172 | if(bindPhone == 1){
173 | console.log(`${nick}用户你好\n手机、微信已经绑定,开始打卡.....`);
174 | await Signin()
175 | }else if(bindPhone == 0){
176 | console.log(`${nick}钢丝你好\n手机号没绑定,打卡个毛线.....`)
177 | return;
178 | }
179 | }else if(result.code == 2){
180 | console.log(result.msg+`错误!!!\n`)
181 | }
182 | }catch(e) {
183 | $.logErr(e, response);
184 | } finally {
185 | resolve();
186 | }
187 | })
188 | })
189 | }
190 | //Sign
191 | async function Signin(){
192 | let is_signin_daysArr;
193 | return new Promise((resolve) => {
194 | let Signin_url = {
195 | url: `https://m.haohaozhu.cn/growth/activity/improve-frequency/signIn`,
196 | headers: {
197 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
198 | 'Accept-Encoding': 'gzip,deflate,br',
199 | 'Accept-Language': 'zh-cn',
200 | 'Connection': 'keep-alive',
201 | 'Host': 'm.haohaozhu.cn',
202 | 'Cookie': hhz_token,
203 | 'User-Agent': 'HaoHaoZhu/5.15.1 (iPhone; iOS 14.8; Scale/2.00)-h10520bc4e74c46f6bef7611-proxyhttp-dide44e7da8287545491dea2b7ed5aa1915-HaoHaoZhu5.15.1-vid_dfee44b4f1e992bb2a79e1fed0bf1971-uid13933402-piPhone12_1-nwWIFI-k3vo9'
204 | }
205 | }
206 | $.get(Signin_url,async(error, response, data) =>{
207 | try{
208 | var signininfo = data.match(/signinInfo":([\s\S]*?),"signinList/g);
209 | //$.log(signininfo)
210 |
211 | var signinList = data.match((/signinList":([\s\S]*?),"fullOriginalUrl/g))+"";
212 | //$.log(signinList)
213 | if(data.indexOf('is_bind_phone') > -1){
214 | $.log("\n打卡成功")
215 | }else{
216 | let statuss = data.match(/msg":"([\s\S]*?)"/g)+""
217 | let statusss = statuss.replace(/msg":"/,"").replace(`"`,"")
218 | console.log("\n"+statusss)
219 | }
220 | let signin_total_days = data.match(/signin_total_day":\d/)+""
221 | let signin_total_day = signin_total_days.replace(/signin_total_day":/,"")
222 |
223 | console.log(`打卡4天获得20E卡\n\n已经打卡日期为:`)
224 |
225 | //$.log(signin_total_day)
226 | let signinLists = signinList.split("},")
227 | for(let i = 0; i < signinLists.length; i++){
228 | if(signinLists[i].indexOf(`is_signin":1`) > 0){
229 | let dates = signinLists[i].match(/date":"\d+-\d+-\d+/)+""
230 | let date = dates.replace(/date":"/,"")
231 | $.log(date)
232 | }
233 | }
234 | }catch(e) {
235 | $.logErr(e, response);
236 | } finally {
237 | resolve();
238 | }
239 | })
240 | })
241 | }
242 | //showmsg
243 | async function showmsg() {
244 | if (tz == 1) {
245 | if ($.isNode()) {
246 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
247 | await notify.sendNotify($.name, message)
248 | } else {
249 | $.log(message)
250 | }
251 | } else {
252 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
253 | $.msg($.jsname, '', message)
254 | } else {
255 | $.log(message)
256 | }
257 | }
258 | } else {
259 | $.log(message)
260 | }
261 | }
262 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
263 |
--------------------------------------------------------------------------------
/Scripts/jxcollect.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy_Script
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 |
6 | 转载留个名字,谢谢
7 | #本脚本只为昨天自己京喜工厂不自动收取而出发,看群中好多朋友同样问题困扰,做成脚本,没有任何别的用意
8 | #ck共分为jxcollecturl
9 | 请进入京喜app找到京喜工厂进入收取一次电力提示获取成功
10 | ⚠️是京喜app⚠️是京喜app⚠️是京喜app
11 |
12 | 作者:执意Ariszy
13 |
14 | [mitm]
15 | hostname = m.jingxi.com
16 | #圈x
17 | [rewrite local]
18 | https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity? url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js
19 |
20 |
21 | #loon
22 | http-request https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity? script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js, requires-body=true, timeout=10, tag=京喜工厂电力收取
23 |
24 |
25 | #surge
26 | 京喜工厂电力收取 = type=http-request,pattern=https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity?,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jxcollect.js,script-update-interval=0
27 | */
28 | const $ = new Env('京喜工厂收取电力')
29 | const notify = $.isNode() ?require('./sendNotify') : '';
30 | let status;
31 | status = (status = ($.getval("jxcollectstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
32 | jxcollecturlArr = [],cookiesArr = []
33 | let jxcollecturl = $.getdata('jxcollecturl')
34 |
35 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item);
36 |
37 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
38 | const invite=1;//新用户自动邀请,0关闭,1默认开启
39 | const logs =0;//0为关闭日志,1为开启
40 | var hour=''
41 | var minute=''
42 | if ($.isNode()) {
43 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
44 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
45 | }else{
46 | hour = (new Date()).getHours();
47 | minute = (new Date()).getMinutes();
48 | }
49 | //CK运行
50 | let isGetCookie = typeof $request !== 'undefined'
51 | if (isGetCookie) {
52 | GetCookie();
53 | $.done()
54 | }
55 | if ($.isNode()) {
56 | if (process.env.JXCOLLECTURL && process.env.JXCOLLECTURL.indexOf('#') > -1) {
57 | jxcollecturl = process.env.JXCOLLECTURL.split('#');
58 | console.log(`您选择的是用"#"隔开\n`)
59 | }
60 | else if (process.env.JXCOLLECTURL && process.env.JXCOLLECTURL.indexOf('\n') > -1) {
61 | jxcollecturl = process.env.JXCOLLECTURL.split('\n');
62 | console.log(`您选择的是用换行隔开\n`)
63 | } else {
64 | jxcollecturl = process.env.JXCOLLECTURL.split()
65 | };
66 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
67 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
68 | } else {
69 | jxcollecturlArr.push($.getdata('jxcollecturl'))
70 | let jxcollectcount = ($.getval('jxcollectcount') || '1');
71 | for (let i = 2; i <= jxcollectcount; i++) {
72 | jxcollecturlArr.push($.getdata(`jxcollecturl${i}`))
73 | }
74 | }
75 | !(async () => {
76 | if (!jxcollecturlArr[0] && !jxcollectheaderArr[0]) {
77 | $.msg($.name, '【提示】请先获取京喜工厂电力收取一cookie')
78 | return;
79 | }
80 | console.log(`------------- 共${jxcollecturlArr.length}账号----------------\n`)
81 | for (let i = 0; i < jxcollecturlArr.length; i++) {
82 | if (jxcollecturlArr[i]) {
83 | message = ''
84 | jxcollecturl = jxcollecturlArr[i];
85 | cookie = cookiesArr[i];
86 | $.index = i + 1;
87 | console.log(`\n开始【京喜工厂电力收取${$.index}】`)
88 | await collect()
89 | await showmsg()
90 | }
91 | }
92 | })()
93 | .catch((e) => $.logErr(e))
94 | .finally(() => $.done())
95 |
96 |
97 | function GetCookie() {
98 | if($request&&$request.url.indexOf("CollectCurrentElectricity")>=0) {
99 | const jxcollecturl = $request.url.split('?')[1]
100 | if(jxcollecturl) $.setdata(jxcollecturl,`jxcollecturl${status}`)
101 | $.log(`[${$.jsname}] 获取jxcollecturl请求: 成功,jxcollecturl: ${jxcollecturl}`)
102 | $.msg(`jxcollecturl${status}: 成功🎉`, ``)
103 |
104 | const jxcollectheader = JSON.stringify($request.headers)
105 | if(jxcollectheader) $.setdata(jxcollectheader,`jxcollectheader${status}`)
106 | $.log(`[${$.jsname}] 获取jxcollectheader请求: 成功,jxcollectheader: ${jxcollectheader}`)
107 | $.msg(`jxcollectheader${status}: 成功🎉`, ``)
108 | }
109 | }
110 | async function collect(){
111 | let url = jxcollecturl.replace(/doubleflag=\d/,'doubleflag=1')
112 | $.uri = $.getval("jxcollectdoublenum") == 1 ? url : jxcollecturl
113 |
114 | let name = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1])
115 | return new Promise((resolve) => {
116 | let collect_url = {
117 | url: `https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity?`+$.uri,
118 | headers: {
119 | "Accept": "*/*",
120 | "Accept-Encoding": "gzip, deflate, br",
121 | "Accept-Language": "zh-cn",
122 | "Connection": "keep-alive",
123 | "Cookie": `${cookie}`,
124 | "Host": "wq.jd.com",
125 | "Referer": "https://wqsd.jd.com/pingou/dream_factory/index.html",
126 | "User-Agent": "jdapp;iPhone;9.4.6;14.4;0bcbcdb2a68f16cf9c9ad7c9b944fd141646a849;network/4g;ADID/BF650B20-A81A-4172-98EE-064834D97D6E;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone12,1;addressid/2377723269;supportBestPay/0;appBuild/167618;jdSupportDarkMode/0;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"}
127 | }
128 | $.get(collect_url,async(error, response, data) =>{
129 | try{
130 | //const result = JSON.parse(data)
131 | if(logs)$.log(data)
132 | let number = data.match(/CollectElectricity":\d+/)+''
133 | let num = number.replace(/CollectElectricity":/,'')
134 | console.log(`账号:`+name+"\n🎈本次收取电力"+num+'\n')
135 | message = `账号:`+name+"\n🎈本次收取电力"+num
136 | }catch(e) {
137 | $.logErr(e, response);
138 | } finally {
139 | resolve();
140 | }
141 | })
142 | })
143 | }
144 |
145 | //showmsg
146 | //boxjs设置tz=1,在12点<=20和23点>=40时间段通知,其余时间打印日志
147 |
148 | async function showmsg() {
149 | if (tz == 1) {
150 | if ($.isNode()) {
151 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
152 | await notify.sendNotify($.name, message)
153 | } else {
154 | $.log(message)
155 | }
156 | } else {
157 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
158 | $.msg($.jsname, '', message)
159 | } else {
160 | $.log(message)
161 | }
162 | }
163 | } else {
164 | $.log(message)
165 | }
166 | }
167 | function jsonParse(str) {
168 | if (typeof str == "string") {
169 | try {
170 | return JSON.parse(str);
171 | } catch (e) {
172 | console.log(e);
173 | $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie')
174 | return [];
175 | }
176 | }
177 | }
178 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
179 |
--------------------------------------------------------------------------------
/Scripts/klcg.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | /**
4 | 快乐猜歌每次运行猜歌答题10道,大约需要40次就会达到400,10元标准,每天运行3次左右打卡就好,0.3往上,需要邀请人提现,有能力要请人就是了,没能力普通提现0.3也不错,每天0.3
5 |
6 | ⚠️多开必黑,un越狱建议屏蔽
7 |
8 | 没有循环,运行太多会炸,几十次就会达到红包几百
9 |
10 | [rewrite_local]
11 | #快乐猜歌无限刷
12 | https://bp-api.coohua.com/bubuduo-klcg/game/answer/reward? url script-request-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/klcg.js
13 |
14 |
15 | [MITM]
16 |
17 | hostname = bp-api.coohua.com
18 |
19 | */
20 |
21 |
22 |
23 | const $ = new Env('快乐猜歌无限刷');
24 | let status;
25 | status = (status = ($.getval("ygkcstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
26 | const ygkcurlArr = [], ygkchdArr = [],ygkccount = ''
27 | let num = ($.getval('num') || 5) //循环体
28 | let times = Math.round(Date.now() / 1000)
29 | let ygkcurl = $.getdata('ygkcurl')
30 | let ygkchd = $.getdata('ygkchd')
31 | let ids,anawer,d,a;
32 | !(async () => {
33 | if (typeof $request !== "undefined") {
34 | await ygkcck()
35 |
36 | } else {ygkcurlArr.push($.getdata('ygkcurl'))
37 | ygkchdArr.push($.getdata('ygkchd'))
38 | let ygkccount = ($.getval('ygkccount') || '1');
39 | for (let i = 2; i <= ygkccount; i++) {
40 | ygkcurlArr.push($.getdata(`ygkcurl${i}`))
41 | ygkchdArr.push($.getdata(`ygkchd${i}`))
42 | }
43 | console.log(`------------- 共${ygkchdArr.length}个账号-------------\n`)
44 | for (let i = 0; i < ygkchdArr.length; i++) {
45 | if (ygkchdArr[i]) {
46 | let turn = 0;
47 | ygkcurl = ygkcurlArr[i];
48 | ygkchd = ygkchdArr[i];
49 | $.index = i + 1;
50 | console.log(`\n开始【快乐猜歌${$.index}】`)
51 | await search();
52 | await control();
53 | turn ++;
54 | }
55 | }}
56 |
57 | })()
58 | .catch((e) => $.logErr(e))
59 | .finally(() => $.done())
60 | //数据获取
61 |
62 |
63 | function ygkcck() {
64 | if ($request.url.indexOf("reward") > -1) {
65 | const ygkcurl = $request.url
66 | if(ygkcurl) $.setdata(ygkcurl,`ygkcurl${status}`)
67 | $.log(ygkcurl)
68 | const ygkchd = JSON.stringify($request.headers)
69 | if(ygkchd) $.setdata(ygkchd,`ygkchd${status}`)
70 | $.log(ygkchd)
71 | $.msg($.name,"",'快乐猜歌'+`${status}` +'数据获取成功!')
72 | }
73 | }
74 | async function control(){
75 | for(let i = 0; i < ids.length; i++){
76 | d = ids[i].replace(/id":/,"")
77 | a = answer[i].replace(/correct":/,"")
78 | $.log(d+"@"+a)
79 | await wkzztx();
80 | await $.wait(100)
81 | }
82 | }
83 | function search(timeout = 0) {
84 | return new Promise((resolve) => {
85 |
86 | let url = {
87 | url : "https://bp-api.coohua.com/bubuduo-klcg/game/res/list?"+ygkcurl.indexOf("?")[1],
88 | headers : JSON.parse(ygkchd),
89 |
90 | }
91 | $.get(url, async (err, resp, data) => {
92 | try {
93 | const result = JSON.parse(data)
94 | if(result.code == 0){
95 | $.log(`\n${data}`)
96 | ids = data.match(/id":\d+/g)
97 |
98 | answer = data.match(/correct":\d/g)
99 |
100 | $.log(id)
101 | $.log(answer)
102 | await $.wait(100);
103 |
104 | } else {
105 | await $.wait(100);
106 | sjs = sjs+1
107 | console.log(result.message)
108 |
109 | }
110 |
111 | } catch (e) {
112 | //$.logErr(e, resp);
113 | } finally {
114 | resolve()
115 | }
116 | },timeout)
117 | })
118 | }
119 |
120 | function wkzztx(timeout = 0) {
121 | return new Promise((resolve) => {
122 |
123 | let id = ygkcurl.replace(/id=\d+&index=\d/,`id=${d}&index=${a}`)
124 | //$.log(id)
125 | let url = {
126 | url : id,
127 | headers : JSON.parse(ygkchd),
128 |
129 | }
130 | $.get(url, async (err, resp, data) => {
131 |
132 | try {
133 | const result = JSON.parse(data)
134 | if(result.code == 0){
135 | $.log(`\n${data}`)
136 | //$done()
137 | sjs = sjs+1
138 | await $.wait(100);
139 |
140 | } else {
141 | await $.wait(100);
142 | sjs = sjs+1
143 | console.log(result.message)
144 |
145 | }
146 |
147 | } catch (e) {
148 | //$.logErr(e, resp);
149 | } finally {
150 | resolve()
151 | }
152 | },timeout)
153 | })
154 | }
155 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
156 |
--------------------------------------------------------------------------------
/Scripts/qqMsgDel.js:
--------------------------------------------------------------------------------
1 | /*
2 | https://h5.qzone.qq.com/message/index? url script-request-header qqMsgDel.js
3 | https://h5.qzone.qq.com/webapp/json/get_message_list/getApplist? url script-request-body qqMsgDel.js
4 |
5 | hostname = h5.qzone.qq.com
6 | */
7 | const $ = new Env('qq空间批量删除留言')
8 | const notify = $.isNode() ?require('./sendNotify') : '';
9 | let status;
10 | var listArr,msgs;
11 | status = (status = ($.getval("cglmstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符
12 | let qqdelurl = $.getdata('qqdelurl')
13 | let qqlisturl = $.getdata('qqlisturl')
14 | let qqdelheader = $.getdata('qqdelheader')
15 | let qqlistheader = $.getdata('qqlistheader')
16 | let qqlistbody = $.getdata('qqlistbody')
17 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
18 | const invite=1;//新用户自动邀请,0关闭,1默认开启
19 | const logs =0;//0为关闭日志,1为开启
20 | var hour=''
21 | var minute=''
22 | if ($.isNode()) {
23 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
24 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
25 | }else{
26 | hour = (new Date()).getHours();
27 | minute = (new Date()).getMinutes();
28 | }
29 | //CK运行
30 | let isGetCookie = typeof $request !== 'undefined'
31 | if (isGetCookie) {
32 | GetCookie();
33 | $.done()
34 | }
35 |
36 | !(async () => {
37 | if (!qqlistheader) {
38 | $.msg($.name, '【提示】请先获取Cookie')
39 | return;
40 | }
41 | console.log(`\n开始【删除qq留言】`)
42 | await list()
43 | })()
44 | .catch((e) => $.logErr(e))
45 | .finally(() => $.done())
46 |
47 |
48 | function GetCookie() {
49 | if($request&&$request.url.indexOf("message/index")>=0) {
50 | const qqdelurl = $request.url.split(`?`)[1]
51 | if(qqdelurl) $.setdata(qqdelurl,`qqdelurl`)
52 | $.log(`[${$.jsname}] 获取qqdelurl请求: 成功,qqdelurl: ${qqdelurl}`)
53 | $.msg(`qqdelurl: 成功🎉`, ``)
54 |
55 |
56 | }
57 | if($request&&$request.url.indexOf("get_message_list/getApplist")>=0) {
58 | const qqlisturl = $request.url.split(`?`)[1]
59 | if(qqlisturl) $.setdata(qqlisturl,`qqlisturl`)
60 | $.log(`[${$.jsname}] 获取qqlisturl请求: 成功,qqlisturl: ${qqlisturl}`)
61 | $.msg(`qqlisturl: 成功🎉`, ``)
62 | const qqlistheader = JSON.stringify($request.headers)
63 | if(qqlistheader) $.setdata(qqlistheader,`qqlistheader`)
64 | $.log(`[${$.jsname}] 获取qqlistheader请求: 成功,qqlistheader: ${qqlistheader}`)
65 | $.msg(`qqlistheader: 成功🎉`, ``)
66 | const qqlistbody = $request.body
67 | if(qqlistbody) $.setdata(qqlistbody,`qqlistbody`)
68 | $.log(`[${$.jsname}] 获取qqlistbody请求: 成功,qqlistbody: ${qqlistbody}`)
69 | $.msg(`qqlistbody: 成功🎉`, ``)
70 | }
71 | }
72 | async function list(){
73 | return new Promise((resolve) => {
74 | let list_url = {
75 | url: `https://h5.qzone.qq.com/webapp/json/get_message_list/getApplist?${qqlisturl}`,
76 | headers: JSON.parse(qqlistheader),
77 | body: qqlistbody
78 | }
79 | $.post(list_url,async(error, response, data) =>{
80 | try{
81 | const result = JSON.parse(data)
82 | if(logs)$.log(data)
83 | if(result.ret == 0){
84 | listArr = data.match(/cellid":"\d+/g)
85 | await control()
86 | }
87 |
88 | }catch(e) {
89 | $.logErr(e, response);
90 | } finally {
91 | resolve();
92 | }
93 | })
94 | })
95 | }
96 |
97 | async function deletes(cellid){
98 | let url = qqdelurl.replace(/cellid=\d+/,`cellid=`+cellid)
99 | return new Promise((resolve) => {
100 | let deletes_url = {
101 | url: `https://h5.qzone.qq.com/message/index?${url}`,
102 | headers: JSON.parse(qqlistheader),
103 | }
104 | $.get(deletes_url,async(error, response, data) =>{
105 | try{
106 | const result = JSON.parse(data)
107 | $.log(data)
108 | if(result.data.ret == 0){
109 | $.log("删除成功\n")
110 | //await list()
111 | }
112 | else
113 | $.log(result.data.msg+"\n")
114 | }catch(e) {
115 | $.logErr(e, response);
116 | } finally {
117 | resolve();
118 | }
119 | })
120 | })
121 | }
122 | async function control(){
123 | for(let i = 0; i < listArr.length; i++){
124 | let lists = listArr[i].replace(/cellid":"/,"")
125 | //let msged = msgs[i+1].replace(/summary": "/,"")
126 | $.log("开始删除"+lists+"\n")
127 | await $.wait(1000)
128 | await deletes(lists)
129 | }
130 | }
131 |
132 |
133 | //showmsg
134 | //boxjs设置tz=1,在12点<=20和23点>=40时间段通知,其余时间打印日志
135 |
136 | async function showmsg() {
137 | if (tz == 1) {
138 | if ($.isNode()) {
139 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
140 | await notify.sendNotify($.name, message)
141 | } else {
142 | $.log(message)
143 | }
144 | } else {
145 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
146 | $.msg(zhiyi, '', message)
147 | } else {
148 | $.log(message)
149 | }
150 | }
151 | } else {
152 | $.log(message)
153 | }
154 | }
155 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
156 |
--------------------------------------------------------------------------------
/Scripts/xjaxc.js:
--------------------------------------------------------------------------------
1 | /*
2 | 软件名称:小鸡爱消除
3 | 商店搜索下载
4 |
5 | cron自己设置,一分钟一次,运行两个小时吧,久了怕黑号。
6 | [rewrite_local]
7 | #重写
8 |
9 | http://api-xjaxc.chenglie.tech/game/updateData url script-request-header xjaxc2.js
10 | [MITM]
11 | hostname = api-xjaxc.chenglie.tech
12 | */
13 |
14 |
15 | const $ = new Env('小鸡爱消除')
16 | const notify = $.isNode() ?require('./sendNotify') : '';
17 | $.idx = ($.idx = ($.getval("xjsetting") || "1") - 1) > 0 ? `${$.idx + 1}` : ""; // 账号扩展字符
18 | const xjheadersArr = []
19 | let xjheaders = $.getdata('xjheaders')
20 | let txbody = `config_id=1` //1=提现3毛 2=五毛 3=1块。默认三毛吧,其他审核,黑号没必要。。
21 | //var articles =''
22 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
23 | const invit=1;//新用户自动邀请,0关闭,1默认开启
24 | const logs =0;//0为关闭日志,1为开启
25 | var hour=''
26 | var minute=''
27 | if ($.isNode()) {
28 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
29 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
30 | }else{
31 | hour = (new Date()).getHours();
32 | minute = (new Date()).getMinutes();
33 | }
34 | //CK运行
35 |
36 | let isGetCookie = typeof $request !== 'undefined'
37 | if (isGetCookie) {
38 | GetCookie();
39 | $.done()
40 | }
41 | if ($.isNode()) {
42 | if (process.env.XJHEADERS && process.env.XJHEADERS.indexOf('#') > -1) {
43 | xjheaders = process.env.XJHEADERS.split('#');
44 | console.log(`您选择的是用"#"隔开\n`)
45 | }
46 | else if (process.env.XJHEADERS && process.env.XJHEADERS.indexOf('\n') > -1) {
47 | xjheaders = process.env.XJHEADERS.split('\n');
48 | console.log(`您选择的是用换行隔开\n`)
49 | } else {
50 | xjheaders = process.env.XJHEADERS.split()
51 | };
52 |
53 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
54 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
55 | } else {
56 | xjheadersArr.push($.getdata('xjheaders'))
57 |
58 | let xjcount = ($.getval('xjcount') || '1');
59 | for (let i = 2; i <= xjcount; i++) {
60 | xjheadersArr.push($.getdata(`xjheaders${i}`))
61 |
62 | }
63 | }
64 | !(async () => {
65 | if (!xjheadersArr[0]) {
66 | $.msg($.name, '【提示】请先获取小鸡爱消除一cookie')
67 | return;
68 | }
69 | console.log(`------------- 共${xjheadersArr.length}个账号----------------\n`)
70 | for (let i = 0; i < xjheadersArr.length; i++) {
71 | if (xjheadersArr[i]) {
72 | other = ''
73 | xjheaders = xjheadersArr[i];
74 | $.index = i + 1;
75 | console.log(`\n开始【小鸡爱消除${$.index}】`)
76 | await add_hb()
77 | await getUser()
78 |
79 |
80 | }
81 | }
82 | })()
83 | .catch((e) => $.logErr(e))
84 | .finally(() => $.done())
85 | function GetCookie() {
86 | if($request&&$request.url.indexOf("updateData")>=0) {
87 | const xjheader = JSON.stringify($request.headers)
88 | if (xjheader) $.setdata(xjheader,
89 | `xjheaders${$.idx}`)
90 | $.log(`[${$.jsname}] 获取红包请求: 成功,xjheader: ${xjheaders}`)
91 | $.msg(`获取xjheaders: 成功🎉`, ``)
92 | }
93 | }
94 | async function add_hb() {
95 | return new Promise((resolve, reject) => {
96 | let add_hb ={
97 | url: `http://api-xjaxc.chenglie.tech/game/updateData`,
98 | headers :JSON.parse(xjheaders),
99 | body: `field=online_hb&add_hb=40`
100 | }
101 |
102 | $.post(add_hb,(error, response, data) =>{
103 | const result = JSON.parse(data)
104 | if(logs) $.log(data)
105 | if(result.code == 200)
106 | $.log(result.message+"\n红包领取成功+40\n")
107 | else
108 | $.log(result.message+"\n红包领取失败,可能是当日领取上限\n")
109 | resolve()
110 | })
111 | })
112 | }
113 |
114 | async function withdraw() {
115 |
116 | return new Promise((resolve, reject) => {
117 | let withdraws ={
118 | url: `http://api-xjaxc.chenglie.tech/game/doWithdraw`,
119 | headers :JSON.parse(xjheaders),
120 | body: `${txbody}`
121 | }
122 |
123 | $.post(withdraws,async(error, response, data) =>{
124 | const result = JSON.parse(data)
125 | if(logs)$.log(data)
126 | if(result.code == 200){
127 | $.log(result.message+"\n")
128 | }else{
129 | if(result.message.indexOf("余额不足") > -1){
130 | $.log(result.message+"\n")
131 |
132 | }else if(result.message.indexOf("提现次数") > -1){
133 | $.log("次数用完,如需继续提现请换其他金额\n")
134 | }else{
135 | $.log("提现失败!"+result.message+"\n")
136 | }
137 | }
138 | resolve()
139 | })
140 | })
141 | }
142 |
143 | async function getUser() {
144 |
145 | return new Promise((resolve, reject) => {
146 | let getUser ={
147 | url: `http://api-xjaxc.chenglie.tech/game/getUser`,
148 | headers :JSON.parse(xjheaders),
149 | body: ``
150 | }
151 |
152 | $.post(getUser,async(error, response, data) =>{
153 | const result = JSON.parse(data)
154 | if(logs)$.log(data)
155 | if(result.code == 200){
156 | $.log(`------------- 运行日志----------------\n\n`)
157 | $.log(`吊毛用户:${result.data.nick_name} \n吊毛的ID:${result.data.user_id}`+"\n"+`吊毛账户红包余额:${result.data.hb} \n吊毛已刷取红包总数:${result.data.total_hb}`+"\n")
158 | }
159 | if(result.data.hb >= 3000){
160 | $.log(`当前余额:${result.data.hb} 已满足提现0.3,去帮吊毛用户提现。`+"\n" )
161 | await withdraw()
162 |
163 | }
164 | resolve()
165 | })
166 | })
167 | }
168 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
169 |
--------------------------------------------------------------------------------
/Scripts/zcy.js:
--------------------------------------------------------------------------------
1 | /*
2 | tgchannel:https://t.me/Ariszy8028
3 | github:https://github.com/Ariszy/script
4 | boxjs:https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json
5 | 转载留个名字,谢谢
6 | 邀请码:6EYH02
7 | 谢谢
8 | 作者:执意Ariszy
9 | 目前只有走路,看视频
10 | 脚本初成,非专业人士制作,欢迎指正
11 | #在首页刷新步数记录获取ck zcyheader和zcybody
12 | [mitm]
13 | hostname = step-money.quanxiangweilai.cn
14 | #圈x
15 | [rewrite local]
16 | https:\/\/step-money\.quanxiangweilai\.cn\/api\/step_count\/sync url script-request-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zcy.js
17 | #loon
18 | http-request https:\/\/step-money\.quanxiangweilai\.cn\/api\/step_count\/sync script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zcy.js, requires-body=true, timeout=10, tag=走财运
19 | #surge
20 | 走财运 = type=http-request,pattern=https:\/\/step-money\.quanxiangweilai\.cn\/api\/step_count\/sync,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/zcy.js,script-update-interval=0
21 | */
22 | const $ = new Env('走财运')
23 | const notify = $.isNode() ?require('./sendNotify') : '';
24 | $.idx = ($.idx = ($.getval("zcysetting") || "1") - 1) > 0 ? `${$.idx + 1}` : ""; // 账号扩展字符
25 | const zcyheaderArr = [],zcybodyArr = []
26 | let zcyheader = $.getdata('zcyheader')
27 | let zcybody = $.getdata('zcybody')
28 | let tz = ($.getval('tz') || '1');//0关闭通知,1默认开启
29 | const invite=1;//新用户自动邀请,0关闭,1默认开启
30 | const logs =0;//0为关闭日志,1为开启
31 | var hour=''
32 | var minute=''
33 | let now_step,step,locate,now_date;
34 | if ($.isNode()) {
35 | hour = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getHours();
36 | minute = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 ).getMinutes();
37 | }else{
38 | hour = (new Date()).getHours();
39 | minute = (new Date()).getMinutes();
40 | }
41 | //CK运行
42 | let isGetCookie = typeof $request !== 'undefined'
43 | if (isGetCookie) {
44 | GetCookie();
45 | $.done()
46 | }
47 | if ($.isNode()) {
48 | if (process.env.ZCYHEADER && process.env.ZCYHEADER.indexOf('#') > -1) {
49 | zcyheader = process.env.ZCYHEADER.split('#');
50 | console.log(`您选择的是用"#"隔开\n`)
51 | }
52 | else if (process.env.ZCYHEADER && process.env.ZCYHEADER.indexOf('\n') > -1) {
53 | zcyheader = process.env.ZCYHEADER.split('\n');
54 | console.log(`您选择的是用换行隔开\n`)
55 | } else {
56 | zcyheader = process.env.ZCYHEADER.split()
57 | };
58 | if (process.env.ZCYBODY && process.env.ZCYBODY.indexOf('#') > -1) {
59 | zcybody = process.env.ZCYBODY.split('#');
60 | console.log(`您选择的是用"#"隔开\n`)
61 | }
62 | else if (process.env.ZCYBODY && process.env.ZCYBODY.indexOf('\n') > -1) {
63 | zcybody = process.env.ZCYBODY.split('\n');
64 | console.log(`您选择的是用换行隔开\n`)
65 | } else {
66 | zcybody = process.env.ZCYBODY.split()
67 | };
68 | console.log(`============ 脚本执行-国际标准时间(UTC):${new Date().toLocaleString()} =============\n`)
69 | console.log(`============ 脚本执行-北京时间(UTC+8):${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toLocaleString()} =============\n`)
70 | } else {
71 | zcyheaderArr.push($.getdata('zcyheader'))
72 | zcybodyArr.push($.getdata('zcybody'))
73 | let zcycount = ($.getval('zcycount') || '1');
74 | for (let i = 2; i <= zcycount; i++) {
75 | zcyheaderArr.push($.getdata(`zcyheader${i}`))
76 | zcybodyArr.push($.getdata(`zcybody${i}`))
77 | }
78 | }
79 | !(async () => {
80 | if (!zcyheaderArr[0]) {
81 | $.msg($.name, '【提示】请先获取走财运一cookie')
82 | return;
83 | }
84 | console.log(`------------- 共${zcyheaderArr.length}个账号----------------\n`)
85 | for (let i = 0; i < zcyheaderArr.length; i++) {
86 | if (zcyheaderArr[i]) {
87 | message = ''
88 | zcyheader = zcyheaderArr[i];
89 | zcybody = zcybodyArr[i];
90 | $.index = i + 1;
91 | console.log(`\n开始【走财运${$.index}】`)
92 | await sign_in()
93 | await getNowFormatDate()
94 | await get_step()
95 | await modify_step()
96 | await submit_step()
97 | await step_rewards()
98 | await modify_locate()
99 | await video_rewards()
100 | await showmsg()
101 | }
102 | }
103 | })()
104 | .catch((e) => $.logErr(e))
105 | .finally(() => $.done())
106 |
107 |
108 | function GetCookie() {
109 | if($request&&$request.url.indexOf("step_count")>=0) {
110 | const zcyheader = JSON.stringify($request.headers)
111 | if(zcyheader) $.setdata(zcyheader,`zcyheader${$.idx}`)
112 | $.log(`[${jsname}] 获取stepheader请求: 成功,zcyheader: ${zcyheader}`)
113 | $.msg(`zcyheader${$.idx}: 成功🎉`, ``)
114 | }
115 | if($request&&$request.url.indexOf("step_count")>=0) {
116 | const zcybody = $request.body
117 | if(zcybody) $.setdata(zcybody,`zcybody${$.idx}`)
118 | $.log(`[${jsname}] 获取stepbody请求: 成功,zcybody: ${zcybody}`)
119 | $.msg(`zcybody${$.idx}: 成功🎉`, ``)
120 | }
121 | }
122 |
123 | //sign_in
124 | async function sign_in(){
125 | let account_id = zcybody.match(/\d+/)
126 | return new Promise((resolve) => {
127 | let sign_in_url = {
128 | url: 'https://step-money.quanxiangweilai.cn/api/sign_in',
129 | headers: JSON.parse(zcyheader),
130 | body: `account_id=${account_id}`
131 | }
132 | $.post(sign_in_url,async(error, response, data) =>{
133 | try{
134 | const result = JSON.parse(data)
135 | if(logs)$.log(data)
136 | if(result.error_code == 0 && result.message == 'success'){
137 | console.log('🎈'+result.data.date+result.message+'!!获得:'+result.data.sign_bonus+'元\n')
138 | message += '🎈'+result.data.date+result.message+'!!获得:'+result.data.sign_bonus+'元\n'
139 | }else{
140 | message += '👀'+result.message+"今日已签到完成\n"
141 | }
142 | }catch(e) {
143 | $.logErr(e, response);
144 | } finally {
145 | resolve();
146 | }
147 | })
148 | })
149 | }
150 | //get_step
151 | async function get_step(){
152 | let account_id = zcybody.match(/\d+/)
153 | return new Promise((resolve) => {
154 | let get_stepurl = {
155 | url: `https://step-money.quanxiangweilai.cn/api/step_range?account_id=${account_id}&days=1`,
156 | headers: JSON.parse(zcyheader),
157 | }
158 | $.get(get_stepurl,async(error, response, data) =>{
159 | try{
160 | const result = JSON.parse(data)
161 | if(logs)$.log(data)
162 | if(result.error_code == 0 && result.message == 'success'){
163 | let steps = result.data.steps
164 | let old_step = JSON.stringify(steps).replace(/\{|}/g,'').match(/\d+$/)
165 | console.log('🎈'+result.message+'!! '+old_step+'\n')
166 | now_step = old_step
167 | message += '🎈'+result.message+'!! 当前步数:'+old_step+'\n'
168 | }else{
169 | message += '👀'+result.message+"\n"
170 | }
171 | }catch(e) {
172 | $.logErr(e, response);
173 | } finally {
174 | resolve();
175 | }
176 | })
177 | })
178 | }
179 | //modify_step
180 | async function modify_step(){
181 | if(now_step < 1000){
182 | step = 1000
183 | }
184 | else if(now_step < 40000 && now_step >= 1000){
185 | step = Number(now_step) + 1000
186 | }
187 | /*else if(now_step < 40000 && now_step % 1000 == 0){
188 | step == Number(now_step)
189 | }*/
190 | else if(now_step >= 40000){
191 | //step = Number(now_step)+1000
192 | //$.log(step)
193 | $.msg("今天步数已经达到最大奖励程度,结束提交")
194 | $.done();
195 | }
196 | }
197 | //submit step
198 | async function submit_step(){
199 | let stepbody = zcybody.replace(/count=\d+.*/,`count=${step}`)
200 | //$.log(step)
201 | return new Promise((resolve) => {
202 | let submit_step_url = {
203 | url: 'https://step-money.quanxiangweilai.cn/api/step_count/sync',
204 | headers: JSON.parse(zcyheader),
205 | body: stepbody
206 | }
207 | $.post(submit_step_url,async(error, response, data) =>{
208 | try{
209 | const result = JSON.parse(data)
210 | if(logs)$.log(data)
211 | console.log('🎈成功提交步数:'+result.today_step_count+'!! 今天余额:'+result.today_bonus_total+'\n')
212 | message += '🎈成功提交步数:'+result.today_step_count+'!! 今天余额:'+result.today_bonus_total+'\n'
213 | }catch(e) {
214 | $.logErr(e, response);
215 | } finally {
216 | resolve();
217 | }
218 | })
219 | })
220 | }
221 | //step_rewards
222 | async function step_rewards(){
223 | let step_rewards_body = zcybody.replace(/device_step_count=\d+.*/,"bonus_type=bonus")
224 | $.log(step_rewards_body)
225 | return new Promise((resolve) => {
226 | let video_rewardsurl = {
227 | url: 'https://step-money.quanxiangweilai.cn/api/gain_bonus',
228 | headers: JSON.parse(zcyheader),
229 | body: step_rewards_body
230 | }
231 | $.post(video_rewardsurl,async(error, response, data) =>{
232 | try{
233 | const result = JSON.parse(data)
234 | if(logs)$.log(data)
235 | if(result.error_code == 0){
236 | console.log('🎈'+result.message+',成功获得:'+result.data.money+'\n')
237 | message += '🎈'+result.message+',成功获得:'+result.data.money+'\n'
238 | }else{
239 | console.log('👀'+result.message+'\n')
240 | message += '👀'+result.message+"\n"
241 | }
242 | }catch(e) {
243 | $.logErr(e, response);
244 | } finally {
245 | resolve();
246 | }
247 | })
248 | })
249 | }
250 | //modify_locate
251 | async function modify_locate(){
252 | if(now_step <= 15000){
253 | locate = now_step / 1000
254 | //await video_rewards()
255 | }else{
256 | console.log("视频奖励任务已完成")
257 | //$.msg("视频奖励任务已完成")
258 | }
259 | }
260 | //video_rewards
261 | async function video_rewards(){
262 | let video_rewards_body = zcybody.replace(/device_step_count=\d+.*/,`locate=${locate}`)
263 | return new Promise((resolve) => {
264 | let video_rewards_url = {
265 | url: 'https://step-money.quanxiangweilai.cn/api/gain_award_bonus',
266 | headers: JSON.parse(zcyheader),
267 | body: video_rewards_body
268 | }
269 | $.post(video_rewards_url,async(error, response, data) =>{
270 | try{
271 | const result = JSON.parse(data)
272 | if(logs)$.log(data)
273 | if(result.error_code == 0 && result.message == 'success'){
274 | console.log('🎈'+result.message+'!!获取第:'+result.data.locate+'个视频奖励,本次获得:'+result.data.money+'\n')
275 | message += '🎈'+result.message+'!!获取第:'+result.data.locate+'个视频奖励,本次获得:'+result.data.money+'\n'
276 | }else{
277 | console.log('👀'+result.message+"\n")
278 | message += '👀'+result.message+"\n"
279 | }
280 | }catch(e) {
281 | $.logErr(e, response);
282 | } finally {
283 | resolve();
284 | }
285 | })
286 | })
287 | }
288 | //now_date
289 | function getNowFormatDate() {
290 | if ($.isNode()) {
291 | var date = new Date( new Date().getTime() + 8 * 60 * 60 * 1000 );
292 | }else{
293 | var date = new Date;
294 | }
295 | var seperator1 = "-";
296 | var year = date.getFullYear();
297 | var month = date.getMonth() + 1;
298 | var strDate = date.getDate();
299 | if (month >= 1 && month <= 9) {
300 | month = "0" + month;
301 | }
302 | if (strDate >= 0 && strDate <= 9) {
303 | strDate = "0" + strDate;
304 | }
305 | now_date = year + seperator1 + month + seperator1 + strDate;
306 | //$.log(now_date)
307 | }
308 |
309 | //showmsg
310 | async function showmsg(){
311 | if(tz==1){
312 | $.log(message)
313 | if ($.isNode()){
314 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
315 | await notify.sendNotify($.name,message)
316 | }
317 | }else{
318 | $.log(message)
319 | if ((hour == 12 && minute <= 20) || (hour == 23 && minute >= 40)) {
320 | $.msg($.jsname,'',message)
321 | }
322 | }
323 | }else{
324 | $.log(message)
325 | }
326 | }
327 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)}
328 |
--------------------------------------------------------------------------------
/Surge/Conf/conf.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Surge/sgmodule/BlockOTA.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=BlockOTA
2 | #!desc=Blcok System Update
3 | #!system=ios
4 |
5 | [Rule]
6 | DOMAIN,gdmf.apple.com,REJECT
7 | DOMAIN,gdmf.apple.com.akadns.net,REJECT
8 | DOMAIN,mesu.apple.com,REJECT
9 | DOMAIN,mesu-cdn.apple.com.akadns.net,REJECT
10 | DOMAIN,mesu-cdn.origin-apple.com.akadns.net,REJECT
11 | DOMAIN,mesu.g.aaplimg.com,REJECT
12 | DOMAIN,appldnld.apple.com,REJECT
13 | DOMAIN,appldnld.apple.com.akadns.net,REJECT
14 |
--------------------------------------------------------------------------------
/Surge/sgmodule/Script.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=Ariszy Scripts Module
2 | #!desc=Collected by Ariszy
3 | #!system=ios
4 |
5 | [Script]
6 | # Ariszy
7 | http-response https:\/\/api2\.mubu\.com\/v3\/api\/user\/current_user script-path= https://raw.githubusercontent.com/Ariszy/Private-Script/master/rewrite/mubu.js, requires-body=true, timeout=10, tag=幕布
8 | http-response https:\/\/buy\.itunes\.apple\.com\/verifyReceipt script-path= https://raw.githubusercontent.com/Ariszy/Private-Script/master/rewrite/picsew.js, requires-body=true, timeout=10, tag=Picsew专业版
9 |
10 | # Nobyda整理
11 | http-response ^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js, tag=酷我音乐
12 | http-request ^https?:\/\/musicpay\.kuwo.cn\/music\.pay\?uid=\d+ script-path= https://raw.githubusercontent.com/Ariszy/Private-Script/master/User/KuWoMusicDownload.js, tag=酷我音乐下载
13 | http-response ^https://account.wps.*/api/users/ requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Wps.js, tag=WPS
14 | http-response ^https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js, tag=百度网盘倍速
15 |
16 | [MITM]
17 | hostname = %APPEND% buy.itunes.apple.com,api2.mubu.com,vip1.kuwo.cn,account.wps.cn, pan.baidu.com
18 |
--------------------------------------------------------------------------------
/Surge/sgmodule/TF_Download.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=TestFlight国区下载
2 | #!desc=collected by Ariszy
3 | [Script]
4 | TF download = type=http-request,pattern=^https?:\/\/testflight\.apple\.com\/v2\/accounts\/.*\/apps\/\d*/builds/\d*/install,requires-body=1,max-size=0,script-path= https://gist.githubusercontent.com/NobyDa/9be418b93afc5e9c8a8f4d28ae403cf2/raw/TF_Download.js
5 |
6 | [MITM]
7 | hostname = %APPEND% testflight.apple.com
8 |
--------------------------------------------------------------------------------
/Surge/sgmodule/YouTubeAd.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=YouTube 15.26.4
2 | #!desc=Block YouTube Ads
3 | [Rule]
4 | URL-REGEX,https?:\/\/.+.googlevideo.com\/ptracking\?pltype=adhost,REJECT
5 | URL-REGEX,https?:\/\/.+.youtube.com\/api\/stats\/ads,REJECT
6 | URL-REGEX,https?:\/\/.+.youtube.com\/get_midroll_,REJECT
7 | URL-REGEX,https?:\/\/.+.youtube.com\/pagead\/,REJECT
8 | URL-REGEX,https?:\/\/.+.youtube.com\/ptracking\?,REJECT
9 | URL-REGEX,https?:\/\/.+.youtube.com\/_get_ads,REJECT
10 | URL-REGEX,https?:\/\/premiumyva.appspot.com\/vmclickstoadvertisersite,REJECT
11 | URL-REGEX,https?:\/\/s0.2mdn.net\/ads\/,REJECT
12 | URL-REGEX,https?:\/\/stats.tubemogul.com\/stats\/,REJECT
13 | URL-REGEX,https?:\/\/youtubei.googleapis.com\/.+ad_break,REJECT
14 | URL-REGEX,https?:\/\/youtubei.googleapis.com\/youtubei\/.+(ad|log),REJECT
15 | URL-REGEX,https?:\/\/s\.youtube\.com\/api\/stats\/qoe\?adformat,REJECT
16 | URL-REGEX,https?:\/\/[\w-]+\.googlevideo\.com\/.+&(oad|ctier),REJECT
17 |
18 | [URL Rewrite]
19 | ^https?+:\/\/.+?\.googlevideo\.com\/.+?(?>&oad|ctier) - reject-200
20 | ^https?+:\/\/\w+?\.youtube\.com\/api\/.+?ad - reject-200
21 | ^https?+:\/\/\w+?\.youtube\.com\/p(?>agead|tracking) - reject-200
22 | ^https?+:\/\/youtubei\.googleapis\.com\/youtubei\/.+?(?>ad|log)_ - reject-200
23 |
24 | [MITM]
25 | hostname = %APPEND% *.googlevideo.com, *.youtube.com, youtubei.googleapis.com
26 |
--------------------------------------------------------------------------------
/Surge/sgmodule/YouTubeAds.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=YouTube
2 | #!desc=Block YouTube Ads
3 | #!system=ios
4 |
5 | [Rule]
6 | URL-REGEX,^https:\/\/.+\.googlevideo\.com\/.+&oad,REJECT
7 |
8 | [URL Rewrite]
9 | ctier=[A-Z] citer=A 302
10 |
11 | [MITM]
12 | hostname = %APPEND% *.googlevideo.com
13 |
--------------------------------------------------------------------------------
/Surge/sgmodule/jd_unbind.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=jd_unbind
2 | #!desc=京东解绑会员卡 collected by zy
3 |
4 | [URL Rewrite]
5 | ^https:\/\/shopmember\.m\.jd\.com\/shopcard\/\?(venderId=[0-9]+).* https:\/\/shopmember\.m\.jd\.com\/member\/memberCloseAccount\?$1 302
6 |
7 | [MITM]
8 | hostname = %APPEND% shopmember.m.jd.com
9 |
--------------------------------------------------------------------------------
/Surge/sgmodule/price.sgmodule:
--------------------------------------------------------------------------------
1 | #!name=Arisy Price Module
2 | #!desc=Collected by Arisy
3 | #!system=ios
4 |
5 | [Script]
6 | # 京东比价
7 | 京东比价 = type=http-response, pattern=^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig), requires-body=1, max-size=0, script-path=https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js
8 | #淘宝比价
9 | 淘宝比价 = type=http-request, pattern=^http://.+/amdc/mobileDispatch, requires-body=1, max-size=0, script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js
10 | 淘宝比价 = type=http-response, pattern=^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail, requires-body=1, max-size=0, script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js
11 | hostname= %APPEND% trade-acs.m.taobao.com,api.m.jd.com
12 |
--------------------------------------------------------------------------------
/TASK/DYJSB/README.md:
--------------------------------------------------------------------------------
1 | 1、下载抖音极速版13.6.0
2 |
3 | 2、圈x引用 https://raw.githubusercontent.com/Ariszy/Private-Script/master/TASK/DYJSB/dyjsb_rewrite.conf
4 |
5 | 3、我--签到集音符 音符兑好礼
6 |
7 | ①签到或签到详情界面获取signheader 和 signcookie
8 |
9 | ②看视频集音符,看完视频红包转一圈后获得readheader 和 readkey
10 |
11 | ③**如果有走路赚音符,点击集音符,获取stepheader 和 stepkey(请看[图片](https://raw.githubusercontent.com/Ariszy/Private-Script/master/TASK/DYJSB/dyjsb.PNG))
12 |
--------------------------------------------------------------------------------
/TASK/DYJSB/dyjsb.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/TASK/DYJSB/dyjsb.PNG
--------------------------------------------------------------------------------
/TASK/DYJSB/dyjsb_rewrite.conf:
--------------------------------------------------------------------------------
1 | luckycat/aweme/v1/task/sign_in/detail? url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/dyjsb.js
2 |
3 | luckycat/aweme/v1/task/done/read? url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/dyjsb.js
4 |
5 | luckycat/aweme/v1/task/walk/step_submit? - script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/dyjsb.js
6 | hostname = *.amemv.com
--------------------------------------------------------------------------------
/TASK/JRTT/README.md:
--------------------------------------------------------------------------------
1 | 1、APP Store下载今日头条极速版
2 |
3 | 2、抓包打开右下角包宝箱及视频奖励,重放使用
4 |
5 | 降级7.99版本
6 |
7 | 1、使用jrtt.js脚本获取ck
8 |
9 | ①上方签到或签到详情界面即可获取签到cookie
10 |
11 | ②上方仲裁赚钱,进一次农场即可获取农场cookie
12 |
13 | ③首页找一篇文章,读文章弹出金币获取读文章cookie(可能需要时间较长)
14 |
15 | #金币叠加
16 |
--------------------------------------------------------------------------------
/TASK/JRTT/jrtt_rewrite.conf:
--------------------------------------------------------------------------------
1 | \/score_task\/v1\/task\/(sign_in|get_read_bonus) url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jrtt.js
2 | \/ttgame\/game_farm\/home_info url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/jrtt.js
3 | hostname = *.snssdk.com
--------------------------------------------------------------------------------
/TASK/RANLV/README.md:
--------------------------------------------------------------------------------
1 | 1、APP Store下载燃旅视频
2 |
3 | 2、圈x引用 https://raw.githubusercontent.com/Ariszy/Private-Script/master/TASK/RANLV/ranlv_rewrite.conf
4 |
5 | 3、看视频,看完视频红包转一圈后获得ck
6 |
--------------------------------------------------------------------------------
/TASK/RANLV/ranlv_rewrite.conf:
--------------------------------------------------------------------------------
1 | https://ranlv.lvfacn.com/api.php/Common/pvlog url script-request-header https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/ranlv.js
2 | hostname = ranlv.lvfacn.com
--------------------------------------------------------------------------------
/User/BaiduCloud.js:
--------------------------------------------------------------------------------
1 | /*
2 | Baidu netdisc unlocks online video play speed.
3 | Key data from thor filter
4 | Surge4.0:
5 | http-response https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js
6 |
7 | QX1.0.0:
8 | https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js
9 |
10 | MITM = pan.baidu.com
11 | */
12 |
13 | let obj = JSON.parse($response.body);
14 | obj = {
15 | "product_infos": [{
16 | "product_id": "5310897792128633390",
17 | "start_time": 1417260485,
18 | "end_time": 2147483648,
19 | "buy_time": "1417260485",
20 | "cluster": "offlinedl",
21 | "detail_cluster": "offlinedl",
22 | "product_name": "gz_telecom_exp"
23 | }, {
24 | "product_name": "svip2_nd",
25 | "product_description": "超级会员",
26 | "function_num": 0,
27 | "start_time": 1553702399,
28 | "buy_description": "",
29 | "buy_time": 0,
30 | "product_id": "1",
31 | "auto_upgrade_to_svip": 0,
32 | "end_time": 1672502399,
33 | "cluster": "vip",
34 | "detail_cluster": "svip",
35 | "status": 0
36 | }],
37 | "currenttime": 1573473597,
38 | "reminder": {
39 | "reminderWithContent": [],
40 | "advertiseContent": []
41 | },
42 | "request_id": 7501873289383874371
43 | };
44 | $done({body: JSON.stringify(obj)});
45 |
--------------------------------------------------------------------------------
/User/KuWoMusicDownload.js:
--------------------------------------------------------------------------------
1 | /*
2 | KuWo music unlock lossless download, need to use with KuWo music VIP script.
3 | Surge4.0:
4 | http-request https?:\/\/musicpay\.kuwo.cn\/music\.pay\?uid=\d+ script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/KuWoMusicDownload.js
5 | #Vip script:
6 | http-response ^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js
7 | QX1.0.0:
8 | ^https?:\/\/musicpay\.kuwo\.cn\/music\.pay\?uid\=\d+ url 302 http://musicpay.kuwo.cn/music.pay?uid=1
9 | #Vip script:
10 | ^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js
11 | Surge & QX MITM = vip1.kuwo.cn
12 | */
13 |
14 | let url = $request.url.replace(/uid=\d+/g, "uid=1");
15 | $done({url});
16 |
--------------------------------------------------------------------------------
/User/TF_Download.js:
--------------------------------------------------------------------------------
1 | let app = JSON.parse($request.body);
2 | app.storefrontId = '143380-1,29';
3 | $done({body:JSON.stringify(app)});
4 |
--------------------------------------------------------------------------------
/User/YouTube.js:
--------------------------------------------------------------------------------
1 | /*
2 | [Script]
3 | http-request ^https://[\s\S]*\.googlevideo\.com/.*&(oad|ctier) script-path=https://Choler.github.io/Surge/Script/YouTube.js
4 | [MITM]
5 | hostname = *.googlevideo.com
6 | */
7 |
8 | var data = {
9 | body: "{}",
10 | headers: {
11 | "Content-Type": "multipart/byteranges"
12 | }
13 | };
14 | $done({response: data});
15 |
--------------------------------------------------------------------------------
/User/convenient.conf:
--------------------------------------------------------------------------------
1 | #酷我Download
2 | ^https?:\/\/musicpay\.kuwo\.cn\/music\.pay\?uid\=\d+ url 302 http://musicpay.kuwo.cn/music.pay?uid=1
3 | #酷我Vip script:
4 | ^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js
5 |
6 | #picsew
7 | https:\/\/buy\.itunes\.apple\.com\/verifyReceipt url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/rewrite/picsew.js
8 |
9 | #wps
10 | https?:\/\/account\.wps\.cn\/api\/users url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/User/wps.js
11 |
12 | #百度网盘倍速
13 | https:\/\/pan\.baidu\.com\/rest\/2\.0\/membership\/user url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js
14 |
15 | #[mitm]
16 | hostname = vip1.kuwo.cn,buy.itunes.apple.com,account.wps.cn,pan.baidu.com
17 |
--------------------------------------------------------------------------------
/User/wps.js:
--------------------------------------------------------------------------------
1 | /*
2 | by eHpo1
3 | 国区wps
4 | [Script]
5 | http-response ^https?:\/\/account\.wps\.cn\/api\/users requires-body=1,max-size=-1,script-path=https://raw.githubusercontent.com/ZhiYi-N/Private-Script/master/User/wps.js
6 | [MITM]
7 | hostname = account.wps.cn
8 | */
9 |
10 | var obj = JSON.parse($response.body);
11 |
12 | var id = obj.userid;
13 |
14 | obj = {
15 | exp: 0,
16 | level: 3,
17 | privilege: [
18 | { spid: "data_recover", times: 0, expire_time: 1631619709 },
19 | { spid: "ocr", times: 0, expire_time: 1631619709 },
20 | { spid: "pdf2doc", times: 0, expire_time: 1631619709 },
21 | { spid: "pdf_merge", times: 0, expire_time: 1631619709 },
22 | { spid: "pdf_sign", times: 0, expire_time: 1631619709 },
23 | { spid: "pdf_split", times: 0, expire_time: 1631619709 }
24 | ],
25 | result: "ok",
26 | total_buy: 0,
27 | total_cost: -30,
28 | userid: 0000,
29 | vip: {
30 | name: "超级会员",
31 | has_ad: 0,
32 | memberid: 40,
33 | expire_time: 1631619709,
34 | enabled: [
35 | { memberid: 40, name: "超级会员", expire_time: 1631619709 },
36 | { memberid: 20, name: "WPS会员", expire_time: 1631619709 },
37 | { memberid: 12, name: "稻壳会员", expire_time: 1631619709 }
38 | ]
39 | },
40 | wealth: 0,
41 | expire_time: 1631619709
42 | };
43 |
44 | obj.userid = id;
45 |
46 | $done({ body: JSON.stringify(obj) });
47 |
48 | // by eHpo1
49 |
--------------------------------------------------------------------------------
/img/Ariszy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/Ariszy.jpg
--------------------------------------------------------------------------------
/img/TT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/TT.png
--------------------------------------------------------------------------------
/img/ZhiYi-N.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/ZhiYi-N.png
--------------------------------------------------------------------------------
/img/cglm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/cglm.png
--------------------------------------------------------------------------------
/img/dyjsb-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/dyjsb-mini.png
--------------------------------------------------------------------------------
/img/dyjsb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/dyjsb.png
--------------------------------------------------------------------------------
/img/elecv2p.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/elecv2p.png
--------------------------------------------------------------------------------
/img/fqxs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/fqxs.png
--------------------------------------------------------------------------------
/img/hotsoon .png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/hotsoon .png
--------------------------------------------------------------------------------
/img/hotsoon-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/hotsoon-mini.png
--------------------------------------------------------------------------------
/img/hotsoon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/hotsoon.png
--------------------------------------------------------------------------------
/img/hs-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/hs-mini.png
--------------------------------------------------------------------------------
/img/hs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/hs.png
--------------------------------------------------------------------------------
/img/huoshan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/huoshan.png
--------------------------------------------------------------------------------
/img/jrtt-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/jrtt-mini.png
--------------------------------------------------------------------------------
/img/jrtt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/jrtt.png
--------------------------------------------------------------------------------
/img/kkd-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/kkd-mini.png
--------------------------------------------------------------------------------
/img/kkd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/kkd.png
--------------------------------------------------------------------------------
/img/klcg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/klcg.png
--------------------------------------------------------------------------------
/img/kxhy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/kxhy.png
--------------------------------------------------------------------------------
/img/leisu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/leisu.png
--------------------------------------------------------------------------------
/img/pyq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/pyq.png
--------------------------------------------------------------------------------
/img/qq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/qq.png
--------------------------------------------------------------------------------
/img/rl-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/rl-mini.png
--------------------------------------------------------------------------------
/img/rl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/rl.png
--------------------------------------------------------------------------------
/img/ryhy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/ryhy.png
--------------------------------------------------------------------------------
/img/thanks.JPG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/thanks.JPG
--------------------------------------------------------------------------------
/img/xp-mini.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/xp-mini.png
--------------------------------------------------------------------------------
/img/xp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/xp.png
--------------------------------------------------------------------------------
/img/zcy-min.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/zcy-min.png
--------------------------------------------------------------------------------
/img/zcy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Ariszy/Private-Script/b575c9de3bc0a24e219c79b40ad71f077315fdb2/img/zcy.png
--------------------------------------------------------------------------------
/rewrite/memobdc.js:
--------------------------------------------------------------------------------
1 | /*
2 | 墨墨背单词3.5.4版本
3 | #圈x
4 | [rewrite]
5 | ^https\:\/\/api\.maimemo\.com\/api\/v1/users/info url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/memobdc.js
6 | https://api.maimemo.com/api/v1/system/check url reject
7 | #Loon
8 | http-response ^https\:\/\/api\.maimemo\.com\/api\/v1/users/info script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/memobdc.js, requires-body=true, timeout=10, tag=默默背单词
9 | [ulr rewrite]
10 | https://api.maimemo.com/api/v1/system/check _ reject
11 | [mitm]
12 | hostname=api.maimemo.com
13 | */
14 | let obj = JSON.parse($response.body);
15 | obj.data["user"]["inf_level"] = 99;
16 | obj.data["user"]["level"] = 99;
17 | obj.data["user"]["inf_words_limit"] = 999999;
18 | $done({body: JSON.stringify(obj)});
19 |
--------------------------------------------------------------------------------
/rewrite/mubu.js:
--------------------------------------------------------------------------------
1 | /*
2 | #loon
3 | http-response https:\/\/api2\.mubu\.com\/v3\/api\/user\/current_user script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/mubu.js, requires-body=true, timeout=10, tag=幕布
4 | #quantumult-x
5 | https:\/\/api2\.mubu\.com\/v3\/api\/user\/current_user url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/mubu.js
6 | #mitm=api2.mubu.com
7 | */
8 | let obj = JSON.parse($response.body);
9 | obj.data["level"] = "2";
10 | $done({body: JSON.stringify(obj)});
11 |
--------------------------------------------------------------------------------
/rewrite/picsew.js:
--------------------------------------------------------------------------------
1 | /*
2 | #圈x
3 | https:\/\/buy\.itunes\.apple\.com\/verifyReceipt url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/picsew.js
4 | #Loon
5 | http-response https:\/\/buy\.itunes\.apple\.com\/verifyReceipt script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/picsew.js, requires-body=true, timeout=10, tag=picsew专业版
6 | #[mitm]
7 | hostname=buy.itunes.apple.com
8 | */
9 | var obj = JSON.parse($response.body);
10 | obj = {"receipt": {
11 | "receipt_type": "Production",
12 | "adam_id": 14789638028,
13 | "app_item_id": 14789638028,
14 | "bundle_id": "com.sugarmo.ScrollClip",
15 | "application_version": "3082",
16 | "download_id": 9999999,
17 | "version_external_identifier": 77777777,
18 | "receipt_creation_date": "2020-10-21 06:58:34 Etc/GMT",
19 | "receipt_creation_date_ms": "1603263514000",
20 | "receipt_creation_date_pst": "2020-10-21 23:58:34 America/Los_Angeles",
21 | "request_date": "2020-10-21 06:59:15 Etc/GMT",
22 | "request_date_ms": "1603263514000",
23 | "request_date_pst": "2020-10-21 23:59:15 America/Los_Angeles",
24 | "original_purchase_date": "2020-10-21 06:50:28 Etc/GMT",
25 | "original_purchase_date_ms": "1603263514000",
26 | "original_purchase_date_pst": "2020-10-21 23:50:28 America/Los_Angeles",
27 | "original_application_version": "3082",
28 | "in_app": [{
29 | "quantity": "1",
30 | "product_id": "com.sugarmo.ScrollClip.pro",
31 | "transaction_id": "999999999999",
32 | "original_transaction_id": "999999999999",
33 | "purchase_date": "2020-02-01 00:00:00 Etc/GMT",
34 | "purchase_date_ms": "1580540314000",
35 | "purchase_date_pst": "2020-02-21 00:00:00 America/Los_Angeles",
36 | "original_purchase_date": "2020-02-01 00:00:00 Etc/GMT",
37 | "original_purchase_date_ms": "1580540314000",
38 | "original_purchase_date_pst": "2020-02-01 00:00:00 America/Los_Angeles",
39 | "is_trial_period": "false"
40 | }]
41 | },
42 | "status": 0,
43 | "environment": "Production"
44 | }
45 | $done({body: JSON.stringify(obj)});
46 |
--------------------------------------------------------------------------------
/rewrite/picsew2.js:
--------------------------------------------------------------------------------
1 | /* 本脚本,标准版免费,专业版6块,标准版试过,成功购买,专业版请自行测试
2 | 出现问题自行负责,只是测试学习使用,请勿牟利
3 | 自用脚本,学习使用
4 | #作者:执意
5 | #Loon
6 | http-response https:\/\/buy\.itunes\.apple\.com\/verifyReceipt script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/picsew2.js, requires-body=true, timeout=10, tag=picsew专业版
7 | #圈x
8 | https:\/\/buy\.itunes\.apple\.com\/verifyReceipt url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/picsew2.js
9 | [mitm]
10 | hostname=buy.itunes.apple.com
11 | */
12 | var obj = JSON.parse($response.body);
13 | obj = {
14 | "receipt": {
15 | "receipt_type": "Production",
16 | "adam_id": 1495046702,
17 | "app_item_id": 1208145167,
18 | "bundle_id": "com.sugarmo.ScrollClip",
19 | "application_version": "3082",
20 | "download_id": 8888,
21 | "version_external_identifier": 0,
22 | "receipt_creation_date": "2020-09-13 13:07:00 Etc/GMT",
23 | "receipt_creation_date_ms": "1600002420000",
24 | "receipt_creation_date_pst": "2020-09-13 06:07:00 America/Los_Angeles",
25 | "request_date": "2020-09-13 10:32:58 Etc/GMT",
26 | "request_date_ms": "1599993178857",
27 | "request_date_pst": "2020-09-13 02:43:08 America/Los_Angeles",
28 | "original_purchase_date": "2020-05-27 14:46:29 Etc/GMT",
29 | "original_purchase_date_ms": "1590590789000",
30 | "original_purchase_date_pst": "2020-05-27 07:46:29 America/Los_Angeles",
31 | "original_application_version": "9",
32 | "in_app": []
33 | },
34 | "status": 0,
35 | "environment": "Production"
36 | }
37 | $done({body: JSON.stringify(obj)});
38 |
--------------------------------------------------------------------------------
/rewrite/xmind.js:
--------------------------------------------------------------------------------
1 | /*
2 | #圈x
3 | ^https:\/\/www\.xmind\.cn\/_res\/devices url script-response-body https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/xmind.js
4 | #Loon
5 | http-response https:\/\/www\.xmind\.cn\/_res\/devices script-path=https://raw.githubusercontent.com/Ariszy/Private-Script/master/Scripts/xmind.js, requires-body=true, timeout=10, tag=xmind
6 | #[mitm]
7 | www.xmind.cn
8 | */
9 | var obj = JSON.parse($response.body);
10 | obj = {"raw_data": "S0MY6Wu5wpkW52RE5XmMkSMfTBvnytTwIJODrtVDjnA0axrORbnv9gh1RC4W3/ejTfQhNBb7CVxxpbYnBBk2tHc4gAODhsuGpHkltYNL/P5dfORSpdbiNkAZr5aBBbHS/dNlaYjLYyBkq9Ohfe0QS9PeXOWLbDdNA6kqidLJysw=", "license":{"status":"sub","expireTime":9999999999999}, "_code": 200}
11 | $done({body: JSON.stringify(obj)});
12 |
--------------------------------------------------------------------------------