├── 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 | --------------------------------------------------------------------------------