├── Android └── rewrite │ └── getcookie.conf ├── ForIos12.conf ├── README.md ├── V2pTaskSub ├── readme.md ├── sngxprov2p.json ├── v2pAndroid.json ├── v2ptasksub.js └── v2pvip.json ├── boxjslist └── readme.md ├── cron.md ├── filter └── China.list ├── icon.jpg ├── icons ├── monk.png ├── ranlv.jpg ├── readme.md ├── tom.png └── zuoyebang.png ├── node.jpg ├── pic ├── 0301.png ├── 1301.jpg ├── 1302.jpg ├── Ariszy.png ├── cdle.png ├── ddo.png ├── dwnc.png ├── green.png ├── hyzaw.png ├── hzh.png ├── jay.png ├── jiejie.png ├── longzhu.png ├── lxk0301.png ├── mopo.png ├── moyushouji.png ├── ningmeng.png ├── ql.png ├── readme.md ├── souhu.png ├── wen.png ├── xiaomang.png ├── xiaopu.png ├── ziye.png ├── zoo.png ├── 图像-3.png └── 微信图片_20210430105407.jpg ├── rewrite ├── CookieJD.conf ├── IP.js ├── Rewrite_lhie1.conf ├── YouTube.conf ├── cookie.conf ├── csxdr.conf ├── debao.conf ├── dsjziye888.conf ├── dwyjy.conf ├── jddsh.conf ├── jdtqapi.conf ├── jdtqbody.conf ├── jdtqevent.conf ├── jxdl.conf ├── noads.conf ├── palipalivip.conf ├── price.conf ├── qianhetask.conf ├── qianheuser.conf ├── qx_rewite.txt ├── qx_youthread.txt ├── readme.md ├── self.conf ├── shuqibody.conf ├── shuqibook.conf ├── shuqiheader.conf ├── tiktokJP.conf ├── tiktokKR.conf ├── tiktokTW.conf ├── tiktokUS.conf ├── unlockvip.conf ├── unlockvip.md ├── useinfo.md ├── wdwhd.conf └── yyzb.conf ├── scripts ├── backup │ ├── 1.py │ ├── adolf_hf.js │ ├── ddo_pk.js │ ├── jay_freshgoods.js │ ├── jay_member_olb.js │ ├── jd_beauty.js │ ├── jd_bs.js │ ├── jd_live_redrain3day.js │ ├── jd_party_night.js │ ├── jd_tcl.js │ ├── jd_unbind.js │ ├── jd_xtg_help.js │ ├── member_02.js │ ├── member_03.js │ ├── member_05.js │ ├── member_08.js │ ├── member_09.js │ ├── member_10.js │ ├── member_11.js │ ├── member_12.js │ ├── member_13.js │ ├── z_tcl_lining.js │ └── zy_618jc.js ├── cgwz.js ├── jrkuaixun.js ├── kxhy.js ├── qlp.js ├── readme.md ├── shq.js ├── xbyd.js ├── xiaolian.js ├── yasui.js ├── ygkc.js └── yk.js ├── sngx&ioshkj.conf ├── sngx2021.conf ├── task ├── JDTask.json ├── OthersThanJD.json ├── backup │ └── AllinOne.json └── readme.md └── update.md /Android/rewrite/getcookie.conf: -------------------------------------------------------------------------------- 1 | hostname = sczdd.xjr123.cn,demo.cgsd163.com,api.jidiandian.cn,tzdefend.auto98.com,8.140.168.52,www.ahguoban.com,lft.wetimetech.com,www.tianfengxinxi.com 2 | 3 | 4 | #tom 5 | #赚多多 6 | http://sczdd.xjr123.cn/api url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/zdd.js 7 | #草根时代 8 | http://demo.cgsd163.com/api/v1/task url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/cgsd.js 9 | #红包多多 10 | https://api.jidiandian.cn/redchat-account/api url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/hbdd.js 11 | 12 | https://tzdefend.auto98.com/prizeWhee url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/jsm.js 13 | http://8.140.168.52/api url script-request-body https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/ttayn.js 14 | #拼拼猪 15 | http://www.ahguoban.com/user url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/ppz.js 16 | https://lft.wetimetech.com/v1 url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/kxddx.js 17 | http://www.tianfengxinxi.com/api url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/lw.js 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Anurag's GitHub stats](https://github-readme-stats.vercel.app/api?username=Oreomeow)](https://github.com/anuraghazra/github-readme-stats) 2 | 3 | --- 4 | 5 | ## 更新日志请查看 6 | 7 | [update.md](https://github.com/Oreomeow/QuanX/blob/master/update.md) 8 | 9 | --- 10 | 11 | ## 2021 版懒人包使用方法(共 2 步) 12 | 13 | ### (一)订阅基础懒人包配置 14 | 15 | 1. 复制 `2021 版懒人包订阅地址`,如下 16 | 17 | 18 | 19 | 2. 打开 QuanX,轻点右下角`圆形旋转图标`,然后将菜单下拉至最底端,选择`下载` 20 | 21 | 3. 将第一步复制的订阅地址粘贴进去,选确定,此时弹出订阅后添加进去的配置文件,点右上角的保存按钮保存即可 22 | 23 | 4. 回到 QuanX 的设置菜单,找到 `Mitm` 页面 ,点击`生成证书`,并配置安装到手机 24 | 25 | 5. 在手机的`设置`中安装证书后,记得到手机的 `设置-通用-关于本机--证书信任设置`中,将圈 x 的`证书开关`打开 26 | 27 | 6. 回到圈 x 的`设置菜单`,打开`重写功能的开关`和 `Mitm 功能的开关` 28 | 29 | 7. 此时基础懒人包已订阅完成 30 | -------------------------------------------------------------------------------- /V2pTaskSub/readme.md: -------------------------------------------------------------------------------- 1 | ### 公众号少年歌行pro v2p 专用定时任务订阅 2 | ### 由公众号少年歌行pro维护 https://t.me/sngxpro 3 | 4 | 5 | #### 【v2p for ios软件】脚本订阅地址: 6 | 7 | https://raw.githubusercontent.com/Oreomeow/QuanX/master/V2pTaskSub/sngxprov2p.json 8 | 9 | #### 【v2p for 安卓软件】脚本订阅地址: 10 | 11 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/V2pTaskSub/v2pAndroid.json 12 | 13 | 14 | #### 使用方法 15 | 16 | 1、登录最新版本v2p后台 17 | 18 | 2、选择task 19 | 20 | 3、选择添加订阅 21 | 22 | 4、输入上面的订阅地址 23 | 24 | 5、确定并保存 25 | 26 | 27 | #### 【v2p for 安卓软件】获取cookie订阅规则: 28 | 29 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/Android/rewrite/getcookie.conf 30 | -------------------------------------------------------------------------------- /V2pTaskSub/v2pAndroid.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"公众号少年歌行pro v2p 专用定时任务订阅", 3 | "author":"由公众号少年歌行pro维护 https://t.me/sngxpro", 4 | "desc":"为安卓平台app的脚本定制。该订阅仅适用于 elecV2P,与其他软件并不兼容。转载请注明维护者少年歌行pro", 5 | "date":"2021-07-01 11:00:02", 6 | "list":[ 7 | { 8 | "name":"【安卓】蛋咖", 9 | "type":"cron", 10 | "time":"0/20 * * * *", 11 | "job":{ 12 | "type":"runjs", 13 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/dk.js" 14 | } 15 | }, 16 | { 17 | "name":"【安卓】王者猜成语", 18 | "type":"cron", 19 | "time":"0 0/1 * * *", 20 | "job":{ 21 | "type":"runjs", 22 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/wzccy.js" 23 | } 24 | }, 25 | { 26 | "name":"【安卓】乐挖", 27 | "type":"cron", 28 | "time":"0/20 * * * *", 29 | "job":{ 30 | "type":"runjs", 31 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/lw.js" 32 | } 33 | }, 34 | { 35 | "name":"【安卓】开心点点消", 36 | "type":"cron", 37 | "time":"0 0 1 1 *", 38 | "job":{ 39 | "type":"runjs", 40 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/kxddx.js" 41 | } 42 | }, 43 | { 44 | "name":"【安卓】拼拼猪", 45 | "type":"cron", 46 | "time":"0 23 * * *", 47 | "job":{ 48 | "type":"runjs", 49 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/ppz.js" 50 | } 51 | }, 52 | { 53 | "name":"【安卓】天天爱养牛", 54 | "type":"cron", 55 | "time":"0 22 * * *", 56 | "job":{ 57 | "type":"runjs", 58 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/ttayn.js" 59 | } 60 | }, 61 | { 62 | "name":"【安卓】健身猫", 63 | "type":"cron", 64 | "time":"0 0 1 1 *", 65 | "job":{ 66 | "type":"runjs", 67 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/jsm.js" 68 | } 69 | }, 70 | { 71 | "name":"【安卓】红包多多", 72 | "type":"cron", 73 | "time":"0 0 1 1 *", 74 | "job":{ 75 | "type":"runjs", 76 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/hbdd.js" 77 | } 78 | }, 79 | { 80 | "name":"【安卓】草根时代", 81 | "type":"cron", 82 | "time":"0 7 * * *", 83 | "job":{ 84 | "type":"runjs", 85 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/cgsd.js" 86 | } 87 | }, 88 | { 89 | "name":"【安卓】赚多多", 90 | "type":"cron", 91 | "time":"0 7 * * *", 92 | "job":{ 93 | "type":"runjs", 94 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/zdd.js" 95 | } 96 | }, 97 | { 98 | "name":"【安卓】青椒音乐(ck稍后大佬发)", 99 | "type":"cron", 100 | "time":"0 12 * * *", 101 | "job":{ 102 | "type":"runjs", 103 | "target":"https://ghproxy.com/https://raw.githubusercontent.com/xl2101200/-/main/qjyy.js" 104 | } 105 | } 106 | ] 107 | } -------------------------------------------------------------------------------- /V2pTaskSub/v2ptasksub.js: -------------------------------------------------------------------------------- 1 | // 通过 webhook 添加定时任务订阅。运行前根据具体情况修改 suburl 和 webhook 里面的内容 2 | // 每次运行都会添加新任务,请不要多次运行 3 | // 这只是一个简单的范例,如果出现未知问题,手动修正一下代码 4 | 5 | const suburl = 'https://raw.githubusercontent.com/sngxpro/QuanX/master/task/AllinOne.json' 6 | 7 | const webhook = { 8 | url: '/webhook', // 远程: http://sss.xxxx.com/webhook 9 | token: 'f422723c-1613-4c93-8cc4-af41ef6aa87c', // 在 webUI->SETTING 界面查找 10 | } 11 | 12 | $axios(suburl).then(res=>{ 13 | const body = res.data 14 | const mastr = body.matchAll(/([0-9\-\*\/]+ [0-9\-\*\/]+ [0-9\-\*\/]+ [0-9\-\*\/]+ [0-9\-\*\/]+( [0-9\-\*\/]+)?) ([^ ,]+), ?tag=([^, \n\r]+)/g) 15 | 16 | ;[...mastr].forEach(mr=>{ 17 | if (mr[3] && mr[1]) { 18 | $axios({ 19 | url: webhook.url, 20 | method: 'post', 21 | data: { 22 | token: webhook.token, 23 | type: 'taskadd', 24 | task: { 25 | name: mr[4] || 'tasksub-新的任务', 26 | type: 'cron', 27 | job: { 28 | type: 'runjs', 29 | target: mr[3], 30 | }, 31 | time: mr[1], 32 | running: true // 是否自动执行添加的任务 33 | } 34 | } 35 | }).then(res=>console.log(res.data)) 36 | } 37 | }) 38 | }).catch(e=>console.error(e)) 39 | -------------------------------------------------------------------------------- /boxjslist/readme.md: -------------------------------------------------------------------------------- 1 | ### 全网各大佬boxjs地址查询对照 2021.6.116 & 6.27 by Leon 2 | 3 | `少林寺` 4 | 5 | https://raw.githubusercontent.com/shaolin-kongfu/js_scripts/main/kongfu.boxjs.json 6 | 7 | ---------- 8 | 9 | `JDHelloWorld` 10 | 11 | https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/boxjs.json 12 | 13 | ---------- 14 | 15 | `yangtingxiao` 16 | 17 | https://raw.githubusercontent.com/yangtingxiao/QuantumultX/master/box/yangtingxiao.boxjs.json 18 | 19 | ---------- 20 | 21 | `longzhuzhu` 22 | 23 | https://raw.githubusercontent.com/longzhuzhu/nianyu/main/qx/longzhuzhu.boxjs.json 24 | 25 | ---------- 26 | 27 | `dompling`(`二丫`) 28 | 29 | https://raw.githubusercontent.com/dompling/Script/master/dompling.boxjs.json 30 | 31 | ---------- 32 | 33 | `passerby-b` 34 | 35 | https://raw.githubusercontent.com/passerby-b/JDDJ/main/passerby-b.boxjs.json 36 | 37 | ---------- 38 | 39 | `柠檬` 40 | 41 | http://nm66.top/nm.box.json 42 | 43 | ---------- 44 | 45 | `tom` 46 | 47 | https://raw.githubusercontent.com/xl2101200/-/main/tom.box.json 48 | 49 | ---------- 50 | 51 | `lxk0301` 52 | 53 | https://raw.githubusercontent.com/chinnkarahoi/jd_scripts/master/lxk0301.boxjs.json 54 | 55 | ---------- 56 | 57 | `toulanboy` 58 | 59 | https://raw.githubusercontent.com/toulanboy/scripts/master/toulanboy.boxjs.json 60 | 61 | ---------- 62 | 63 | `sunert` 64 | 65 | https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/sunert.boxjs.json 66 | 67 | ---------- 68 | 69 | `zZPiglet` 70 | 71 | https://raw.githubusercontent.com/zZPiglet/Task/master/zZPiglet.boxjs.json 72 | 73 | ---------- 74 | 75 | `chavy` 76 | 77 | https://raw.githubusercontent.com/chavyleung/scripts/master/box/chavy.boxjs.json 78 | 79 | ---------- 80 | 81 | `Peng-YM` 82 | 83 | https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/box.js.json 84 | 85 | ---------- 86 | 87 | `nobyda` 88 | 89 | https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json 90 | 91 | ---------- 92 | 93 | `whyour` 94 | 95 | https://raw.githubusercontent.com/whyour/hundun/master/quanx/whyour.boxjs.json 96 | 97 | ---------- 98 | 99 | `photomang` 100 | 101 | https://raw.githubusercontent.com/photonmang/quantumultX/master/photonmang.boxjs.json 102 | 103 | ---------- 104 | 105 | `Ariszy`(`执意`) 106 | 107 | https://raw.githubusercontent.com/Ariszy/Private-Script/master/Ariszy.boxjs.json 108 | 109 | ---------- 110 | 111 | `Cenbomin`(`姐姐`) 112 | 113 | https://raw.githubusercontent.com/CenBoMin/GithubSync/main/cenbomin.box.json 114 | 115 | ---------- 116 | 117 | `dd` 118 | 119 | https://raw.githubusercontent.com/DD-D1/2020scripts/master/box/dd.signboxjs.js 120 | 121 | ---------- 122 | 123 | `feizao` 124 | 125 | https://raw.githubusercontent.com/age174/-/main/feizao.box.json 126 | 127 | ---------- 128 | 129 | `ziye` 130 | 131 | https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/ziye.boxjs.json 132 | 133 | ---------- 134 | 135 | `evilbutcher` 136 | 137 | https://raw.githubusercontent.com/evilbutcher/Quantumult_X/master/evilbutcher.boxjs.json 138 | 139 | ---------- 140 | 141 | `ztxtop` 142 | 143 | https://raw.githubusercontent.com/ztxtop/x/main/ztxtop.boxjs.json 144 | -------------------------------------------------------------------------------- /cron.md: -------------------------------------------------------------------------------- 1 | 常用定时示例: 2 | 3 | ### 1、定点运行的几种常用格式 4 | 5 | #### 每天0:00运行一次 6 | 0 0 * * * 7 | 8 | #### 每天凌晨1:00运行一次 9 | 0 1 * * * 10 | 11 | #### 每天凌晨1:30运行一次 12 | 30 1 * * * 13 | 14 | #### 每天下午13:30分运行一次 15 | 30 13 * * * 16 | 17 | #### 对照以上,可以凑出想要的定点格式了 18 | 19 | ------------- 20 | 21 | ### 2、按小时定点频率运行的几种格式 22 | 23 | #### 每小时运行1次 24 | 25 | 0 0-23/1 * * * 每个小时运行一次,运行时间示例:1:00、2:00、3:00.....直到第二天1:00 循环 26 | 27 | 0 * * * * 和上面那个一样,每个小时运行一次,运行时间示例:1:00、2:00、3:00.....直到第二天1:00 循环 28 | 29 | 0 0-23/2 * * * 每2个小时运行一次,运行时间示例:2:00、4:00、6:00.....直到第二天2:00 循环 30 | 31 | 0 \*/2 * * * 每2个小时运行一次,运行时间示例:2:00、4:00、6:00.....直到第二天2:00 循环 32 | 33 | 0 2-4/1 * * * 每天凌晨2点到4点之间,每小时运行一次。 运行示例:2:00、3:00、4:00 ,第二天的2:00、3:00、4:00,循环 34 | 35 | #### 比照以上规律,可写出按任意小时定点的格式 36 | 37 | ------------- 38 | 39 | ### 3、按分钟定点频率运行的几种格式 40 | 41 | \*/10 * * * * 每10分钟 运行1次 ,示例22:30、22:40类推 42 | 43 | 3,15 * * * * 每个小时的第3分钟和第15分钟运行 一次 44 | 45 | 3,15 8-11 * * * 每天早上8-11点间,每小时的第3分钟和第15分钟运行一次 46 | -------------------------------------------------------------------------------- /filter/China.list: -------------------------------------------------------------------------------- 1 | # China Area Network 2 | # > 360 3 | DOMAIN-SUFFIX,qhres.com,DIRECT 4 | DOMAIN-SUFFIX,qhimg.com,DIRECT 5 | # > Alibaba 6 | USER-AGENT,%E4%BC%98%E9%85%B7*,DIRECT 7 | DOMAIN-SUFFIX,alibaba.com,DIRECT 8 | DOMAIN-SUFFIX,alibabausercontent.com,DIRECT 9 | DOMAIN-SUFFIX,alicdn.com,DIRECT 10 | DOMAIN-SUFFIX,alikunlun.com,DIRECT 11 | DOMAIN-SUFFIX,alipay.com,DIRECT 12 | DOMAIN-SUFFIX,amap.com,DIRECT 13 | DOMAIN-SUFFIX,autonavi.com,DIRECT 14 | DOMAIN-SUFFIX,dingtalk.com,DIRECT 15 | DOMAIN-SUFFIX,mxhichina.com,DIRECT 16 | DOMAIN-SUFFIX,soku.com,DIRECT 17 | DOMAIN-SUFFIX,taobao.com,DIRECT 18 | DOMAIN-SUFFIX,tmall.com,DIRECT 19 | DOMAIN-SUFFIX,tmall.hk,DIRECT 20 | DOMAIN-SUFFIX,ykimg.com,DIRECT 21 | DOMAIN-SUFFIX,youku.com,DIRECT 22 | DOMAIN-SUFFIX,xiami.com,DIRECT 23 | DOMAIN-SUFFIX,xiami.net,DIRECT 24 | # > Apple 25 | DOMAIN-SUFFIX,aaplimg.com,DIRECT 26 | DOMAIN-SUFFIX,apple.co,DIRECT 27 | DOMAIN-SUFFIX,apple.com,DIRECT 28 | DOMAIN-SUFFIX,apple-cloudkit.com,DIRECT 29 | DOMAIN-SUFFIX,appstore.com,DIRECT 30 | DOMAIN-SUFFIX,cdn-apple.com,DIRECT 31 | DOMAIN-SUFFIX,icloud.com,DIRECT 32 | DOMAIN-SUFFIX,icloud-content.com,DIRECT 33 | DOMAIN-SUFFIX,me.com,DIRECT 34 | DOMAIN-SUFFIX,mzstatic.com,DIRECT 35 | # DOMAIN-KEYWORD,apple.com.akadns.net,DIRECT 36 | # DOMAIN-KEYWORD,icloud.com.akadns.net,DIRECT 37 | # > Baidu 38 | DOMAIN-SUFFIX,baidu.com,DIRECT 39 | DOMAIN-SUFFIX,baidubcr.com,DIRECT 40 | DOMAIN-SUFFIX,baidupan.com,DIRECT 41 | DOMAIN-SUFFIX,baidupcs.com,DIRECT 42 | DOMAIN-SUFFIX,bdimg.com,DIRECT 43 | DOMAIN-SUFFIX,bdstatic.com,DIRECT 44 | DOMAIN-SUFFIX,yunjiasu-cdn.net,DIRECT 45 | # > Battle 46 | DOMAIN-SUFFIX,battle.net,DIRECT 47 | DOMAIN-SUFFIX,blizzard.com,DIRECT 48 | # > bilibili 49 | DOMAIN-SUFFIX,acgvideo.com,DIRECT 50 | DOMAIN-SUFFIX,biliapi.com,DIRECT 51 | DOMAIN-SUFFIX,biliapi.net,DIRECT 52 | DOMAIN-SUFFIX,bilibili.com,DIRECT 53 | DOMAIN-SUFFIX,bilibili.tv,DIRECT 54 | DOMAIN-SUFFIX,hdslb.com,DIRECT 55 | # > ByteDance 56 | DOMAIN-SUFFIX,feiliao.com,DIRECT 57 | DOMAIN-SUFFIX,pstatp.com,DIRECT 58 | DOMAIN-SUFFIX,snssdk.com,DIRECT 59 | DOMAIN-SUFFIX,toutiao.com,DIRECT 60 | # > CCTV 61 | DOMAIN-SUFFIX,cctv.com,DIRECT 62 | DOMAIN-SUFFIX,cctvpic.com,DIRECT 63 | DOMAIN-SUFFIX,livechina.com,DIRECT 64 | # > ChinaTelecom 65 | DOMAIN-SUFFIX,21cn.com,DIRECT 66 | # > Clubhouse 67 | IP-CIDR,3.0.163.78/32,DIRECT 68 | IP-CIDR,13.230.60.35/32,DIRECT 69 | IP-CIDR,23.98.43.152/32,DIRECT 70 | IP-CIDR,35.156.231.150/32,DIRECT 71 | IP-CIDR,35.168.106.53/32,DIRECT 72 | IP-CIDR,35.178.208.187/32,DIRECT 73 | IP-CIDR,45.40.48.11/32,DIRECT 74 | IP-CIDR,45.40.48.114/32,DIRECT 75 | IP-CIDR,50.18.128.22/32,DIRECT 76 | IP-CIDR,52.52.84.170/32,DIRECT 77 | IP-CIDR,52.58.56.244/32,DIRECT 78 | IP-CIDR,52.178.26.110/32,DIRECT 79 | IP-CIDR,52.194.158.59/32,DIRECT 80 | IP-CIDR,52.221.46.208/32,DIRECT 81 | IP-CIDR,54.178.26.110/32,DIRECT 82 | IP-CIDR,69.28.51.148/32,DIRECT 83 | IP-CIDR,103.65.41.130/32,DIRECT 84 | IP-CIDR,103.65.41.132/32,DIRECT 85 | IP-CIDR,103.65.41.137/32,DIRECT 86 | IP-CIDR,103.65.41.139/32,DIRECT 87 | IP-CIDR,103.65.41.152/32,DIRECT 88 | IP-CIDR,103.65.41.157/32,DIRECT 89 | IP-CIDR,103.65.41.159/32,DIRECT 90 | IP-CIDR,103.65.41.166/32,DIRECT 91 | IP-CIDR,103.65.41.169/32,DIRECT 92 | IP-CIDR,128.1.105.156/32,DIRECT 93 | IP-CIDR,129.227.57.130/32,DIRECT 94 | IP-CIDR,129.227.57.133/32,DIRECT 95 | IP-CIDR,129.227.57.135/32,DIRECT 96 | IP-CIDR,129.227.57.136/32,DIRECT 97 | IP-CIDR,129.227.57.138/32,DIRECT 98 | IP-CIDR,129.227.57.139/32,DIRECT 99 | IP-CIDR,129.227.57.144/32,DIRECT 100 | IP-CIDR,129.227.57.146/32,DIRECT 101 | IP-CIDR,129.227.57.147/32,DIRECT 102 | IP-CIDR,129.227.234.85/32,DIRECT 103 | IP-CIDR,148.153.126.147/32,DIRECT 104 | IP-CIDR,148.153.172.73/32,DIRECT 105 | IP-CIDR,148.153.172.74/32,DIRECT 106 | IP-CIDR,148.153.172.75/32,DIRECT 107 | IP-CIDR,148.153.172.76/32,DIRECT 108 | IP-CIDR,148.153.172.77/32,DIRECT 109 | IP-CIDR,164.52.102.33/32,DIRECT 110 | IP-CIDR,164.52.102.66/32,DIRECT 111 | IP-CIDR,164.52.102.67/32,DIRECT 112 | IP-CIDR,164.52.102.68/32,DIRECT 113 | IP-CIDR,164.52.102.69/32,DIRECT 114 | IP-CIDR,164.52.102.70/32,DIRECT 115 | IP-CIDR,164.52.102.75/32,DIRECT 116 | IP-CIDR,164.52.102.76/32,DIRECT 117 | IP-CIDR,164.52.102.77/32,DIRECT 118 | IP-CIDR,164.52.102.91/32,DIRECT 119 | IP-CIDR,199.190.44.36/32,DIRECT 120 | IP-CIDR,199.190.44.37/32,DIRECT 121 | IP-CIDR,202.181.136.107/32,DIRECT 122 | IP-CIDR,202.181.136.108/32,DIRECT 123 | IP-CIDR,202.181.136.234/32,DIRECT 124 | IP-CIDR,202.226.25.166/32,DIRECT 125 | # > DiDi 126 | DOMAIN-SUFFIX,didialift.com,DIRECT 127 | DOMAIN-SUFFIX,didiglobal.com,DIRECT 128 | DOMAIN-SUFFIX,udache.com,DIRECT 129 | # > HunanTV 130 | DOMAIN-SUFFIX,hitv.com,DIRECT 131 | DOMAIN-SUFFIX,mgtv.com,DIRECT 132 | # > iQiyi 133 | DOMAIN-SUFFIX,iqiyi.com,DIRECT 134 | DOMAIN-SUFFIX,iqiyipic.com,DIRECT 135 | DOMAIN-SUFFIX,71.am,DIRECT 136 | # > JD 137 | DOMAIN-SUFFIX,jd.com,DIRECT 138 | DOMAIN-SUFFIX,jd.hk,DIRECT 139 | DOMAIN-SUFFIX,jdpay.com,DIRECT 140 | DOMAIN-SUFFIX,360buyimg.com,DIRECT 141 | # > Kingsoft 142 | DOMAIN-SUFFIX,iciba.com,DIRECT 143 | DOMAIN-SUFFIX,ksosoft.com,DIRECT 144 | # > Meitu 145 | DOMAIN-SUFFIX,meitu.com,DIRECT 146 | DOMAIN-SUFFIX,meitudata.com,DIRECT 147 | DOMAIN-SUFFIX,meitustat.com,DIRECT 148 | DOMAIN-SUFFIX,meipai.com,DIRECT 149 | # > Meituan 150 | DOMAIN-SUFFIX,dianping.com,DIRECT 151 | DOMAIN-SUFFIX,dpfile.com,DIRECT 152 | DOMAIN-SUFFIX,meituan.com,DIRECT 153 | DOMAIN-SUFFIX,meituan.net,DIRECT 154 | # > MI 155 | DOMAIN-SUFFIX,duokan.com,DIRECT 156 | DOMAIN-SUFFIX,mi.com,DIRECT 157 | DOMAIN-SUFFIX,mi-img.com,DIRECT 158 | DOMAIN-SUFFIX,miui.com,DIRECT 159 | DOMAIN-SUFFIX,miwifi.com,DIRECT 160 | DOMAIN-SUFFIX,xiaomi.com,DIRECT 161 | DOMAIN-SUFFIX,xiaomi.net,DIRECT 162 | # > Microsoft 163 | # DOMAIN-SUFFIX,microsoft.com,DIRECT 164 | # DOMAIN-SUFFIX,msecnd.net,DIRECT 165 | # DOMAIN-SUFFIX,office.com,DIRECT 166 | # DOMAIN-SUFFIX,office365.com,DIRECT 167 | # DOMAIN-SUFFIX,s-microsoft.com,DIRECT 168 | # DOMAIN-SUFFIX,windows.com,DIRECT 169 | DOMAIN-SUFFIX,visualstudio.com,DIRECT 170 | # >> Microsoft Software Download 171 | # DOMAIN,software-download.microsoft.com,DIRECT 172 | # DOMAIN-KEYWORD,-microsoft-com.akamaized.net,DIRECT 173 | # >> OneDrive 174 | # DOMAIN-SUFFIX,1drv.com,DIRECT 175 | # DOMAIN-SUFFIX,storage.live.com,DIRECT 176 | # >> Outlook 177 | DOMAIN-SUFFIX,hotmail.com,DIRECT 178 | DOMAIN-SUFFIX,outlook.com,DIRECT 179 | DOMAIN,outlook.office365.com,DIRECT 180 | DOMAIN,smtp.office365.com,DIRECT 181 | # >> Windows Server Update Services 182 | DOMAIN-SUFFIX,windowsupdate.microsoft.com,DIRECT 183 | DOMAIN-SUFFIX,update.microsoft.com,DIRECT 184 | DOMAIN-SUFFIX,windowsupdate.com,DIRECT 185 | DOMAIN,download.microsoft.com,DIRECT 186 | DOMAIN,wustat.windows.com,DIRECT 187 | DOMAIN,ntservicepack.microsoft.com,DIRECT 188 | # > NetEase 189 | USER-AGENT,NeteaseMusic*,DIRECT 190 | USER-AGENT,%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90*,DIRECT 191 | DOMAIN-SUFFIX,163.com,DIRECT 192 | DOMAIN-SUFFIX,126.com,DIRECT 193 | DOMAIN-SUFFIX,126.net,DIRECT 194 | DOMAIN-SUFFIX,127.net,DIRECT 195 | DOMAIN-SUFFIX,163yun.com,DIRECT 196 | DOMAIN-SUFFIX,lofter.com,DIRECT 197 | DOMAIN-SUFFIX,netease.com,DIRECT 198 | DOMAIN-SUFFIX,ydstatic.com,DIRECT 199 | # > PayPal 200 | USER-AGENT,PayPal*,DIRECT 201 | DOMAIN-SUFFIX,paypal.com,DIRECT 202 | DOMAIN-SUFFIX,paypal.me,DIRECT 203 | DOMAIN-SUFFIX,paypalobjects.com,DIRECT 204 | # > Sina 205 | DOMAIN-SUFFIX,sina.com,DIRECT 206 | DOMAIN-SUFFIX,weibo.com,DIRECT 207 | DOMAIN-SUFFIX,weibocdn.com,DIRECT 208 | # > Sohu 209 | DOMAIN-SUFFIX,sohu.com,DIRECT 210 | DOMAIN-SUFFIX,sohucs.com,DIRECT 211 | DOMAIN-SUFFIX,sohu-inc.com,DIRECT 212 | DOMAIN-SUFFIX,v-56.com,DIRECT 213 | # > Sogo 214 | DOMAIN-SUFFIX,sogo.com,DIRECT 215 | DOMAIN-SUFFIX,sogou.com,DIRECT 216 | DOMAIN-SUFFIX,sogoucdn.com,DIRECT 217 | # > Steam 218 | DOMAIN-SUFFIX,steamcontent.com,DIRECT 219 | DOMAIN-SUFFIX,steampowered.com,DIRECT 220 | DOMAIN-SUFFIX,steamstatic.com,DIRECT 221 | # > Tencent 222 | USER-AGENT,MicroMessenger%20Client,DIRECT 223 | USER-AGENT,WeChat*,DIRECT 224 | USER-AGENT,%E4%BC%81%E4%B8%9A%E5%BE%AE%E4%BF%A1*,DIRECT 225 | DOMAIN-SUFFIX,gcloudcs.com,DIRECT 226 | DOMAIN-SUFFIX,gtimg.com,DIRECT 227 | DOMAIN-SUFFIX,idqqimg.com,DIRECT 228 | DOMAIN-SUFFIX,myapp.com,DIRECT 229 | DOMAIN-SUFFIX,myqcloud.com,DIRECT 230 | DOMAIN-SUFFIX,qq.com,DIRECT 231 | DOMAIN-SUFFIX,qqmail.com,DIRECT 232 | DOMAIN-SUFFIX,servicewechat.com,DIRECT 233 | DOMAIN-SUFFIX,tencent.com,DIRECT 234 | DOMAIN-SUFFIX,tencent-cloud.net,DIRECT 235 | DOMAIN-SUFFIX,tenpay.com,DIRECT 236 | DOMAIN-SUFFIX,wechat.com,DIRECT 237 | # >> PUBG Mobile 238 | DOMAIN-SUFFIX,igamecj.com,DIRECT 239 | DOMAIN,file-igamecj.akamaized.net,DIRECT 240 | IP-CIDR,45.40.220.0/22,DIRECT 241 | IP-CIDR,150.109.124.0/23,DIRECT 242 | # > Content Delivery Network 243 | DOMAIN-SUFFIX,ccgslb.com,DIRECT 244 | DOMAIN-SUFFIX,ccgslb.net,DIRECT 245 | DOMAIN-SUFFIX,chinanetcenter.com,DIRECT 246 | DOMAIN-SUFFIX,meixincdn.com,DIRECT 247 | DOMAIN-SUFFIX,ourdvs.com,DIRECT 248 | DOMAIN-SUFFIX,staticdn.net,DIRECT 249 | DOMAIN-SUFFIX,wangsu.com,DIRECT 250 | # > IP Query 251 | DOMAIN-SUFFIX,ipip.net,DIRECT 252 | DOMAIN-SUFFIX,ip.la,DIRECT 253 | DOMAIN-SUFFIX,ip.sb,DIRECT 254 | DOMAIN-SUFFIX,ip-cdn.com,DIRECT 255 | DOMAIN-SUFFIX,ipv6-test.com,DIRECT 256 | DOMAIN-SUFFIX,myip.la,DIRECT 257 | DOMAIN-SUFFIX,test-ipv6.com,DIRECT 258 | DOMAIN-SUFFIX,whatismyip.com,DIRECT 259 | DOMAIN,ip.istatmenus.app,DIRECT 260 | DOMAIN,sms.imagetasks.com,DIRECT 261 | # > Speed Test 262 | # DOMAIN-SUFFIX,speedtest.net,DIRECT 263 | DOMAIN-SUFFIX,netspeedtestmaster.com,DIRECT 264 | DOMAIN,speedtest.macpaw.com,DIRECT 265 | # > Private Tracker 266 | DOMAIN-SUFFIX,acg.rip,DIRECT 267 | DOMAIN-SUFFIX,animebytes.tv,DIRECT 268 | DOMAIN-SUFFIX,awesome-hd.me,DIRECT 269 | DOMAIN-SUFFIX,broadcasthe.net,DIRECT 270 | DOMAIN-SUFFIX,chdbits.co,DIRECT 271 | DOMAIN-SUFFIX,classix-unlimited.co.uk,DIRECT 272 | DOMAIN-SUFFIX,comicat.org,DIRECT 273 | DOMAIN-SUFFIX,empornium.me,DIRECT 274 | DOMAIN-SUFFIX,gazellegames.net,DIRECT 275 | DOMAIN-SUFFIX,hdbits.org,DIRECT 276 | DOMAIN-SUFFIX,hdchina.org,DIRECT 277 | DOMAIN-SUFFIX,hddolby.com,DIRECT 278 | DOMAIN-SUFFIX,hdhome.org,DIRECT 279 | DOMAIN-SUFFIX,hdsky.me,DIRECT 280 | DOMAIN-SUFFIX,icetorrent.org,DIRECT 281 | DOMAIN-SUFFIX,jpopsuki.eu,DIRECT 282 | DOMAIN-SUFFIX,keepfrds.com,DIRECT 283 | DOMAIN-SUFFIX,madsrevolution.net,DIRECT 284 | DOMAIN-SUFFIX,morethan.tv,DIRECT 285 | DOMAIN-SUFFIX,m-team.cc,DIRECT 286 | DOMAIN-SUFFIX,myanonamouse.net,DIRECT 287 | DOMAIN-SUFFIX,nanyangpt.com,DIRECT 288 | DOMAIN-SUFFIX,ncore.cc,DIRECT 289 | DOMAIN-SUFFIX,open.cd,DIRECT 290 | DOMAIN-SUFFIX,ourbits.club,DIRECT 291 | DOMAIN-SUFFIX,passthepopcorn.me,DIRECT 292 | DOMAIN-SUFFIX,privatehd.to,DIRECT 293 | DOMAIN-SUFFIX,pterclub.com,DIRECT 294 | DOMAIN-SUFFIX,redacted.ch,DIRECT 295 | DOMAIN-SUFFIX,springsunday.net,DIRECT 296 | DOMAIN-SUFFIX,tjupt.org,DIRECT 297 | DOMAIN-SUFFIX,totheglory.im,DIRECT 298 | # > Other 299 | DOMAIN-SUFFIX,cn,DIRECT 300 | DOMAIN-SUFFIX,115.com,DIRECT 301 | DOMAIN-SUFFIX,360in.com,DIRECT 302 | DOMAIN-SUFFIX,51ym.me,DIRECT 303 | DOMAIN-SUFFIX,8686c.com,DIRECT 304 | DOMAIN-SUFFIX,99.com,DIRECT 305 | DOMAIN-SUFFIX,abchina.com,DIRECT 306 | DOMAIN-SUFFIX,accuweather.com,DIRECT 307 | DOMAIN-SUFFIX,agora.io,DIRECT 308 | DOMAIN-SUFFIX,aicoinstorge.com,DIRECT 309 | DOMAIN-SUFFIX,air-matters.com,DIRECT 310 | DOMAIN-SUFFIX,air-matters.io,DIRECT 311 | DOMAIN-SUFFIX,aixifan.com,DIRECT 312 | DOMAIN-SUFFIX,amd.com,DIRECT 313 | DOMAIN-SUFFIX,b612.net,DIRECT 314 | DOMAIN-SUFFIX,bdatu.com,DIRECT 315 | DOMAIN-SUFFIX,beitaichufang.com,DIRECT 316 | DOMAIN-SUFFIX,booking.com,DIRECT 317 | DOMAIN-SUFFIX,bstatic.com,DIRECT 318 | DOMAIN-SUFFIX,cailianpress.com,DIRECT 319 | DOMAIN-SUFFIX,camera360.com,DIRECT 320 | DOMAIN-SUFFIX,chaoxing.com,DIRECT 321 | DOMAIN-SUFFIX,chaoxing.com,DIRECT 322 | DOMAIN-SUFFIX,chinaso.com,DIRECT 323 | DOMAIN-SUFFIX,chuimg.com,DIRECT 324 | DOMAIN-SUFFIX,chunyu.mobi,DIRECT 325 | DOMAIN-SUFFIX,cmbchina.com,DIRECT 326 | DOMAIN-SUFFIX,cmbimg.com,DIRECT 327 | DOMAIN-SUFFIX,coolapk.com,DIRECT 328 | DOMAIN-SUFFIX,ctrip.com,DIRECT 329 | DOMAIN-SUFFIX,dfcfw.com,DIRECT 330 | DOMAIN-SUFFIX,dji.net,DIRECT 331 | DOMAIN-SUFFIX,docschina.org,DIRECT 332 | DOMAIN-SUFFIX,douban.com,DIRECT 333 | DOMAIN-SUFFIX,doubanio.com,DIRECT 334 | DOMAIN-SUFFIX,douyu.com,DIRECT 335 | DOMAIN-SUFFIX,dxycdn.com,DIRECT 336 | DOMAIN-SUFFIX,dytt8.net,DIRECT 337 | DOMAIN-SUFFIX,eastmoney.com,DIRECT 338 | DOMAIN-SUFFIX,eudic.net,DIRECT 339 | DOMAIN-SUFFIX,feng.com,DIRECT 340 | DOMAIN-SUFFIX,fengkongcloud.com,DIRECT 341 | DOMAIN-SUFFIX,frdic.com,DIRECT 342 | DOMAIN-SUFFIX,futu5.com,DIRECT 343 | DOMAIN-SUFFIX,futunn.com,DIRECT 344 | DOMAIN-SUFFIX,gandi.net,DIRECT 345 | DOMAIN-SUFFIX,gcores.com,DIRECT 346 | DOMAIN-SUFFIX,geilicdn.com,DIRECT 347 | DOMAIN-SUFFIX,getpricetag.com,DIRECT 348 | DOMAIN-SUFFIX,gifshow.com,DIRECT 349 | DOMAIN-SUFFIX,godic.net,DIRECT 350 | DOMAIN-SUFFIX,hicloud.com,DIRECT 351 | DOMAIN-SUFFIX,hongxiu.com,DIRECT 352 | DOMAIN-SUFFIX,hostbuf.com,DIRECT 353 | DOMAIN-SUFFIX,huxiucdn.com,DIRECT 354 | DOMAIN-SUFFIX,huya.com,DIRECT 355 | DOMAIN-SUFFIX,ibm.com,DIRECT 356 | DOMAIN-SUFFIX,infinitynewtab.com,DIRECT 357 | DOMAIN-SUFFIX,ithome.com,DIRECT 358 | DOMAIN-SUFFIX,java.com,DIRECT 359 | DOMAIN-SUFFIX,jianguoyun.com,DIRECT 360 | DOMAIN-SUFFIX,jianshu.com,DIRECT 361 | DOMAIN-SUFFIX,jianshu.io,DIRECT 362 | DOMAIN-SUFFIX,jidian.im,DIRECT 363 | DOMAIN-SUFFIX,kaiyanapp.com,DIRECT 364 | DOMAIN-SUFFIX,kaspersky-labs.com,DIRECT 365 | DOMAIN-SUFFIX,keepcdn.com,DIRECT 366 | DOMAIN-SUFFIX,kkmh.com,DIRECT 367 | DOMAIN-SUFFIX,lanzous.com,DIRECT 368 | DOMAIN-SUFFIX,licdn.com,DIRECT 369 | DOMAIN-SUFFIX,linkedin.com,DIRECT 370 | DOMAIN-SUFFIX,luojilab.com,DIRECT 371 | DOMAIN-SUFFIX,maoyan.com,DIRECT 372 | DOMAIN-SUFFIX,maoyun.tv,DIRECT 373 | DOMAIN-SUFFIX,mls-cdn.com,DIRECT 374 | DOMAIN-SUFFIX,mobike.com,DIRECT 375 | DOMAIN-SUFFIX,moke.com,DIRECT 376 | DOMAIN-SUFFIX,mubu.com,DIRECT 377 | DOMAIN-SUFFIX,myzaker.com,DIRECT 378 | DOMAIN-SUFFIX,nim-lang-cn.org,DIRECT 379 | DOMAIN-SUFFIX,ntp.org,DIRECT 380 | DOMAIN-SUFFIX,nvidia.com,DIRECT 381 | DOMAIN-SUFFIX,oracle.com,DIRECT 382 | DOMAIN-SUFFIX,pcbeta.com,DIRECT 383 | DOMAIN-SUFFIX,plex.tv,DIRECT 384 | DOMAIN-SUFFIX,qdaily.com,DIRECT 385 | DOMAIN-SUFFIX,qidian.com,DIRECT 386 | DOMAIN-SUFFIX,qyer.com,DIRECT 387 | DOMAIN-SUFFIX,qyerstatic.com,DIRECT 388 | DOMAIN-SUFFIX,raychase.net,DIRECT 389 | DOMAIN-SUFFIX,ronghub.com,DIRECT 390 | DOMAIN-SUFFIX,ruguoapp.com,DIRECT 391 | DOMAIN-SUFFIX,sankuai.com,DIRECT 392 | DOMAIN-SUFFIX,scomper.me,DIRECT 393 | DOMAIN-SUFFIX,seafile.com,DIRECT 394 | DOMAIN-SUFFIX,sm.ms,DIRECT 395 | DOMAIN-SUFFIX,smzdm.com,DIRECT 396 | DOMAIN-SUFFIX,snapdrop.net,DIRECT 397 | DOMAIN-SUFFIX,snwx.com,DIRECT 398 | DOMAIN-SUFFIX,s-reader.com,DIRECT 399 | DOMAIN-SUFFIX,sspai.com,DIRECT 400 | DOMAIN-SUFFIX,subhd.tv,DIRECT 401 | DOMAIN-SUFFIX,takungpao.com,DIRECT 402 | DOMAIN-SUFFIX,teamviewer.com,DIRECT 403 | DOMAIN-SUFFIX,tianyancha.com,DIRECT 404 | DOMAIN-SUFFIX,tophub.today,DIRECT 405 | DOMAIN-SUFFIX,uning.com,DIRECT 406 | DOMAIN-SUFFIX,weather.com,DIRECT 407 | DOMAIN-SUFFIX,weico.cc,DIRECT 408 | DOMAIN-SUFFIX,weidian.com,DIRECT 409 | DOMAIN-SUFFIX,xiachufang.com,DIRECT 410 | DOMAIN-SUFFIX,xiaoka.tv,DIRECT 411 | DOMAIN-SUFFIX,ximalaya.com,DIRECT 412 | DOMAIN-SUFFIX,xinhuanet.com,DIRECT 413 | DOMAIN-SUFFIX,xmcdn.com,DIRECT 414 | DOMAIN-SUFFIX,yangkeduo.com,DIRECT 415 | DOMAIN-SUFFIX,yizhibo.com,DIRECT 416 | DOMAIN-SUFFIX,zhangzishi.cc,DIRECT 417 | DOMAIN-SUFFIX,zhihu.com,DIRECT 418 | DOMAIN-SUFFIX,zhihuishu.com,DIRECT 419 | DOMAIN-SUFFIX,zhimg.com,DIRECT 420 | DOMAIN-SUFFIX,zhuihd.com,DIRECT 421 | 422 | DOMAIN,download.jetbrains.com,DIRECT 423 | DOMAIN,images-cn.ssl-images-amazon.com,DIRECT -------------------------------------------------------------------------------- /icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/icon.jpg -------------------------------------------------------------------------------- /icons/monk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/icons/monk.png -------------------------------------------------------------------------------- /icons/ranlv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/icons/ranlv.jpg -------------------------------------------------------------------------------- /icons/readme.md: -------------------------------------------------------------------------------- 1 | # 2021年1月22日,未免仓库太臃肿不好查找内容,本图标仓库转移到专用仓库https://github.com/sngxpro/icons 2 | 3 | # 此仓库不再更新,请按上述链接查找新资源 4 | 5 | 6 | 7 | ## 效果展示 8 | 9 | 10 | 11 | 12 | 13 | ## 说明文档 14 | 15 | 1、上面每个文件夹中,都是一套策略图标组。根据文件名选择任意喜欢的。 16 | 17 | 2、进入文件夹后,选择喜欢的图标,复制左侧的链接地址。 18 | 19 | 3、打开圈x app,找到策略组,长按,在弹出的窗口中找到“图标”,并在下方粘贴上复制的地址,保存。 20 | 21 | 4、回到圈x首页,即可看到修改效果。 22 | 23 | 5、少数策略组在第3步时无法保存,可以直接修改配置文件。方法如下: 24 | 25 | 5-1、打开圈x的设置--配置文件 26 | 27 | 5-2、找到[policy]标签 28 | 29 | 5-3、找到对应想修改的策略组,将其“img=” 后面的链接替换为第3步中复制的链接 30 | 31 | 5-4、保存配置文件,并回到圈x首页即可看到效果。 32 | 33 | 34 | ## 其他说明 35 | 36 | ### 必须保持科学上网状态,才能正常读取远程图标样式。 37 | -------------------------------------------------------------------------------- /icons/tom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/icons/tom.png -------------------------------------------------------------------------------- /icons/zuoyebang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/icons/zuoyebang.png -------------------------------------------------------------------------------- /node.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/node.jpg -------------------------------------------------------------------------------- /pic/0301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/0301.png -------------------------------------------------------------------------------- /pic/1301.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/1301.jpg -------------------------------------------------------------------------------- /pic/1302.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/1302.jpg -------------------------------------------------------------------------------- /pic/Ariszy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/Ariszy.png -------------------------------------------------------------------------------- /pic/cdle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/cdle.png -------------------------------------------------------------------------------- /pic/ddo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/ddo.png -------------------------------------------------------------------------------- /pic/dwnc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/dwnc.png -------------------------------------------------------------------------------- /pic/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/green.png -------------------------------------------------------------------------------- /pic/hyzaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/hyzaw.png -------------------------------------------------------------------------------- /pic/hzh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/hzh.png -------------------------------------------------------------------------------- /pic/jay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/jay.png -------------------------------------------------------------------------------- /pic/jiejie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/jiejie.png -------------------------------------------------------------------------------- /pic/longzhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/longzhu.png -------------------------------------------------------------------------------- /pic/lxk0301.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/lxk0301.png -------------------------------------------------------------------------------- /pic/mopo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/mopo.png -------------------------------------------------------------------------------- /pic/moyushouji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/moyushouji.png -------------------------------------------------------------------------------- /pic/ningmeng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/ningmeng.png -------------------------------------------------------------------------------- /pic/ql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/ql.png -------------------------------------------------------------------------------- /pic/readme.md: -------------------------------------------------------------------------------- 1 | 文中配图仓库 2 | -------------------------------------------------------------------------------- /pic/souhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/souhu.png -------------------------------------------------------------------------------- /pic/wen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/wen.png -------------------------------------------------------------------------------- /pic/xiaomang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/xiaomang.png -------------------------------------------------------------------------------- /pic/xiaopu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/xiaopu.png -------------------------------------------------------------------------------- /pic/ziye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/ziye.png -------------------------------------------------------------------------------- /pic/zoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/zoo.png -------------------------------------------------------------------------------- /pic/图像-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/图像-3.png -------------------------------------------------------------------------------- /pic/微信图片_20210430105407.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OreosCafe/QuanX/599bfb51554b8166b095b3e97d66b4dda7a1f540/pic/微信图片_20210430105407.jpg -------------------------------------------------------------------------------- /rewrite/CookieJD.conf: -------------------------------------------------------------------------------- 1 | hostname = wq.jd.com, un.m.jd.com, api.m.jd.com 2 | 3 | # 微信访问含有会员机制的京东自营店会员页面 4 | ^https?://wq\.jd\.com/pinbind/pintokenredirect url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/NE.cookie.js 5 | # 访问京东APP内嵌了H5页面:后台杀京东APP后再进入或进首页的免费水果都可获取 6 | ^https?://un\.m\.jd\.com/cgi-bin/app/appjmp url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/NE.cookie.js 7 | # 复制 https://bean.m.jd.com/bean/signIndex.action 或 https://home.m.jd.com/myJd/newhome.action 地址到浏览器打开,登录后可自动获取Cookie,没成功就登录后再次访问下之前复制的地址 8 | ^https?://api\.m\.jd\.com/client\.action\?functionId=(signBean|trade_config) url script-request-header https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/NE.cookie.js 9 | -------------------------------------------------------------------------------- /rewrite/IP.js: -------------------------------------------------------------------------------- 1 | if ($response.statusCode != 200) { 2 | $done(Null); 3 | } 4 | 5 | var body = $response.body; 6 | var obj = JSON.parse(body); 7 | var title = obj['country']; 8 | var subtitle = obj['city'] + ' ' + obj['isp']; 9 | var ip = obj['query']; 10 | var description = "国家" + ":" + obj['country'] + '\n' + "城市" + ":" + obj['city'] + '\n' + "运营商" + ":" + obj['isp'] + '\n' + "数据中心" + ":" + obj['org']; 11 | 12 | 13 | $done({title, subtitle, ip, description}); -------------------------------------------------------------------------------- /rewrite/YouTube.conf: -------------------------------------------------------------------------------- 1 | hostname = *.googlevideo.com,*.youtube\.com 2 | 3 | #新版YouTube去广告 4 | # 油管去广告 5 | (^https?:\/\/(?!redirector)[\w-]+\.googlevideo\.com\/(?!dclk_video_ads).+)(ctier=L)(&.+) url 302 $1$4 6 | ^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+(&oad|ctier) url reject 7 | 8 | ^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads url reject 9 | ^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking) url reject 10 | ^https?:\/\/\s.youtube.com/api/stats/qoe?.*adformat= url reject 11 | -------------------------------------------------------------------------------- /rewrite/csxdr.conf: -------------------------------------------------------------------------------- 1 | hostname = market.renyouwangluo.cn,api-access.pangolin-sdk-toutiao.com 2 | 3 | #超市小达人视频 4 | https://api-access.pangolin-sdk-toutiao.com/api/ad/union/sdk/reward_video/reward/ url script-request-body https://raw.githubusercontent.com/age174/-/main/csxdr.js 5 | #超市小达人红包 6 | https://market.renyouwangluo.cn/api/redbag/normal url script-request-body https://raw.githubusercontent.com/age174/-/main/csxdr.js 7 | -------------------------------------------------------------------------------- /rewrite/debao.conf: -------------------------------------------------------------------------------- 1 | hostname = h5.youzan.com 2 | 3 | https://h5.youzan.com/wscump/checkin/checkin.json\?.+ url script-request-header https://raw.githubusercontent.com/ddgksf2013/Cuttlefish/master/Script/debao.js 4 | -------------------------------------------------------------------------------- /rewrite/dsjziye888.conf: -------------------------------------------------------------------------------- 1 | hostname = * 2 | 3 | #电视家获取header 4 | http://.+/api/v2/device/info url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/dsj.js 5 | 6 | #电视家获取url 7 | http://api.gaoqingdianshi.com/api/* url script-request-header https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/dsj.js 8 | -------------------------------------------------------------------------------- /rewrite/dwyjy.conf: -------------------------------------------------------------------------------- 1 | hostname = zoon.renyouwangluo.cn,api-access.pangolin-sdk-toutiao.com 2 | 3 | #动物研究院视频 4 | https://api-access.pangolin-sdk-toutiao.com/api/ad/union/sdk/reward_video/reward/ url script-request-body https://raw.githubusercontent.com/age174/-/main/dwyjy.js 5 | #动物研究院红包 6 | https://zoon.renyouwangluo.cn/api/redbag/normal url script-request-body https://raw.githubusercontent.com/age174/-/main/dwyjy.js 7 | -------------------------------------------------------------------------------- /rewrite/jddsh.conf: -------------------------------------------------------------------------------- 1 | hostname = * 2 | 3 | ############## 圈x 4 | #京东待收货获取body 5 | https://.+/*functionId=wait4Delivery url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/jddsh.js 6 | -------------------------------------------------------------------------------- /rewrite/jdtqapi.conf: -------------------------------------------------------------------------------- 1 | hostname = api.jiandantianqi.com, 2 | 3 | //简单天气获取api body 抽奖 4 | https:\/\/api\.jiandantianqi\.com\/ url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/jdtq.js 5 | -------------------------------------------------------------------------------- /rewrite/jdtqbody.conf: -------------------------------------------------------------------------------- 1 | hostname =zt.jiandantianqi.com, 2 | 3 | //简单天气获取zt body 日常任务 4 | https:\/\/zt\.jiandantianqi\.com\/ url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/jdtq.js 5 | -------------------------------------------------------------------------------- /rewrite/jdtqevent.conf: -------------------------------------------------------------------------------- 1 | hostname = event.jiandantianqi.com 2 | 3 | //简单天气获取event body 吃饭 竞猜 4 | https:\/\/event\.jiandantianqi\.com\/ url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/jdtq.js 5 | -------------------------------------------------------------------------------- /rewrite/jxdl.conf: -------------------------------------------------------------------------------- 1 | hostname = m.jingxi.com 2 | 3 | #京喜工厂收取电力 4 | https://m.jingxi.com/dreamfactory/generator/CollectCurrentElectricity? url script-request-header https://raw.githubusercontent.com/ZhiYi-N/Private-Script/master/Scripts/jxcollect.js 5 | -------------------------------------------------------------------------------- /rewrite/noads.conf: -------------------------------------------------------------------------------- 1 | hostname = mp.weixin.qq.com, api.gamer.com.tw, trade-acs.m.taobao.com, api.m.jd.com, ios.prod.ftl.netflix.com, *.amemv.com,api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, homepage-api.smzdm.com, haojia-api.smzdm.com, article-api.smzdm.com, haojia.m.smzdm.com, app-api.smzdm.com, s-api.smzdm.com 2 | 3 | # 抖音去广告去水印 (By Choler) 4 | ^https?:\/\/.+?\.amemv\.com\/aweme\/v\d\/(feed|aweme\/post|follow\/feed|nearby\/feed|search\/item|general\/search\/single|hot\/search\/video\/list)\/ url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Aweme.js 5 | ^https?:\/\/.+?\.amemv\.com\/aweme\/v\d\/(feed|aweme\/post|follow\/feed|nearby\/feed|search\/item|general\/search\/single|hot\/search\/video\/list)\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Aweme.js 6 | 7 | # 去微信公众号广告 (By Choler) 8 | ^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js 9 | 10 | # 微博去广告(By yichahucha) 11 | ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js 12 | ^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) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js 13 | 14 | 15 | # 哔哩哔哩番剧开启1080P+ 16 | ^https:\/\/ap(p|i)\.bilibili\.com\/((pgc\/player\/api\/playurl)|(x\/v2\/account\/myinfo\?)|(x\/v2\/account/mine\?)) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilifj.js 17 | 18 | # 京东比价 19 | ^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js 20 | 21 | # 淘宝比价 22 | ^http://.+/amdc/mobileDispatch url script-request-body https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js 23 | ^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js 24 | 25 | # Netflix评分 26 | ^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-request-header https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js 27 | ^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js 28 | 29 | 30 | # 什么值得买(By blackmatrix7) 31 | ^https:\/\/homepage-api.smzdm.com\/home url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 32 | ^https:\/\/haojia-api.smzdm.com\/home\/list url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 33 | ^https:\/\/article-api.smzdm.com\/article\/index_home_page url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 34 | -------------------------------------------------------------------------------- /rewrite/palipalivip.conf: -------------------------------------------------------------------------------- 1 | hostname = api.*.com,api.*.cn 2 | 3 | #啪哩啪哩解锁vip+下载次数+无限观影+清晰度权限 4 | ^https:\/\/api\.(.+)\.*\/(v1\/user\/info|v1\/user\/promote\/info) url script-response-body https://raw.githubusercontent.com/sngxpro/QuantumultX/master/palipali/palipali.js 5 | 6 | #注意!!此订阅使用了泛域名解析,和很多其他脚本、规则冲突,一定现用现开,不看视频了就关掉这个订阅!最好是看视频时用这个不开别的,不看了关这个开别的。以防出现错误 7 | -------------------------------------------------------------------------------- /rewrite/price.conf: -------------------------------------------------------------------------------- 1 | hostname = api.m.jd.com, trade-acs.m.taobao.com 2 | 3 | #如果京东入会开卡打开无网络,是因为比价主机名导致,可以关闭本条重写规则解决 4 | #其他问题:暂时没有 5 | 6 | # Author: StimeKe (https://github.com/StimeKe) 7 | # 京东比价 8 | # 比价信息显示在商品下方 9 | ^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig) url script-response-body https://service.2ti.st/QuanX/Script/jd_tb_price/main.js 10 | 11 | # 淘宝比价 12 | # 历史价格在“保障”中显示,需要点击“保障”才能看到,和京东不一样 13 | # “保障”显示在商品下方 14 | ^http://.+/amdc/mobileDispatch url script-request-body https://service.2ti.st/QuanX/Script/jd_tb_price/main.js 15 | ^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail url script-response-body https://service.2ti.st/QuanX/Script/jd_tb_price/main.js 16 | -------------------------------------------------------------------------------- /rewrite/qianhetask.conf: -------------------------------------------------------------------------------- 1 | hostname = www.qianhe5.com,www.mohe9.com 2 | 3 | #千禾阅读任务重写 4 | https://www.*com/read/v1/get_time_list url script-request-body https://raw.githubusercontent.com/age174/-/main/qhyd.js 5 | -------------------------------------------------------------------------------- /rewrite/qianheuser.conf: -------------------------------------------------------------------------------- 1 | hostname = www.qianhe5.com,www.mohe9.com 2 | 3 | 4 | #千禾阅读个人信息和领取重写 5 | https://www.qianhe5.com/ url script-request-header https://raw.githubusercontent.com/age174/-/main/qhyd.js 6 | -------------------------------------------------------------------------------- /rewrite/qx_rewite.txt: -------------------------------------------------------------------------------- 1 | hostname = kd.youth.cn, ios.baertt.com 2 | 3 | https:\/\/kd\.youth\.cn\/WebApi\/NewTaskIos\/getTaskList url script-request-header https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth.js 4 | 5 | https:\/\/ios\.baertt\.com\/v5\/article\/info\/get\.json url script-request-header https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth.js 6 | 7 | https:\/\/ios\.baertt\.com\/v5\/user\/stay\.json url script-request-body https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth.js 8 | 9 | https:\/\/ios\.baertt\.com\/v5\/task\/browse_start\.json url script-request-body https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth_gain.js 10 | 11 | https:\/\/ios\.baertt\.com\/v5\/Nameless\/adlickstart\.json url script-request-body https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth_gain.js 12 | 13 | https:\/\/ios\.baertt\.com\/v5\/\w+\/withdraw\d?\.json url script-request-body https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/youth.js 14 | -------------------------------------------------------------------------------- /rewrite/qx_youthread.txt: -------------------------------------------------------------------------------- 1 | hostname = ios.baertt.com 2 | 3 | https:\/\/ios\.baertt\.com\/v5\/article\/info\/get\.json url script-request-header https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/Youth_Read.js 4 | 5 | https:\/\/ios\.baertt\.com\/v5\/user\/stay\.json url script-request-body https://raw.githubusercontent.com/GoodHolidays/Scripts/master/Task/Youth_Read.js 6 | -------------------------------------------------------------------------------- /rewrite/readme.md: -------------------------------------------------------------------------------- 1 | ## Quantumult X 少年歌行pro 部分重写规则订阅 2 | 3 | ### 订阅: 4 | 5 | 1、已集成到懒人包中,如果使用懒人包无需手动使用本文件夹中的资源
6 | 2、如果您自建圈x配置文件,或者使用其他懒人配置恰好缺少此文件夹中的规则,可以自取添加到您圈x的配置文件中
7 | 8 | ### 说明 9 | 本仓库只为收集整理所建,多数资源来自其他大神,在此致谢。 10 | 11 | 12 | #解锁限制类规则,根据需要选择是否开启 13 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/tiktokJP.conf, tag=tiktok解锁日区(勿混用), update-interval=86400, opt-parser=true, enabled=true 14 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/tiktokTW.conf, tag=tiktok解锁台区(勿混用), update-interval=86400, opt-parser=true, enabled=false 15 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/tiktokKR.conf, tag=tiktok解锁韩区(勿混用), update-interval=86400, opt-parser=true, enabled=false 16 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/tiktokUS.conf, tag=tiktok解锁美区(勿混用), update-interval=86400, opt-parser=true, enabled=false 17 | #boxjs规则,强烈建议保持开启 18 | https://ghproxy.com/https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.quanx.conf, tag=BoxJs, update-interval=86400, opt-parser=true, enabled=true 19 | #比价格规则,根据需要选择是否开启 20 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/price.conf, tag=淘宝京东比价格, update-interval=86400, opt-parser=false, enabled=true 21 | #去广告类规则,建议保持开启,但抓取一些看广告得奖励cookie是要关闭 22 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/YouTube.conf, tag=YouTube去广告, update-interval=86400, opt-parser=false, enabled=true 23 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/Rewrite_lhie1.conf, tag=lhie1去广告, update-interval=86400, opt-parser=false, enabled=true 24 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/Advertising.conf, tag=神机去广告, update-interval=86400, opt-parser=false, enabled=true 25 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/General.conf, tag=神机重定向, update-interval=86400, opt-parser=false, enabled=true 26 | #破解软件规则,建议用的时候开启 27 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/unlockvip.conf, tag=少年歌行解锁vip, update-interval=86400, opt-parser=false, enabled=true 28 | #京东代收货获取ck,和其他规则都冲突,用时候勾选,抓到cookie后立即关闭 29 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jddsh.conf, tag=京东待收货(和其他规则都冲突抓完关), update-interval=86400, opt-parser=false, enabled=false 30 | #获取cookie类重写,现抓ck现启用,且注意我单列的基本是互相冲突的 31 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/cookie.conf, tag=获取Cookie(现抓现打勾), update-interval=86400, opt-parser=false, enabled=true 32 | https://cdn.jsdelivr.net/gh/Oreomeow/QuanX@master/rewrite/csxdr.conf, tag=超市小达人获取ck(与获取cookie、动物研究规则冲突), update-interval=86400, opt-parser=false, enabled=true 33 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/dwyjy.conf, tag=动物研究院获取ck(与获取cookie、超市、网红规则冲突), update-interval=86400, opt-parser=false, enabled=false 34 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/wdwhd.conf, tag=我的网红店获取ck(与获取cookie、超市、动物规则冲突), update-interval=86400, opt-parser=false, enabled=false 35 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/debao.conf, tag=德宝小程序(与获取cookie规则冲突), update-interval=86400, opt-parser=false,enabled=false 36 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/yyzb.conf, tag=云云赚呗(与其他规则冲突), update-interval=86400, opt-parser=false, enabled=false 37 | #下方是可选配置,注意tag说明 38 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qianheuser.conf, tag=肥皂千禾账户ck先开(不和后开同时打勾), update-interval=86400, opt-parser=false, enabled=false 39 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qianhetask.conf, tag=肥皂千禾任务ck后开(不和先开同时打勾), update-interval=86400, opt-parser=false, enabled=false 40 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/shuqiheader.conf, tag=ziye书旗ck先开(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 41 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/shuqibody.conf, tag=ziye书旗ck后开(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 42 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/shuqibook.conf, tag=ziye书旗书城ck(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 43 | https://ghproxy.com/https://raw.githubusercontent.com/CenBoMin/GithubSync/main/SHUQI/cookie.conf, tag=姐姐书旗一般ck(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 44 | https://ghproxy.com/https://raw.githubusercontent.com/CenBoMin/GithubSync/main/SHUQI/spcookie.conf, tag=姐姐书旗极速ck(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 45 | https://ghproxy.com/https://raw.githubusercontent.com/CenBoMin/GithubSync/main/SHUQI/lottery.conf, tag=姐姐书旗一般转转转ck(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 46 | https://ghproxy.com/https://raw.githubusercontent.com/CenBoMin/GithubSync/main/SHUQI/everday.conf, tag=姐姐书旗刷时长ck(不能和其他书旗同时打勾), update-interval=86400, opt-parser=false, enabled=false 47 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qx_rewite.txt, tag=sunert中青cookie获取, update-interval=86400, opt-parser=false, enabled=false 48 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qx_youthread.txt, tag=sunert中青阅读body获取, update-interval=86400, opt-parser=false, enabled=false 49 | https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/rewrite-zqkkz.plugin, tag=中青看看赚&浏览赚Cookie获取(需资源解析器), update-interval=86400, opt-parser=true, enabled=false 50 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqbody.conf, tag=简单天气body(第一个开,单独开), update-interval=86400, opt-parser=false, enabled=false 51 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqapi.conf, tag=简单天气api(第二个开,单开), update-interval=86400, opt-parser=false, enabled=false 52 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqevent.conf, tag=简单天气event(第三个开,单开), update-interval=86400, opt-parser=false, enabled=false 53 | -------------------------------------------------------------------------------- /rewrite/self.conf: -------------------------------------------------------------------------------- 1 | hostname = ibestfanli.com 2 | 3 | #考状元娶老婆 4 | https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin url script-request-header https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/qlp.js 5 | -------------------------------------------------------------------------------- /rewrite/shuqibody.conf: -------------------------------------------------------------------------------- 1 | hostname = render.shuqireader.com, ocean.shuqireader.com, jcollection.shuqireader.com, activity-center-web.shuqireader.com, 2 | 3 | #书旗小说获取body 4 | #阅读 签到 补签 分享 奖励 收取奖励 每日阅读 抽奖次数 抽奖 极速版视频 极速版签到视频 极速版阅读 极速版签到 极速版补签 极速版分享 极速版书城 5 | https:\/\/ocean\.shuqireader\.com\/* url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/shuqi.js 6 | #收益 任务 极速版任务 7 | https:\/\/render\.shuqireader\.com\/* url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/shuqi.js 8 | #时长 9 | https:\/\/jcollection\.shuqireader\.com\/* url script-request-body https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/shuqi.js 10 | -------------------------------------------------------------------------------- /rewrite/shuqibook.conf: -------------------------------------------------------------------------------- 1 | hostname = render.shuqireader.com, ocean.shuqireader.com, jcollection.shuqireader.com, activity-center-web.shuqireader.com, 2 | 3 | 4 | #极速版书城 5 | http:\/\/activity-center-web\.shuqireader\.com\/* url script-request-header https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/shuqi.js 6 | -------------------------------------------------------------------------------- /rewrite/shuqiheader.conf: -------------------------------------------------------------------------------- 1 | hostname = render.shuqireader.com, ocean.shuqireader.com, jcollection.shuqireader.com, activity-center-web.shuqireader.com, 2 | 3 | #书旗小说获取header 4 | #用户名 补签签到页 视频任务 抽奖页 极速版签到视频页 极速版补签签到页 极速版书城 极速版视频任务 5 | https:\/\/ocean\.shuqireader\.com\/* url script-request-header https://cdn.jsdelivr.net/gh/ziye888/JavaScript@main/Task/shuqi.js 6 | -------------------------------------------------------------------------------- /rewrite/tiktokJP.conf: -------------------------------------------------------------------------------- 1 | hostname = *.tiktokv.com, *.byteoversea.com, *.tik-tokapi.com 2 | 3 | (?<=_region=)CN(?=&) url 307 JP 4 | (?<=&mcc_mnc=)4 url 307 2 5 | ^(https?:\/\/(tnc|dm)[\w-]+\.\w+\.com\/.+)(\?)(.+) url 302 $1$3 6 | (?<=\d\/\?\w{7}_\w{4}=)1[6-9]..(?=.?.?&) url 307 17 7 | -------------------------------------------------------------------------------- /rewrite/tiktokKR.conf: -------------------------------------------------------------------------------- 1 | hostname = *.tiktokv.com, *.byteoversea.com, *.tik-tokapi.com 2 | 3 | (?<=_region=)CN(?=&) url 307 KR 4 | (?<=&mcc_mnc=)4 url 307 2 5 | ^(https?:\/\/(tnc|dm)[\w-]+\.\w+\.com\/.+)(\?)(.+) url 302 $1$3 6 | (?<=\d\/\?\w{7}_\w{4}=)1[6-9]..(?=.?.?&) url 307 17 7 | -------------------------------------------------------------------------------- /rewrite/tiktokTW.conf: -------------------------------------------------------------------------------- 1 | hostname = *.tiktokv.com, *.byteoversea.com, *.tik-tokapi.com 2 | 3 | (?<=_region=)CN(?=&) url 307 TW 4 | (?<=&mcc_mnc=)4 url 307 2 5 | ^(https?:\/\/(tnc|dm)[\w-]+\.\w+\.com\/.+)(\?)(.+) url 302 $1$3 6 | (?<=\d\/\?\w{7}_\w{4}=)1[6-9]..(?=.?.?&) url 307 17 7 | -------------------------------------------------------------------------------- /rewrite/tiktokUS.conf: -------------------------------------------------------------------------------- 1 | hostname = *.tiktokv.com, *.byteoversea.com, *.tik-tokapi.com 2 | 3 | (?<=_region=)CN(?=&) url 307 US 4 | (?<=&mcc_mnc=)4 url 307 2 5 | ^(https?:\/\/(tnc|dm)[\w-]+\.\w+\.com\/.+)(\?)(.+) url 302 $1$3 6 | (?<=\d\/\?\w{7}_\w{4}=)1[6-9]..(?=.?.?&) url 307 17 7 | -------------------------------------------------------------------------------- /rewrite/unlockvip.md: -------------------------------------------------------------------------------- 1 | ### 当前支持的vip解锁功能 2 | 3 | #### 1、公众号:少年歌行pro 独立製作的规则 4 | ``` 5 | new:儿歌点点解锁vip 6 | 7 | 1、七猫小说解锁vip 8 | 9 | 2、啪哩啪哩解锁vip+下载次数+无限观影+清晰度权限(需独立规则不和其他规则混用) 10 | 11 | 3、樊登读书解锁付费书籍 12 | 13 | 4、樊登读书解锁付费课程 14 | 15 | 5、樊登读书解锁vip【失效未解决】 16 | 17 | 6、桃子视频解锁会员【失效未解决】 18 | 19 | 7、辣椒视频解锁会员 20 | 21 | 8、69视频解锁会员 22 | 23 | 9、pythonai破解vip 24 | 25 | 10、酷咪视频解锁vip 26 | 27 | 11、电子请柬制作 - 婚礼邀请函制作必备APP 破解vip 28 | 29 | 12、儿童睡前故事破解vip 30 | 31 | 13、咪哩视频破解 32 | 33 | 14、微信听书解锁vip 34 | 35 | 15、奥利给直播解锁vip【已找不到下载地址了】 36 | 37 | 16、录丸解锁vip 38 | 39 | 17、2496音乐解锁vip 40 | 41 | 18、黄瓜视频无限观影 + 解锁付费影片(好久不用了不确定是否失效) 42 | ``` 43 | #### 2、公众号:ios黑科技制作的18禁app破解规则及下载地址 44 | ``` 45 | 1、三更解锁VIP无限看(邀请码为破解作者本人的) 46 | #下载地址:https://blwtgwe.cn/5858489?tmp=dy&dir=0 47 | 48 | 2、快撸解锁会员无限看(邀请码为破解作者本人的) 49 | #下载地址:https://klicqi.xyz?p=VSG36N 50 | 51 | 3、百丽宫解锁VIP(邀请码为破解作者本人的) 52 | #下载地址:https://hkj.lanzous.com/ie7zAnexo2b 53 | #网页版:http://1.blg579.xyz 54 | 55 | 4、咪哩视频(邀请码为破解作者本人的) 56 | #下载地址:http://69n1.cn 57 | 58 | 5、独品社区解锁会员(邀请码为破解作者本人的) 59 | #下载地址:(任意号注册不限制,不收验证码)(邀请码:K4GPHE) 60 | #https://wws.lanzous.com/s/seyou01 61 | #https://wws.lanzous.com/s/seyou02 62 | 63 | 6、菠萝视频解锁无限看(邀请码为破解作者本人的) 64 | #下载地址:https://aff.polomv.com/af/edrJ 65 | 66 | 7、AV波波解锁VIP无限看(邀请码为破解作者本人的) 67 | #下载地址; 68 | 69 | 8、LUTU解锁VIP无限看(邀请码为破解作者本人的) 70 | #下载地址:https://s-lutu.me 71 | 72 | 9、新春水解锁无限看(邀请码为破解作者本人的) 73 | #下载地址:https://tm9ji.com/share?code=7K5W8 74 | 75 | 10、丝瓜解锁VIP视频无限看(邀请码为破解作者本人的) 76 | #下载地址:https://sigua001.com?_s=KKLADF 77 | 78 | 11、涩里番VIP视频无限看(邀请码为破解作者本人的) 79 | #下载地址:https://slf506.com?_s=XELGEF 80 | 81 | 12、50度灰解锁VIP无限看(邀请码为破解作者本人的) 82 | #下载地址:http://club.i50dh.net/chan/h50269/G5yU 83 | 84 | 13、探花解锁VIP会员(邀请码为破解作者本人的) 85 | #下载地址无需注册:https://tanhua.app 86 | 87 | 14、蜜桃解锁VIP无限看(邀请码为破解作者本人的) 88 | #下载地址:https://mtlebh.xyz?p=Q7HB6L 89 | 90 | 15、91桃色解锁VIP无限看(邀请码为破解作者本人的) 91 | #下载地址:https://tsmanu.xyz?p=C4GSB1 92 | 93 | 16、草榴短视频解锁VIP无限看(邀请码为破解作者本人的) 94 | #下载地址:https://sppsge.xyz?p=OG8LDJ 95 | 96 | 17、陌陌视频解锁VIP无限看(邀请码为破解作者本人的) 97 | #下载地址:https://mmxbpr.xyz?p=VOD9J6 98 | 99 | 18、知音视频解锁VIP无限看(邀请码为破解作者本人的) 100 | #下载地址:https://sghoxm.xyz?p=WD44PJ 101 | 102 | 19、#丁丁解锁VIP无限看(邀请码为破解作者本人的) 103 | #下载地址:https://dd472dhgs.vsrbxv.online/wsh4689.html?pkg=dd0001&inviteCode=CKWUEL 104 | 105 | 20、#DJ秀 106 | #商店直接搜索(邀请码为破解作者本人的) 107 | 108 | 21、葫芦娃解锁VIP无限看(邀请码为破解作者本人的) 109 | #葫芦娃下载地址:http://share.5heocbzxjnui.space/api/open/video/share/default.html?a=uv6c9m&b=1&t=0hiyom 110 | 111 | 22、面包和刺儿通用解锁会员(邀请码为破解作者本人的) 112 | #面包和刺儿下载地址: 113 | https://apps.apple.com/cn/app/id1406687423 114 | https://apps.apple.com/cn/app/id1546180377 115 | 116 | 23、91视频解锁VIP无限看(邀请码为破解作者本人的) 117 | #下载地址: 118 | https://app.uzlb.xyz/i-SR94P7 119 | https://app.1zp8.xyz/i-SR94P7 120 | 121 | 24、麻豆短视频解锁会员和付费(邀请码为破解作者本人的) 122 | #下载地址无需注册:https://mdsv01.com/?pc=5e339d60-7605-4ccc-bfb9-68bf84f784b7 123 | 124 | 25、通用订阅解锁(邀请码为破解作者本人的) 125 | 126 | 26、雪梨解锁VIP无限看(邀请码为破解作者本人的) 127 | #下载地址:http://15mjk62.live/?code=Z99CVJ&channel=poster 128 | 129 | 27、Pear解锁会员无限看(邀请码为破解作者本人的) 130 | #下载地址:https://www.pears.live?ivcode=DUJ7&t=20210504 131 | 132 | 28、硬汉解锁VIP无限看(邀请码为破解作者本人的) 133 | #下载地址(任意邮箱注册,务必注册一下,延长会员时间 134 | #我的界面-无限观看-中间输入邀请码:IN7719862) 135 | https://in14.xyz 136 | 137 | 29、蛋壳解锁VIP无限看(邀请码为破解作者本人的) 138 | #下载地址:https://dks.shantianwuyu.com/1/3378149.html 139 | 140 | 30、健康解锁VIP无限看(邀请码为破解作者本人的) 141 | #下载地址邀请码:JK8488151 142 | https://jjkk.life 143 | 144 | 31、啪啪解锁视频无限看(邀请码为破解作者本人的) 145 | #下载地址邀请码:PWTIHQ 146 | http://uarnu.com/l1Uo0w4?icode=PWTIHQ 147 | 148 | 32、辣椒解锁会员去广告(邀请码为破解作者本人的) 149 | #下载地址:http://v.sj6.live/?code=S48DGK 150 | 151 | ``` 152 | #### 3、公众号:墨鱼手记 独立製作的规则 153 | ``` 154 | 1、财新周刊 解锁会员文章 155 | 156 | 2、医考帮解锁vip 157 | 158 | 3、Scanner Pro 解锁会员权限 159 | 160 | 4、Prisma 161 | ``` 162 | #### 4、HCJS-8 制作的 规则 163 | ``` 164 | 1、91视频解锁vip 165 | ``` 166 | #### 5、reapple制作的规则 167 | ``` 168 | 1、探花Lives解锁会员去广告 169 | ``` 170 | #### 6、qianmo001制作的规则(作者qq群:528680197) 171 | ``` 172 | 1、知音漫客解锁vip 173 | 174 | 2、羞羞漫画解锁vip 175 | ``` 176 | #### 7、 nobyda制作的规则 177 | ``` 178 | 1、百度云盘解锁视频在线播放和倍速 179 | 180 | 2、酷我音乐vip解锁 181 | 182 | 3、vsco解锁vip. 183 | 184 | 4、网易蜗牛读书解锁会员 185 | ``` 186 | #### 8、photonmang制作的规则 187 | ``` 188 | 1、keep解锁vip 189 | 190 | 2、小小影视解锁无限观影无限下载特权 191 | 192 | 3、蜗牛睡眠 全功能解锁VIP&付费音 193 | 194 | 4、大象冥想 解锁VIP&付费音乐 195 | ``` 196 | #### 9、sirsunknight制作的规则 197 | ``` 198 | 1、白描解锁黄金vip 199 | ``` 200 | -------------------------------------------------------------------------------- /rewrite/useinfo.md: -------------------------------------------------------------------------------- 1 | 1、请将下方代码粘贴到圈x配置文件的[rewrite remote]标签下面: 2 | 3 | ``` 4 | #除palipali外所有规则 5 | https://raw.githubusercontent.com/sngxpro/QuanX/master/rewrite/unlockvip.conf, tag=少年歌行解锁vip, update-interval=86400, opt-parser=false, enabled=true 6 | ``` 7 | 8 | ``` 9 | #palipali单独规则,不要混用,用时勾选这个,取消勾选其他 10 | https://raw.githubusercontent.com/sngxpro/QuanX/master/rewrite/palipalivip.conf, tag=少年歌行啪哩vip, update-interval=86400, opt-parser=false, enabled=true 11 | ``` 12 | 13 | 2、回到圈x首页,长按左下角风车按钮,在点击左下角刷新按钮,全部刷新完毕即可生效 14 | 15 | 3、尽量不要与其他破解类规则共用,以防出现冲突失效问题 16 | 17 | 4、注意自己的本地重写和本地mitm中是否引用过破解类规则,以防冲突失效。 18 | -------------------------------------------------------------------------------- /rewrite/wdwhd.conf: -------------------------------------------------------------------------------- 1 | hostname = tinygame-api.beijingqianji.com,api-access.pangolin-sdk-toutiao.com 2 | 3 | #我的网红店视频 4 | https://api-access.pangolin-sdk-toutiao.com/api/ad/union/sdk/reward_video/reward/ url script-request-body https://raw.githubusercontent.com/age174/-/main/wdwhd.js 5 | #我的网红店红包 6 | https://tinygame-api.beijingqianji.com/en/check/imp_callback url script-request-body https://raw.githubusercontent.com/age174/-/main/wdwhd.js 7 | -------------------------------------------------------------------------------- /rewrite/yyzb.conf: -------------------------------------------------------------------------------- 1 | hostname = \w+.\w+.com 2 | 3 | http://\w+.\w+.com url script-request-header https://raw.githubusercontent.com/xl2101200/-/main/yyzb.js 4 | -------------------------------------------------------------------------------- /scripts/backup/1.py: -------------------------------------------------------------------------------- 1 | from telethon import TelegramClient, events, sync 2 | 3 | import httpx 4 | import time 5 | import json 6 | import re 7 | import asyncio 8 | 9 | # pip3 install telethon pysocks httpx 或者 py -3 -m pip install telethon pysocks httpx 10 | 11 | # cookies中间用&分开 12 | cks = "" 13 | 14 | # url1 = 'https://api.m.jd.com/client.action?functionId=liveDrawLotteryV842&body={"lotteryId":666351,"liveId":3656131}&uuid=8888888&client=apple&clientVersion=9.4.1&st=1615429563038&sign=17c699f8504b22f3e0bf961f7a7d941e&sv=121' 15 | 16 | async def send_live(cks, url): 17 | if len(cks) > 0: 18 | str_ck = cks.split('&') 19 | for i in range(1, len(str_ck) + 1): 20 | if len(str_ck[i - 1]) > 0: 21 | # print(str_ck[i-1]) 22 | # header 23 | header = { 24 | "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36", 25 | "Cookie": str_ck[i - 1], 26 | } 27 | # 访问url 28 | async with httpx.AsyncClient() as client: 29 | r = await client.get(url=url, headers=header) 30 | # r = await httpx.get(url=url, headers=header) 31 | print(r.text) 32 | await asyncio.sleep(0.5) 33 | 34 | 35 | 36 | # These example values won't work. You must get your own api_id and 37 | # api_hash from https://my.telegram.org, under API Development. 38 | # 必须填写 api_id api_hash proxy 39 | api_id = 40 | api_hash = '' 41 | # 使用代理proxy 42 | #client = TelegramClient('test', api_id, api_hash, proxy=("socks5", '127.0.01', 7890)) 43 | # 不使用代理 44 | client = TelegramClient('test', api_id, api_hash) 45 | 46 | client.start() 47 | 48 | 49 | async def main(): 50 | # Getting information about yourself 51 | me = await client.get_me() 52 | 53 | # "me" is a user object. You can pretty-print 54 | # any Telegram object with the "stringify" method: 55 | print(me.stringify()) 56 | 57 | # When you print something, you see a representation of it. 58 | # You can access all attributes of Telegram objects with 59 | # the dot operator. For example, to get the username: 60 | username = me.username 61 | print(username) 62 | print(me.phone) 63 | 64 | # You can print all the dialogs/conversations that you are part of: 65 | async for dialog in client.iter_dialogs(): 66 | print(dialog.name, 'has ID', dialog.id) 67 | 68 | p1 = re.compile(r'[(](.*?)[)]', re.S) 69 | 70 | #@client.on(events.NewMessage) 71 | @client.on(events.NewMessage(chats=[-1001479368440])) 72 | @client.on(events.NewMessage(chats=[-1001197524983])) 73 | async def my_event_handler(event): 74 | #print(event.raw_text) 75 | print(event.message.sender_id,event.message.text) 76 | # if event.message.sender_id == '1663824060': 77 | sec = re.findall(p1, event.message.text) 78 | if sec!=None and len(sec)==2: 79 | await send_live(cks,sec[1]) 80 | 81 | 82 | 83 | 84 | with client: 85 | client.loop.run_until_complete(main()) 86 | client.loop.run_forever() 87 | 88 | -------------------------------------------------------------------------------- /scripts/backup/jd_live_redrain3day.js: -------------------------------------------------------------------------------- 1 | /* 2 | 30,31 20-23/1 2,5 3 * jd_live_redrain.js 3 | 4 | 仅3月2日-5日 3天 5 | */ 6 | const $ = new Env('超级直播间红包雨'); 7 | let bodyList = { 8 | '2': { 9 | url: 'https://api.m.jd.com/client.action?functionId=liveActivityV8420&uuid=8888888&client=apple&clientVersion=9.4.1&st=1614332001091&sign=92c7fc6ad1cc78cb344bf32de2fa7474&sv=110', 10 | body: 'body=%7B%22liveId%22%3A%223570050%22%7D' 11 | }, 12 | '5': { 13 | url: 'https://api.m.jd.com/client.action?functionId=liveActivityV8420&uuid=8888888&client=apple&clientVersion=9.4.1&st=1614331999027&sign=a33166ef832849af9c298801a5bad24a&sv=112', 14 | body: 'body=%7B%22liveId%22%3A%223554417%22%7D' 15 | } 16 | } 17 | let ids = { 18 | 19 | } 20 | const notify = $.isNode() ? require('./sendNotify') : ''; 21 | //Node.js用户请在jdCookie.js处填写京东ck; 22 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; 23 | //IOS等用户直接用NobyDa的jd cookie 24 | let cookiesArr = [], cookie = '', message; 25 | if ($.isNode()) { 26 | Object.keys(jdCookieNode).forEach((item) => { 27 | cookiesArr.push(jdCookieNode[item]) 28 | }) 29 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { 30 | }; 31 | if(JSON.stringify(process.env).indexOf('GITHUB')>-1) process.exit(0) 32 | }else { 33 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); 34 | } 35 | const JD_API_HOST = 'https://api.m.jd.com/api'; 36 | !(async () => { 37 | if (!cookiesArr[0]) { 38 | $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', {"open-url": "https://bean.m.jd.com/"}); 39 | return; 40 | } 41 | await getRedRain(); 42 | 43 | let nowTs = new Date().getTime() 44 | if (!($.st <= nowTs && nowTs < $.ed)) { 45 | $.log(`远程红包雨配置获取错误,从本地读取配置`) 46 | let hour = (new Date().getUTCHours() + 8) %24 47 | if (ids[hour]){ 48 | $.activityId = ids[hour] 49 | $.log(`本地红包雨配置获取成功`) 50 | } else{ 51 | $.log(`无法从本地读取配置,请检查运行时间`) 52 | return 53 | } 54 | } else{ 55 | $.log(`远程红包雨配置获取成功`) 56 | } 57 | for (let i = 0; i < cookiesArr.length; i++) { 58 | if (cookiesArr[i]) { 59 | cookie = cookiesArr[i]; 60 | $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) 61 | $.index = i + 1; 62 | $.isLogin = true; 63 | $.nickName = ''; 64 | message = ''; 65 | await TotalBean(); 66 | console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); 67 | if (!$.isLogin) { 68 | $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/`, {"open-url": "https://bean.m.jd.com/"}); 69 | 70 | if ($.isNode()) { 71 | await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); 72 | } else { 73 | $.setdata('', `CookieJD${i ? i + 1 : ""}`);//cookie失效,故清空cookie。$.setdata('', `CookieJD${i ? i + 1 : "" }`);//cookie失效,故清空cookie。 74 | } 75 | continue 76 | } 77 | let nowTs = new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000 78 | // console.log(nowTs, $.startTime, $.endTime) 79 | await receiveRedRain(); 80 | await showMsg(); 81 | } 82 | } 83 | })() 84 | .catch((e) => { 85 | $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') 86 | }) 87 | .finally(() => { 88 | $.done(); 89 | }) 90 | 91 | function showMsg() { 92 | return new Promise(resolve => { 93 | $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); 94 | resolve() 95 | }) 96 | } 97 | 98 | function getRedRain() { 99 | let body 100 | if(bodyList.hasOwnProperty(new Date().getDate())) { 101 | body = bodyList[new Date().getDate()] 102 | }else{ 103 | return 104 | } 105 | return new Promise(resolve => { 106 | $.post(taskGetUrl(body.url, body.body), (err, resp, data) => { 107 | try { 108 | if (err) { 109 | console.log(`${JSON.stringify(err)}`) 110 | console.log(`${$.name} API请求失败,请检查网路重试`) 111 | } else { 112 | if (safeGet(data)) { 113 | data = JSON.parse(data); 114 | if (data.data && data.data.iconArea) { 115 | console.log(data.data.iconArea.filter(vo=>vo['type']==='anchor_darw_lottery').length && 116 | data.data.iconArea.filter(vo=>vo['type']==='anchor_darw_lottery')[0].data.lotteryId) 117 | let act = data.data.iconArea.filter(vo=>vo['type']==="platform_red_packege_rain")[0] 118 | if (act) { 119 | let url = act.data.activityUrl 120 | $.activityId = url.substr(url.indexOf("id=") + 3) 121 | $.st = act.startTime 122 | $.ed = act.endTime 123 | console.log($.activityId) 124 | 125 | console.log(`下一场红包雨开始时间:${new Date($.st)}`) 126 | console.log(`下一场红包雨结束时间:${new Date($.ed)}`) 127 | } else { 128 | console.log(`暂无红包雨`) 129 | } 130 | } else { 131 | console.log(`暂无红包雨`) 132 | } 133 | } 134 | } 135 | } catch (e) { 136 | $.logErr(e, resp) 137 | } finally { 138 | resolve(); 139 | } 140 | }) 141 | }) 142 | } 143 | 144 | function receiveRedRain() { 145 | return new Promise(resolve => { 146 | const body = {"actId": $.activityId}; 147 | $.get(taskUrl('noahRedRainLottery', body), (err, resp, data) => { 148 | try { 149 | if (err) { 150 | console.log(`${JSON.stringify(err)}`) 151 | console.log(`${$.name} API请求失败,请检查网路重试`) 152 | } else { 153 | if (safeGet(data)) { 154 | data = JSON.parse(data); 155 | if (data.subCode === '0') { 156 | console.log(`领取成功,获得${JSON.stringify(data.lotteryResult)}`) 157 | // message+= `领取成功,获得${JSON.stringify(data.lotteryResult)}\n` 158 | message += `领取成功,获得 ${(data.lotteryResult.jPeasList[0].quantity)}京豆` 159 | 160 | } else if (data.subCode === '8') { 161 | console.log(`今日次数已满`) 162 | message += `领取失败,本场已领过`; 163 | } else { 164 | console.log(`异常:${JSON.stringify(data)}`) 165 | } 166 | } 167 | } 168 | } catch (e) { 169 | $.logErr(e, resp) 170 | } finally { 171 | resolve(); 172 | } 173 | }) 174 | }) 175 | } 176 | function taskGetUrl(url, body) { 177 | return { 178 | url: url, 179 | body:body, 180 | headers: { 181 | "Accept": "*/*", 182 | "Accept-Encoding": "gzip, deflate, br", 183 | "Accept-Language": "zh-cn", 184 | "Connection": "keep-alive", 185 | "Content-Type": "application/x-www-form-urlencoded", 186 | "Host": "api.m.jd.com", 187 | "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, 188 | "Cookie": cookie, 189 | "User-Agent": "JD4iPhone/9.3.5 CFNetwork/1209 Darwin/20.2.0" 190 | } 191 | } 192 | } 193 | 194 | function taskPostUrl(function_id, body = body) { 195 | return { 196 | url: `https://api.m.jd.com/client.action?functionId=${function_id}`, 197 | body: body, 198 | headers: { 199 | 'Host': 'api.m.jd.com', 200 | 'content-type': 'application/x-www-form-urlencoded', 201 | 'accept': '*/*', 202 | 'user-agent': 'JD4iPhone/167408 (iPhone; iOS 14.2; Scale/3.00)', 203 | 'accept-language': 'zh-Hans-JP;q=1, en-JP;q=0.9, zh-Hant-TW;q=0.8, ja-JP;q=0.7, en-US;q=0.6', 204 | //"Cookie": cookie, 205 | } 206 | } 207 | } 208 | 209 | function taskUrl(function_id, body = {}) { 210 | return { 211 | url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&_=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, 212 | headers: { 213 | "Accept": "*/*", 214 | "Accept-Encoding": "gzip, deflate, br", 215 | "Accept-Language": "zh-cn", 216 | "Connection": "keep-alive", 217 | "Content-Type": "application/x-www-form-urlencoded", 218 | "Host": "api.m.jd.com", 219 | "Referer": `https://h5.m.jd.com/active/redrain/index.html?id=${$.activityId}&lng=0.000000&lat=0.000000&sid=&un_area=`, 220 | "Cookie": cookie, 221 | "User-Agent": "JD4iPhone/9.3.5 CFNetwork/1209 Darwin/20.2.0" 222 | } 223 | } 224 | } 225 | 226 | function TotalBean() { 227 | return new Promise(async resolve => { 228 | const options = { 229 | "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, 230 | "headers": { 231 | "Accept": "application/json,text/plain, */*", 232 | "Content-Type": "application/x-www-form-urlencoded", 233 | "Accept-Encoding": "gzip, deflate, br", 234 | "Accept-Language": "zh-cn", 235 | "Connection": "keep-alive", 236 | "Cookie": cookie, 237 | "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", 238 | "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : "JD4iPhone/9.3.5 CFNetwork/1209 Darwin/20.2.0") : ($.getdata('JDUA') ? $.getdata('JDUA') : "JD4iPhone/9.3.5 CFNetwork/1209 Darwin/20.2.0") 239 | } 240 | } 241 | $.post(options, (err, resp, data) => { 242 | try { 243 | if (err) { 244 | console.log(`${JSON.stringify(err)}`) 245 | console.log(`${$.name} API请求失败,请检查网路重试`) 246 | } else { 247 | if (data) { 248 | data = JSON.parse(data); 249 | if (data['retcode'] === 13) { 250 | $.isLogin = false; //cookie过期 251 | return 252 | } 253 | $.nickName = data['base'].nickname; 254 | } else { 255 | console.log(`京东服务器返回空数据`) 256 | } 257 | } 258 | } catch (e) { 259 | $.logErr(e, resp) 260 | } finally { 261 | resolve(); 262 | } 263 | }) 264 | }) 265 | } 266 | 267 | function safeGet(data) { 268 | try { 269 | if (typeof JSON.parse(data) == "object") { 270 | return true; 271 | } 272 | } catch (e) { 273 | console.log(e); 274 | console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); 275 | return false; 276 | } 277 | } 278 | 279 | function jsonParse(str) { 280 | if (typeof str == "string") { 281 | try { 282 | return JSON.parse(str); 283 | } catch (e) { 284 | console.log(e); 285 | $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') 286 | return []; 287 | } 288 | } 289 | } 290 | // prettier-ignore 291 | function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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("",`🔔${this.name}, 开始!`)}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("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(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,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).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=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 292 | -------------------------------------------------------------------------------- /scripts/backup/jd_party_night.js: -------------------------------------------------------------------------------- 1 | /* 2 | 沸腾之夜 3 | 开启预约活动得0.18元红包,得到五个助力后,得1.58元红包 4 | 内部账号自己相互助力,一个账号3次助力机会。 5 | 脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js 6 | ============Quantumultx=============== 7 | [task_local] 8 | #沸腾之夜 9 | 0 15-19/1 * * * https://gitee.com/lxk0301/jd_scripts/raw/master/jd_party_night.js, tag=沸腾之夜, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true 10 | 11 | ================Loon============== 12 | [Script] 13 | cron "0 15-19/1 * * *" script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_party_night.js,tag=沸腾之夜 14 | 15 | ===============Surge================= 16 | 沸腾之夜 = type=cron,cronexp="0 15-19/1 * * *",wake-system=1,timeout=3600,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_party_night.js 17 | 18 | ============小火箭========= 19 | 沸腾之夜 = type=cron,script-path=https://gitee.com/lxk0301/jd_scripts/raw/master/jd_party_night.js, cronexpr="0 15-19/1 * * *", timeout=3600, enable=true 20 | */ 21 | const $ = new Env('沸腾之夜'); 22 | const notify = $.isNode() ? require('./sendNotify') : ''; 23 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; 24 | $.inviteCodeList = []; 25 | let cookiesArr = [ 26 | ]; 27 | 28 | if ($.isNode()) { 29 | Object.keys(jdCookieNode).forEach((item) => { 30 | cookiesArr.push(jdCookieNode[item]) 31 | }) 32 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; 33 | } else { 34 | cookiesArr = [ 35 | $.getdata("CookieJD"), 36 | $.getdata("CookieJD2"), 37 | ...$.toObj($.getdata("CookiesJD") || "[]").map((item) => item.cookie)].filter((item) => !!item); 38 | } 39 | 40 | !(async () => { 41 | if (!cookiesArr[0]) { 42 | $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); 43 | return; 44 | } 45 | for (let i = 0; i < 5; i++) { 46 | console.log(`开始第${i+1}次抽奖`); 47 | for (let i = 0; i < cookiesArr.length; i++) { 48 | $.index = i + 1; 49 | $.cookie = cookiesArr[i]; 50 | $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); 51 | console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); 52 | await partyNight(); 53 | if(cookiesArr.length>5){ 54 | await $.wait(1500); 55 | }else{ 56 | await $.wait(5000); 57 | } 58 | } 59 | } 60 | 61 | // //助力------------------------- 62 | // for (let i = 0; i < cookiesArr.length; i++) { 63 | // $.index = i + 1; 64 | // $.cookie = cookiesArr[i]; 65 | // $.UserName = decodeURIComponent($.cookie.match(/pt_pin=([^; ]+)(?=;?)/) && $.cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]); 66 | // console.log(`\n*****开始【京东账号${$.index}】${$.nickName || $.UserName}*****\n`); 67 | // $.canHelp = true; 68 | // for (let j = 0; j < $.inviteCodeList.length && $.canHelp; j++) { 69 | // await $.wait(2000); 70 | // $.oneInviteInfo = $.inviteCodeList[j]; 71 | // if($.oneInviteInfo.use === $.UserName){ 72 | // continue; 73 | // } 74 | // if($.oneInviteInfo.max){ 75 | // continue; 76 | // } 77 | // $.inviteCode = $.oneInviteInfo.inviteCode; 78 | // console.log(`${$.UserName}去助力${$.oneInviteInfo.use},助力码:${$.inviteCode}`) 79 | // await takePostRequest('partyTonight_assist'); 80 | // } 81 | // //await $.wait(3000); 82 | // } 83 | })() 84 | .catch((e) => { 85 | $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') 86 | }) 87 | .finally(() => { 88 | $.done(); 89 | }) 90 | 91 | async function partyNight(){ 92 | // $.mainInfo = {}; 93 | // await takePostRequest('partyTonight_init'); 94 | // if(JSON.stringify($.mainInfo) === '{}'){ 95 | // return ; 96 | // }else { 97 | // console.log('获取活动信息成功'); 98 | // } 99 | 100 | $.runFlag = true; 101 | //for (let i = 0; i < 10 && $.runFlag; i++) { 102 | 103 | await takePostRequest('partyTonight_lottery'); 104 | //await $.wait(5000); 105 | //} 106 | //预约 107 | //await $.wait(2000); 108 | //await takePostRequest('partyTonight_remind'); 109 | } 110 | 111 | async function takePostRequest(type) { 112 | let body = ``; 113 | let myRequest = ``; 114 | switch (type) { 115 | case 'partyTonight_init': 116 | body = `functionId=partyTonight_init&body={}&client=wh5&clientVersion=1.0.0&uuid=`; 117 | myRequest = getPostRequest(`partyTonight_init`, body); 118 | break; 119 | case 'partyTonight_remind': 120 | body = `functionId=partyTonight_remind&body={}&client=wh5&clientVersion=1.0.0&uuid=`; 121 | myRequest = getPostRequest(`partyTonight_remind`, body); 122 | break; 123 | case 'partyTonight_assist': 124 | body = `functionId=partyTonight_assist&body={"inviteCode":"${$.inviteCode}"}&client=wh5&clientVersion=1.0.0&uuid=`; 125 | myRequest = getPostRequest(`partyTonight_assist`, body); 126 | break; 127 | case 'partyTonight_lottery': 128 | body = `functionId=partyTonight_lottery&body={}&client=wh5&clientVersion=1.0.0&uuid=`; 129 | myRequest = getPostRequest(`partyTonight_lottery`, body); 130 | break; 131 | default: 132 | console.log(`错误${type}`); 133 | } 134 | return new Promise(async resolve => { 135 | $.post(myRequest, (err, resp, data) => { 136 | try { 137 | dealReturn(type, data); 138 | } catch (e) { 139 | $.logErr(e, resp) 140 | } finally { 141 | resolve(); 142 | } 143 | }) 144 | }) 145 | } 146 | 147 | function dealReturn(type, data) { 148 | try { 149 | data = JSON.parse(data); 150 | } catch (e) { 151 | console.log(`返回异常:${data}`); 152 | return; 153 | } 154 | switch (type) { 155 | case 'partyTonight_init': 156 | if (data.code === 0 && data.data && data.data.bizCode === 0) { 157 | $.mainInfo = data.data.result; 158 | $.inviteCode = $.mainInfo.inviteCode; 159 | console.log(`邀请码:${$.inviteCode}`); 160 | if($.mainInfo.assistStatus === 4){ 161 | console.log(`助力已满`); 162 | }else{ 163 | $.inviteCodeList.push( 164 | { 165 | 'inviteCode':$.inviteCode, 166 | 'use':$.UserName, 167 | 'max':false 168 | } 169 | ) 170 | } 171 | }else{ 172 | console.log(JSON.stringify(data)); 173 | } 174 | break; 175 | case 'partyTonight_remind': 176 | if (data.code === 0 && data.data && data.data.bizCode === 0) { 177 | console.log(`预约成功,获得:${data.data.result.remindRedPacketValue}`) 178 | }else if(data.code === 0 && data.data && data.data.bizCode === -201){ 179 | console.log(JSON.stringify(data.data.bizMsg)); 180 | }else{ 181 | console.log(JSON.stringify(data)); 182 | } 183 | break; 184 | case 'partyTonight_assist': 185 | if (data.code === 0 && data.data && (data.data.bizCode === -303 || data.data.bizCode === -1001)) { 186 | $.canHelp = false 187 | }else if (data.code === 0 && data.data && data.data.bizCode === -304) { 188 | $.oneInviteInfo.max = true; 189 | } 190 | console.log(JSON.stringify(data)); 191 | break; 192 | case 'partyTonight_lottery': 193 | if (data.code === 0 && data.data && data.data.bizCode === 0) { 194 | let result = data.data.result; 195 | if(result.type === 1){ 196 | console.log(`获得红包:${result.hongbaoValue}`); 197 | }else if(result.type === 2){ 198 | console.log(`获得优惠券:`); 199 | }else if(result.type === 3){ 200 | console.log(`获得京豆:${result.beanCount}`); 201 | }else{ 202 | console.log(JSON.stringify(data)); 203 | } 204 | }else { 205 | $.runFlag = false; 206 | console.log(JSON.stringify(data)); 207 | } 208 | break; 209 | default: 210 | } 211 | } 212 | 213 | function getPostRequest(type, body) { 214 | const url = `https://api.m.jd.com/`; 215 | const method = `POST`; 216 | const headers = { 217 | 'Accept' : `application/json, text/plain, */*`, 218 | 'Origin' : `https://h5static.m.jd.com`, 219 | 'Accept-Encoding' : `gzip, deflate, br`, 220 | 'Cookie' : $.cookie, 221 | 'Content-Type' : `application/x-www-form-urlencoded`, 222 | 'Host' : `api.m.jd.com`, 223 | 'Connection' : `keep-alive`, 224 | 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), 225 | 'Referer' : `https://h5static.m.jd.com/babelDiy/Zeus/qEfNdq9oRsJfhYJ7XR1EahyLt9L/index.html`, 226 | 'Accept-Language' : `zh-cn` 227 | }; 228 | return {url: url, method: method, headers: headers, body: body}; 229 | } 230 | // prettier-ignore 231 | function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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("",`🔔${this.name}, 开始!`)}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("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(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,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).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=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 232 | 233 | -------------------------------------------------------------------------------- /scripts/backup/jd_unbind.js: -------------------------------------------------------------------------------- 1 | /* 2 | 注销京东会员卡 3 | 是注销京东已开的店铺会员,不是京东plus会员 4 | 查看已开店铺会员入口:我的=>我的钱包=>卡包 5 | */ 6 | const $ = new Env('注销京东会员卡'); 7 | //Node.js用户请在jdCookie.js处填写京东ck; 8 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; 9 | const notify = $.isNode() ? require('./sendNotify') : ''; 10 | 11 | //IOS等用户直接用NobyDa的jd cookie 12 | let cookiesArr = [], cookie = ''; 13 | if ($.isNode()) { 14 | Object.keys(jdCookieNode).forEach((item) => { 15 | cookiesArr.push(jdCookieNode[item]) 16 | }) 17 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; 18 | } else { 19 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); 20 | } 21 | const jdNotify = $.getdata('jdUnbindCardNotify');//是否关闭通知,false打开通知推送,true关闭通知推送 22 | let cardPageSize = 20;// 运行一次取消多少个会员卡。数字0表示不注销任何会员卡 23 | let stopCards = `京东PLUS会员`;//遇到此会员卡跳过注销,多个使用&分开 24 | const JD_API_HOST = 'https://api.m.jd.com/'; 25 | !(async () => { 26 | if (!cookiesArr[0]) { 27 | $.msg('【京东账号一】注销京东会员卡失败', '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); 28 | } 29 | await requireConfig() 30 | for (let i = 0; i < cookiesArr.length; i++) { 31 | if (cookiesArr[i]) { 32 | cookie = cookiesArr[i]; 33 | $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) 34 | $.index = i + 1; 35 | $.isLogin = true; 36 | $.nickName = ''; 37 | $.unsubscribeCount = 0 38 | $.cardList = [] 39 | await TotalBean(); 40 | console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); 41 | if (!$.isLogin) { 42 | $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); 43 | 44 | if ($.isNode()) { 45 | await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); 46 | } 47 | continue 48 | } 49 | await jdUnbind(); 50 | await showMsg(); 51 | } 52 | } 53 | })() 54 | .catch((e) => { 55 | $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') 56 | }) 57 | .finally(() => { 58 | $.done(); 59 | }) 60 | async function jdUnbind() { 61 | await getCards() 62 | await unsubscribeCards() 63 | } 64 | async function unsubscribeCards() { 65 | let count = 0 66 | $.pushcardList=[] 67 | for (let item of $.cardList) { 68 | if (count === cardPageSize * 1){ 69 | console.log(`已达到设定数量:${cardPageSize * 1}`) 70 | break 71 | } 72 | if (stopCards && (item.brandName && stopCards.includes(item.brandName))) { 73 | console.log(`匹配到了您设定的会员卡【${item.brandName}】不再进行取消关注会员卡`) 74 | continue; 75 | } 76 | console.log(`去注销会员卡【${item.brandName}】`) 77 | let res = await unsubscribeCard(item.brandId); 78 | $.pushcardList.push(`去注销会员卡【${item.brandName}】`) 79 | $.pushcardList.push(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${item.brandId}`) 80 | if (res['success']) { 81 | if (res['busiCode'] === '200') { 82 | count++; 83 | $.unsubscribeCount ++ 84 | } 85 | } 86 | await $.wait(1000) 87 | } 88 | 89 | let push_len = $.pushcardList.length 90 | let push_lena = parseInt(push_len/20) 91 | let push_lenb = push_len%20 92 | 93 | if (push_lena == 0) { 94 | let tg_text = '' 95 | for (a = 0; a < push_len; a++){ 96 | tg_text = tg_text + $.pushcardList[a] + '\n' 97 | } 98 | await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); 99 | } else { 100 | let step = 0 101 | for (step = 0; step < push_lena; step++){ 102 | let tg_text = '' 103 | for (a = 0; a < 20; a++){ 104 | tg_text = tg_text + $.pushcardList[a+step*20] + '\n' 105 | } 106 | await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); 107 | } 108 | 109 | let tg_text = '' 110 | for (b = 0; b < push_lenb; b++){ 111 | tg_text = tg_text + $.pushcardList[b+step*20] + '\n' 112 | } 113 | await notify.sendNotify(`京东会员卡注消链接`, `【京东账号${$.index}】${$.UserName}\n${tg_text}`); 114 | } 115 | 116 | } 117 | function showMsg() { 118 | if (!jdNotify || jdNotify === 'false') { 119 | $.msg($.name, ``, `【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); 120 | } else { 121 | $.log(`\n【京东账号${$.index}】${$.nickName}\n【已注销会员卡】${$.unsubscribeCount}个\n【还剩会员卡】${$.cardsTotalNum-$.unsubscribeCount}个\n`); 122 | } 123 | } 124 | function getCards() { 125 | return new Promise((resolve) => { 126 | const option = { 127 | url: `${JD_API_HOST}client.action?functionId=getWalletReceivedCardList_New`, 128 | body: 'body=%7B%22v%22%3A%224.3%22%2C%22version%22%3A1580659200%7D&build=167668&client=apple&clientVersion=9.5.4&openudid=c5eb641f1e40b339e2e111619f22ef1e5fdc7834&rfs=0000&scope=01&sign=c18a161ddaf21f44e9cd56a8db29362e&st=1621407560442&sv=101', 129 | headers: { 130 | "Host": "api.m.jd.com", 131 | "Accept": "*/*", 132 | "Connection": "keep-alive", 133 | "Cookie": cookie, 134 | "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), 135 | "Accept-Language": "zh-cn", 136 | "Accept-Encoding": "gzip, deflate, br" 137 | }, 138 | } 139 | $.post(option, (err, resp, data) => { 140 | try { 141 | if (err) { 142 | console.log(`${JSON.stringify(err)}`) 143 | console.log(`${$.name} API请求失败,请检查网路重试`) 144 | } else { 145 | if (safeGet(data)) { 146 | data = JSON.parse(data); 147 | $.cardsTotalNum = data.result.cardList ? data.result.cardList.length : 0; 148 | $.cardList = data.result.cardList || [] 149 | } 150 | } 151 | } catch (e) { 152 | $.logErr(e, resp); 153 | } finally { 154 | resolve(data); 155 | } 156 | console.log($.cardList) 157 | }); 158 | }) 159 | } 160 | function unsubscribeCard(vendorId) { 161 | return new Promise(resolve => { 162 | const option = { 163 | url: `${JD_API_HOST}unBindCard?appid=jd_shop_member&functionId=unBindCard&body=%7B%22venderId%22:%22${vendorId}%22%7D&clientVersion=1.0.0&client=wh5`, 164 | headers: { 165 | "Host": "api.m.jd.com", 166 | "Accept": "*/*", 167 | "Connection": "keep-alive", 168 | 'origin': 'https://shopmember.m.jd.com', 169 | 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), 170 | 'Referer': `https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`, 171 | 'Cookie': cookie, 172 | "Accept-Language": "zh-cn", 173 | "Accept-Encoding": "gzip, deflate, br" 174 | }, 175 | } 176 | $.post(option, (err, resp, data) => { 177 | try { 178 | if (err) { 179 | console.log(`${JSON.stringify(err)}`) 180 | console.log(`${$.name} API请求失败,请检查网路重试`) 181 | } else { 182 | if (safeGet(data)) { 183 | data = JSON.parse(data) 184 | console.log(`https://shopmember.m.jd.com/member/memberCloseAccount?venderId=${vendorId}`) 185 | } 186 | } 187 | } catch (e) { 188 | $.logErr(e, resp); 189 | } finally { 190 | resolve(data); 191 | } 192 | }); 193 | }) 194 | } 195 | function TotalBean() { 196 | return new Promise(async resolve => { 197 | const options = { 198 | "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, 199 | "headers": { 200 | "Accept": "application/json,text/plain, */*", 201 | "Content-Type": "application/x-www-form-urlencoded", 202 | "Accept-Encoding": "gzip, deflate, br", 203 | "Accept-Language": "zh-cn", 204 | "Connection": "keep-alive", 205 | "Cookie": cookie, 206 | "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", 207 | "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") 208 | } 209 | } 210 | $.post(options, (err, resp, data) => { 211 | try { 212 | if (err) { 213 | console.log(`${JSON.stringify(err)}`) 214 | console.log(`${$.name} API请求失败,请检查网路重试`) 215 | } else { 216 | if (data) { 217 | data = JSON.parse(data); 218 | if (data['retcode'] === 13) { 219 | $.isLogin = false; //cookie过期 220 | return 221 | } 222 | if (data['retcode'] === 0) { 223 | $.nickName = (data['base'] && data['base'].nickname) || $.UserName; 224 | } else { 225 | $.nickName = $.UserName 226 | } 227 | } else { 228 | console.log(`京东服务器返回空数据`) 229 | } 230 | } 231 | } catch (e) { 232 | $.logErr(e, resp) 233 | } finally { 234 | resolve(); 235 | } 236 | }) 237 | }) 238 | } 239 | function requireConfig() { 240 | return new Promise(resolve => { 241 | $.UN_BIND_NUM = $.isNode() ? (process.env.UN_BIND_CARD_NUM ? process.env.UN_BIND_CARD_NUM : cardPageSize) : ($.getdata('UN_BIND_CARD_NUM') ? $.getdata('UN_BIND_CARD_NUM') : cardPageSize); 242 | $.UN_BIND_STOP_CARD = $.isNode() ? (process.env.UN_BIND_STOP_CARD ? process.env.UN_BIND_STOP_CARD : stopCards) : ($.getdata('UN_BIND_STOP_CARD') ? $.getdata('UN_BIND_STOP_CARD') : stopCards); 243 | if ($.UN_BIND_STOP_CARD) { 244 | if ($.UN_BIND_STOP_CARD.indexOf('&') > -1) { 245 | $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('&'); 246 | } else if ($.UN_BIND_STOP_CARD.indexOf('@') > -1) { 247 | $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('@'); 248 | } else if ($.UN_BIND_STOP_CARD.indexOf('\n') > -1) { 249 | $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\n'); 250 | } else if ($.UN_BIND_STOP_CARD.indexOf('\\n') > -1) { 251 | $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split('\\n'); 252 | } else { 253 | $.UN_BIND_STOP_CARD = $.UN_BIND_STOP_CARD.split(); 254 | } 255 | } 256 | cardPageSize = $.UN_BIND_NUM; 257 | stopCards = $.UN_BIND_STOP_CARD; 258 | resolve() 259 | }) 260 | } 261 | function jsonParse(str) { 262 | if (typeof str == "string") { 263 | try { 264 | return JSON.parse(str); 265 | } catch (e) { 266 | console.log(e); 267 | $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') 268 | return []; 269 | } 270 | } 271 | } 272 | function safeGet(data) { 273 | try { 274 | if (typeof JSON.parse(data) == "object") { 275 | return true; 276 | } 277 | } catch (e) { 278 | console.log(e); 279 | console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); 280 | return false; 281 | } 282 | } 283 | // prettier-ignore 284 | function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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("",`🔔${this.name}, 开始!`)}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("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(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,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).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=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 285 | -------------------------------------------------------------------------------- /scripts/cgwz.js: -------------------------------------------------------------------------------- 1 | /** 2 | 猜歌王者改进度刷等级。 @肥皂 3 | 添加重写和mitm 4 | 使用方法,商店搜索猜歌王者下载 5 | 猜歌直到提示弹窗提醒出现数据获取成功 6 | 0.3提现没问题。后续不知 7 | 8 | 9 | TG通知群:https://t.me/Ariszy_Scripts 10 | TG电报交流群: https://t.me/hahaha8028 11 | 12 | [task_local] 13 | #猜歌王者改进度刷等级 14 | 0 0 1 1 * https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/cgwz.js, tag=猜歌王者改进度, img-url=https://ae01.alicdn.com/kf/Uaade4566dd3744299956aa883f225386u.jpg, enabled=true 15 | 16 | 17 | [rewrite_local] 18 | #猜歌王者改进度 19 | https://api.litemob.com/caigewangzhe_ios/song/info? url script-request-header https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/cgwz.js 20 | 21 | [MITM] 22 | hostname = api.litemob.com 23 | */ 24 | 25 | 26 | 27 | const $ = new Env('猜歌王者'); 28 | let status; 29 | status = (status = ($.getval("cgwzstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符 30 | const cgwzurlArr = [], cgwzggurlArr = [],cgwzhdArr = [],cgwzcount = '' 31 | let times = Math.round(Date.now() / 1000) 32 | let cgwzurl = $.getdata('cgwzurl') 33 | let cgwzhd = $.getdata('cgwzhd') 34 | let cgwzggurl = $.getdata('cgwzggurl') 35 | let name = '',id = '',did = '' 36 | !(async () => { 37 | if (typeof $request !== "undefined") { 38 | await cgwzck() 39 | 40 | } else {cgwzurlArr.push($.getdata('cgwzurl')) 41 | cgwzhdArr.push($.getdata('cgwzhd')) 42 | cgwzggurlArr.push($.getdata('cgwzggurl')) 43 | let cgwzcount = ($.getval('cgwzcount') || '1'); 44 | for (let i = 2; i <= cgwzcount; i++) { 45 | cgwzggurlArr.push($.getdata(`cgwzggurl${i}`)) 46 | cgwzurlArr.push($.getdata(`cgwzurl${i}`)) 47 | cgwzhdArr.push($.getdata(`cgwzhd${i}`)) 48 | } 49 | console.log(`------------- 共${cgwzhdArr.length}个账号-------------\n`) 50 | for (let i = 0; i < cgwzhdArr.length; i++) { 51 | if (cgwzhdArr[i]) { 52 | cgwzggurl = cgwzggurlArr[i]; 53 | cgwzurl = cgwzurlArr[i]; 54 | cgwzhd = cgwzhdArr[i]; 55 | $.index = i + 1; 56 | console.log(`\n开始【猜歌王者${$.index}】`) 57 | await wkzztx(); 58 | 59 | 60 | } 61 | }} 62 | 63 | })() 64 | .catch((e) => $.logErr(e)) 65 | .finally(() => $.done()) 66 | //数据获取 67 | 68 | 69 | function cgwzck() { 70 | if ($request.url.indexOf("song/info?") > -1) { 71 | const cgwzurl = $request.url 72 | if(cgwzurl) $.setdata(cgwzurl,`cgwzurl${status}`) 73 | $.log(cgwzurl) 74 | const cgwzhd = JSON.stringify($request.headers) 75 | if(cgwzhd) $.setdata(cgwzhd,`cgwzhd${status}`) 76 | $.log(cgwzhd) 77 | $.msg($.name,"",'猜歌王者'+`${status}` +'数据获取成功!') 78 | } 79 | } 80 | 81 | 82 | 83 | 84 | function wkzztx(timeout = 0) { 85 | return new Promise((resolve) => { 86 | id = cgwzurl.match(/uid=(\d+)/)[1] 87 | let url = { 88 | url : cgwzurl, 89 | headers : JSON.parse(cgwzhd), 90 | 91 | } 92 | $.get(url, async (err, resp, data) => { 93 | 94 | try { 95 | const result = JSON.parse(data) 96 | if(result.code == 200){ 97 | name = result.data.answer 98 | $.log(`\n猜歌王者题目答案:${result.data.answer}`) 99 | //$done() 100 | await cgwz() 101 | } else { 102 | await $.wait(100); 103 | 104 | console.log(data) 105 | 106 | } 107 | 108 | } catch (e) { 109 | //$.logErr(e, resp); 110 | } finally { 111 | resolve() 112 | } 113 | },timeout) 114 | }) 115 | } 116 | 117 | function cgwz(timeout = 0) { 118 | return new Promise((resolve) => { 119 | const headers = { 120 | 'Accept' : `*/*`, 121 | 'Accept-Encoding' : `gzip, deflate, br`, 122 | 'Connection' : `keep-alive`, 123 | 'Content-Type' : `application/json`, 124 | 'Host' : `api.litemob.com`, 125 | 'User-Agent' : `cai ge wang zhe/1.3.0 (iPhone; iOS 14.2; Scale/2.00)`, 126 | 'version' : `1.3.0`, 127 | 'Accept-Language' : `zh-Hans-CN;q=1` 128 | }; 129 | let url = { 130 | url : 'https://api.litemob.com/caigewangzhe_ios/song/reply', 131 | headers : headers, 132 | body : `{"uid":"${id}","text":"${name}","is_test":"0"}`, 133 | } 134 | $.post(url, async (err, resp, data) => { 135 | 136 | try { 137 | const result = JSON.parse(data) 138 | if(result.code == 200){ 139 | did = result.data.double_id 140 | $.log(`\n猜歌王者答题成功:获得:${result.data.gold}`) 141 | 142 | await cgwzfb() 143 | //$done() 144 | } else { 145 | await $.wait(100); 146 | await cgwzfb() 147 | console.log(data) 148 | 149 | } 150 | 151 | } catch (e) { 152 | //$.logErr(e, resp); 153 | } finally { 154 | resolve() 155 | } 156 | },timeout) 157 | }) 158 | } 159 | function cgwzfb(timeout = 0) { 160 | return new Promise((resolve) => { 161 | const headers = { 162 | 'Accept' : `*/*`, 163 | 'Accept-Encoding' : `gzip, deflate, br`, 164 | 'Connection' : `keep-alive`, 165 | 'Content-Type' : `application/json`, 166 | 'Host' : `api.litemob.com`, 167 | 'User-Agent' : `cai ge wang zhe/1.3.0 (iPhone; iOS 14.2; Scale/2.00)`, 168 | 'version' : `1.3.0`, 169 | 'Accept-Language' : `zh-Hans-CN;q=1` 170 | }; 171 | let url = { 172 | url : 'https://api.litemob.com/caigewangzhe_ios/song/double', 173 | headers : headers, 174 | body : `{"uid":"${id}","double_id":"${did}"}`, 175 | } 176 | $.post(url, async (err, resp, data) => { 177 | 178 | try { 179 | const result = JSON.parse(data) 180 | if(result.code == 200){ 181 | $.log(`\n猜歌王者答题翻倍成功:获得:${result.data.gold}`) 182 | 183 | await cgwz1() 184 | //$done() 185 | } else { 186 | await $.wait(100); 187 | await cgwz1() 188 | console.log(data) 189 | 190 | } 191 | 192 | } catch (e) { 193 | //$.logErr(e, resp); 194 | } finally { 195 | resolve() 196 | } 197 | },timeout) 198 | }) 199 | } 200 | 201 | 202 | function cgwz1(timeout = 0) { 203 | return new Promise((resolve) => { 204 | const headers = { 205 | 'Accept' : `*/*`, 206 | 'Accept-Encoding' : `gzip, deflate, br`, 207 | 'Connection' : `keep-alive`, 208 | 'Content-Type' : `application/json`, 209 | 'Host' : `api.litemob.com`, 210 | 'User-Agent' : `cai ge wang zhe/1.3.0 (iPhone; iOS 14.2; Scale/2.00)`, 211 | 'version' : `1.3.0`, 212 | 'Accept-Language' : `zh-Hans-CN;q=1` 213 | }; 214 | let url = { 215 | url : 'https://api.litemob.com/caigewangzhe_ios/song/next', 216 | headers : headers, 217 | body : `{"uid":"${id}","is_test":"0"}`, 218 | } 219 | $.post(url, async (err, resp, data) => { 220 | 221 | try { 222 | const result = JSON.parse(data) 223 | if(result.code == 200){ 224 | $.log(`\n猜歌王者上报数据:${result.data.info}`) 225 | //$done() 226 | await cgwzdt() 227 | } else { 228 | await $.wait(100); 229 | 230 | console.log(result.message) 231 | 232 | } 233 | 234 | } catch (e) { 235 | //$.logErr(e, resp); 236 | } finally { 237 | resolve() 238 | } 239 | },timeout) 240 | }) 241 | } 242 | 243 | function cgwzdt(timeout = 0) { 244 | return new Promise((resolve) => { 245 | const headers = { 246 | 'Accept' : `*/*`, 247 | 'Accept-Encoding' : `gzip, deflate, br`, 248 | 'Connection' : `keep-alive`, 249 | 'Content-Type' : `application/json`, 250 | 'Host' : `api.litemob.com`, 251 | 'User-Agent' : `cai ge wang zhe/1.3.0 (iPhone; iOS 14.2; Scale/2.00)`, 252 | 'version' : `1.3.0`, 253 | 'Accept-Language' : `zh-Hans-CN;q=1` 254 | }; 255 | let url = { 256 | url : 'https://api.litemob.com/caigewangzhe_ios/song/video', 257 | headers : headers, 258 | body : `{"uid":"${id}"}`, 259 | } 260 | $.post(url, async (err, resp, data) => { 261 | 262 | try { 263 | const result = JSON.parse(data) 264 | if(result.code == 200){ 265 | $.log(`\n猜歌王者获取答题机会:${result.data.info}`) 266 | //$done() 267 | await wkzztx() 268 | } else { 269 | await $.wait(100); 270 | 271 | console.log(result.message) 272 | 273 | } 274 | 275 | } catch (e) { 276 | //$.logErr(e, resp); 277 | } finally { 278 | resolve() 279 | } 280 | },timeout) 281 | }) 282 | } 283 | 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)} 284 | -------------------------------------------------------------------------------- /scripts/jrkuaixun.js: -------------------------------------------------------------------------------- 1 | /* 2 | 10s阅读 3 | 微信打开立即参与 -> http://h5.qzsjfc.xyz/j/h?upuid=136513&ch=xmy&type=1 4 | 备用链接 -> http://h5.saibangkaile.xyz/j/h?upuid=136513&ch=xmy&type=1 5 | 6 | 每小时有0.3 一天5轮 一天1.5 7 | 进不去关注10秒读书极速版公众号用官方链接 8 | 使用方法:点击开始阅读 成功阅读一次即可抓到包 9 | 脚本没写过盾的 10 | 每次运行都要手动验证一次(也就是一天5次) 11 | 点立即阅读,等文章出来后关闭页面(注意 千万不要返回) 12 | 拉一人头提现0.3奖励0.5 0.8再奖励0.5 13 | https://t.me/wenmou_car 14 | 15 | [task_local] 16 | #10s阅读 17 | 0 8-14/1 * * * https://raw.githubusercontent.com/Wenmoux/scripts/wen/other/jrkuaixun.js, tag=10s阅读, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true 18 | [rewrite_local] 19 | #10s阅读 20 | .*read_channel\/do_read&pageshow.* url script-request-header https://raw.githubusercontent.com/Wenmoux/scripts/wen/other/jrkuaixun.js 21 | 22 | #loon 23 | http-request .*read_channel\/do_read&pageshow.* script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/other/jrkuaixun.js, requires-body=true, timeout=10, tag=10s阅读 24 | 25 | #surge 26 | 27 | 10s阅读 = type=http-request,pattern=.*read_channel\/do_read&pageshow.*,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Wenmoux/scripts/wen/other/jrkuaixun.js,script-update-interval=0 28 | 29 | [MITM] 30 | hostname = m.lainiwl.top 31 | 32 | */ 33 | const $ = new Env('10s阅读'); 34 | const notify = $.isNode() ? require('./sendNotify') : ''; 35 | const jrpush = $.isNode() ? (process.env.jrpush ? process.env.jrpush : false) :false; 36 | const UA = $.isNode() ? (process.env.Read10UA ? process.env.Read10UA : "Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045617 Mobile Safari/537.36 MMWEBID/5077 MicroMessenger/8.0.6.1900(0x2800063D) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64") : ($.getdata('Read10UA') ? JSON.parse($.getdata('Read10UA')) : "Mozilla/5.0 (Linux; Android 11; Redmi K30 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045617 Mobile Safari/537.36 MMWEBID/5077 MicroMessenger/8.0.6.1900(0x2800063D) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64") 37 | let host = $.getdata('read10surl')?$.getdata('read10surl'):`http://m.xhh25.top`; 38 | let cookiesArr = [$.getdata('read10sck')] 39 | if ($.isNode()) { 40 | cookiesArr = process.env.Readck ? process.env.Readck.split("@") : [] 41 | host = process.env.readapi ? process.env.readapi : host 42 | } 43 | message = "" 44 | !(async () => { 45 | if (typeof $request !== "undefined") { 46 | await read10sck() 47 | } 48 | if (!cookiesArr[0]) { 49 | $.msg($.name, '【提示】请先获取cookie', '微信打开 http://h5.hakc.top/j/r1?upuid=136678&ch=xmy', { 50 | "open-url": "http://h5.hakc.top/j/r1?upuid=136678&ch=xmy" 51 | }); 52 | return; 53 | } 54 | console.log(`共${cookiesArr.length}个账号`) 55 | for (let k = 0; k < cookiesArr.length; k++) { 56 | $.canRead = true 57 | $.message = "" 58 | cookie = cookiesArr[k]; 59 | for (let i = 0; i < 33 && $.canRead; i++) { 60 | console.log(`账号【${k+1}】第${i+1}次阅读中`) 61 | // console.log(i) 62 | let url = await read() 63 | if (url) { 64 | if (url == "/read_channel/finish") { 65 | console.log("已达到阅读上限,下个小时再来吧") 66 | i = 9999 67 | } else { 68 | await read(url) 69 | await $.wait(1000); 70 | } 71 | } 72 | if ($.message.length != 0) { 73 | message += `账号【${k+1}】:${$.message} \n\n ` 74 | } 75 | } 76 | } 77 | if (message.length != 0) { 78 | $.msg($.name, "", '10s阅读' + message) 79 | } 80 | if ($.isNode() && jrpush) { 81 | if (message.length != 0) { 82 | await notify.sendNotify("10s阅读", `${message}\n\n吹水群:https://t.me/wenmou_car`); 83 | } 84 | } else { 85 | $.msg($.name, "", '10s阅读' + message) 86 | } 87 | 88 | })() 89 | .catch((e) => $.logErr(e)) 90 | .finally(() => $.done()) 91 | //获取活动信息 92 | 93 | 94 | function read10sck() { 95 | if ($request.url.indexOf("do_read") > -1) { 96 | const read10surls = $request.url 97 | let read10surl = read10surls.match(/(.+?)\/read_channel/) 98 | $.setdata(JSON.stringify($request.headers),"read10surl") 99 | // $.msg($.name, "", '10s阅读 获取数据获取成功!'+read10surl) 100 | if(read10surl) $.setdata(read10surl[1],"read10surl") 101 | if ($request.headers.Cookie) $.setdata($request.headers.Cookie, `read10sck`) 102 | $.log(read10sck) 103 | $.msg($.name, "", '10s阅读 获取数据获取成功!') 104 | } 105 | } 106 | 107 | function read(url1) { 108 | return new Promise(async (resolve) => { 109 | if (!url1) { 110 | url = `${host}/read_channel/do_read&pageshow&r=` 111 | } else { 112 | url = url1 113 | } 114 | let headers = { 115 | cookie, 116 | referer:url, 117 | "X-Requested-With": "XMLHttpRequest", 118 | "User-Agent": UA 119 | } 120 | let options = { 121 | headers, 122 | url 123 | } 124 | // console.log(options) 125 | $.get(options, async (err, resp, data) => { 126 | try { 127 | if (err) { 128 | // console.log(`${JSON.stringify(err)}`); 129 | // console.log(`${$.name} API请求失败,请检查网路重试`); 130 | } else { 131 | // console.log(url) 132 | if (!url1) { 133 | console.log(data) 134 | data = JSON.parse(data); 135 | if (data.url) { 136 | if(!data.jkey){ 137 | resolve(data.url)}else{ 138 | $.message = "该账号需要验证请手动阅读一次并关掉页面(不要点返回)" 139 | $.canRead = false 140 | } 141 | } else { 142 | // console.log(data.click_check) 143 | if (data.click_check ) { 144 | $.message = "该账号需要验证请手动阅读一次并关掉页面(不要点返回)" 145 | console.log($.message) 146 | } else { 147 | console.log(data) 148 | } 149 | $.canRead = false 150 | } 151 | } 152 | } 153 | } catch (e) { 154 | $.logErr(e, resp); 155 | } finally { 156 | resolve(); 157 | } 158 | }); 159 | }); 160 | } 161 | 162 | 163 | function jsonParse(str) { 164 | if (typeof str == "string") { 165 | try { 166 | return JSON.parse(str); 167 | } catch (e) { 168 | console.log(e); 169 | $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') 170 | return []; 171 | } 172 | } 173 | } 174 | 175 | // prettier-ignore 176 | function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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("",`🔔${this.name}, 开始!`)}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("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(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,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).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=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 177 | 178 | -------------------------------------------------------------------------------- /scripts/qlp.js: -------------------------------------------------------------------------------- 1 | /* 2 | 软件名称:考状元娶老婆二合一 商店搜索下载 3 | 更新时间:2021-04-26 @肥皂 4 | 脚本说明:考状元娶老婆刷红包和银币 5 | 脚本为二合一脚本,商店搜索今晚娶老婆,我要考状元。这两个游戏下载即可。 6 | 两个加起来一天五毛吧。提现秒到。注册第二天别忘记去提现一块钱。至于红包提现的200大额就不知道了。等到了再说吧。看看有没有什么套路 7 | 8 | 考状元娶老婆使用方法: 9 | 两个游戏的抓包都是一样的,进入游戏玩一关领取金币就可以获取数据了,记得绑定一下微信,后面应该会加入自动提现。所以别忘记绑定微信。否则无法自动提现 10 | 11 | 本脚本以学习为主! 12 | 13 | TG通知群:https://t.me/Ariszy_Scripts 14 | TG电报交流群: https://t.me/hahaha8028 15 | 16 | boxjs地址 : 17 | 18 | https://raw.githubusercontent.com/age174/-/main/feizao.box.json 19 | 20 | 考状元娶老婆 21 | 圈X配置如下,其他软件自行测试 22 | [task_local] 23 | #考状元娶老婆 24 | 10 0-23 * * * https://raw.githubusercontent.com/age174/-/main/qlp.js, tag=考状元娶老婆, img-url=https://ae01.alicdn.com/kf/Uc2775b8f4abf41788ba89df0317e58050.jpg, enabled=true 25 | 26 | 27 | [rewrite_local] 28 | #考状元娶老婆 29 | https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin url script-request-header https://raw.githubusercontent.com/age174/-/main/qlp.js 30 | 31 | #loon 32 | https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin script-path=https://raw.githubusercontent.com/age174/-/main/qlp.js, requires-header=true, timeout=10, tag=考状元娶老婆 33 | 34 | #surge 35 | 考状元娶老婆 = type=http-request,pattern=https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin,requires-header=1,max-size=0,script-path=https://raw.githubusercontent.com/age174/-/main/qlp.js,script-update-interval=0 36 | 37 | [MITM] 38 | hostname = ibestfanli.com 39 | 40 | */ 41 | 42 | 43 | const $ = new Env('考状元娶老婆二合一'); 44 | let status; 45 | status = (status = ($.getval("qlpstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符 46 | const qlphdArr = [],kzyhdArr = [],qlpcount = '' 47 | let times = Math.round(Date.now() / 1000) 48 | let qlphd = $.getdata('qlphd') 49 | let kzyhd = $.getdata('kzyhd') 50 | let tx = 0 //数字改为1运行脚本可自动提现。联系手动运行。需要提现的时候再改 51 | !(async () => { 52 | if (typeof $request !== "undefined") { 53 | await qlpck() 54 | 55 | } else { 56 | qlphdArr.push($.getdata('qlphd')) 57 | kzyhdArr.push($.getdata('kzyhd')) 58 | let qlpcount = ($.getval('qlpcount') || '1'); 59 | for (let i = 2; i <= qlpcount; i++) { 60 | qlphdArr.push($.getdata(`qlphd${i}`)) 61 | kzyhdArr.push($.getdata(`kzyhd${i}`)) 62 | } 63 | console.log(`------------- 共${qlphdArr.length}个账号-------------\n`) 64 | for (let i = 0; i < qlphdArr.length; i++) { 65 | if (qlphdArr[i]) { 66 | qlphd = qlphdArr[i]; 67 | kzyhd = kzyhdArr[i]; 68 | $.index = i + 1; 69 | console.log(`\n开始【考状元娶老婆${$.index}】`) 70 | await qlpyb(); 71 | await qlphb(); 72 | await kzyyb(); 73 | await kzyhb(); 74 | if(tx == 1){ 75 | await qlptx() 76 | await kzytx() 77 | } 78 | 79 | 80 | } 81 | }} 82 | 83 | })() 84 | .catch((e) => $.logErr(e)) 85 | .finally(() => $.done()) 86 | //考状元娶老婆数据获取 87 | 88 | 89 | function qlpck() { 90 | if ($request.url.indexOf("addCoin") > -1) { 91 | const qlphd = JSON.stringify($request.headers) 92 | if(qlphd.indexOf("oneline") > -1){ 93 | if(qlphd) $.setdata(qlphd,`qlphd${status}`) 94 | $.log(qlphd) 95 | $.msg($.name,"",'娶老婆'+`${status}` +'数据获取成功!') 96 | } else { 97 | const kzyhd = JSON.stringify($request.headers) 98 | if(kzyhd) $.setdata(kzyhd,`kzyhd${status}`) 99 | $.log(kzyhd) 100 | $.msg($.name,"",'考状元'+`${status}` +'数据获取成功!') 101 | 102 | } 103 | } 104 | } 105 | 106 | //娶老婆银币 107 | function qlpyb(timeout = 0) { 108 | return new Promise((resolve) => { 109 | let url = { 110 | url : 'https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin', 111 | headers : JSON.parse(qlphd), 112 | body : `{"data":{"sign":"1BsQIRa8PJVizidFaQuDnC7+uEP8Aph/MrSm6PhPfuUWBYty+T8/cdEVTu0IStzQfIGoGH1gMoZbVXPAnSEYfszdZwiSv2SspgxhCuPCJrE="}}`, 113 | } 114 | $.post(url, async (err, resp, data) => { 115 | try { 116 | const result = JSON.parse(data) 117 | 118 | if(result.code == 0){ 119 | console.log(`\n娶老婆银币获取成功:${result.data.optCoin} 余额:${result.data.userCoin.coin}`) 120 | 121 | } else { 122 | console.log('\n娶老婆银币获取失败'+data) 123 | } 124 | 125 | } catch (e) { 126 | //$.logErr(e, resp); 127 | } finally { 128 | resolve() 129 | } 130 | },timeout) 131 | }) 132 | } 133 | 134 | 135 | //娶老婆红包 136 | function qlphb(timeout = 0) { 137 | return new Promise((resolve) => { 138 | let url = { 139 | url : 'https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin', 140 | headers : JSON.parse(qlphd), 141 | body : `{"data":{"sign":"aqA6DvHGVs\/glSKKYuV2VoeXxn+rxjzzT7NbKS2AQth6gQowNSR\/YZno+9KGTCup9vXXnuMMdPSZK7ubo2CTuBvd2ujaK+Oy4rdrl7OUV80="}}`, 142 | } 143 | $.post(url, async (err, resp, data) => { 144 | try { 145 | const result = JSON.parse(data) 146 | 147 | if(result.code == 0){ 148 | console.log(`\n娶老婆红包获取成功:${result.data.optCoin} 余额:${result.data.userCoin.coin}`) 149 | 150 | } else { 151 | console.log('\n娶老婆红包获取失败'+data) 152 | 153 | } 154 | 155 | } catch (e) { 156 | //$.logErr(e, resp); 157 | } finally { 158 | resolve() 159 | } 160 | },timeout) 161 | }) 162 | } 163 | 164 | 165 | //考状元银币 166 | function kzyyb(timeout = 0) { 167 | return new Promise((resolve) => { 168 | let url = { 169 | url : 'https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin', 170 | headers : JSON.parse(kzyhd), 171 | body : `{"data":{"sign":"tVoBkKhGBNudyw2ovKc+yj01vGFov5M7jjyjpQlhRN7+BoxRdB+MiXtf05tnjlXw1OCAtirpsSEqM78r5nOp1sYdhUqzUOdKMMzXRncCAN8="}}`, 172 | } 173 | $.post(url, async (err, resp, data) => { 174 | try { 175 | const result = JSON.parse(data) 176 | 177 | if(result.code == 0){ 178 | console.log(`\n考状元银币获取成功:${result.data.optCoin} 余额:${result.data.userCoin.coin}`) 179 | 180 | } else { 181 | console.log('\n考状元银币获取失败'+data) 182 | } 183 | 184 | } catch (e) { 185 | //$.logErr(e, resp); 186 | } finally { 187 | resolve() 188 | } 189 | },timeout) 190 | }) 191 | } 192 | 193 | 194 | //考状元红包 195 | function kzyhb(timeout = 0) { 196 | return new Promise((resolve) => { 197 | let url = { 198 | url : 'https://ibestfanli.com/commerce_coin_service/api/user/coin/addCoin', 199 | headers : JSON.parse(kzyhd), 200 | body : `{"data":{"sign":"tVoBkKhGBNudyw2ovKc+ytjA06SkUMiBWBQaONF9uko3TQRncJDKYnuVmBU58nhCDOlde9gaZP\/FEh9NYVLkr2wXP5marMkU\/DCjthHDT9I="}}`, 201 | } 202 | $.post(url, async (err, resp, data) => { 203 | try { 204 | const result = JSON.parse(data) 205 | 206 | if(result.code == 0){ 207 | console.log(`\n考状元红包获取成功:${result.data.optCoin} 余额:${result.data.userCoin.coin}`) 208 | 209 | } else { 210 | console.log('\n考状元红包获取失败'+data) 211 | } 212 | 213 | } catch (e) { 214 | //$.logErr(e, resp); 215 | } finally { 216 | resolve() 217 | } 218 | },timeout) 219 | }) 220 | } 221 | 222 | //娶老婆提现 223 | function qlptx(timeout = 0) { 224 | return new Promise((resolve) => { 225 | let url = { 226 | url : 'https://commerce.ibestfanli.com/commerce_pay_service/api/pointsWithdraw/withdrawApply', 227 | headers : JSON.parse(qlphd), 228 | body : `{"handle":0,"data":{"amount":0,"withdrawScheme":0,"sysCode":"C","pointsWithdrawId":148},"shandle":0}`, 229 | } 230 | $.post(url, async (err, resp, data) => { 231 | try { 232 | const result = JSON.parse(data) 233 | 234 | if(result.code == 0){ 235 | console.log(`\n娶老婆提现成功:${result.msg}`) 236 | 237 | } else { 238 | console.log('\n娶老婆提现失败:'+data) 239 | } 240 | 241 | } catch (e) { 242 | //$.logErr(e, resp); 243 | } finally { 244 | resolve() 245 | } 246 | },timeout) 247 | }) 248 | } 249 | 250 | 251 | //考状元提现 252 | function kzytx(timeout = 0) { 253 | return new Promise((resolve) => { 254 | let url = { 255 | url : 'https://commerce.ibestfanli.com/commerce_pay_service/api/pointsWithdraw/withdrawApply', 256 | headers : JSON.parse(kzyhd), 257 | body : `{"handle":0,"data":{"amount":0,"withdrawScheme":0,"sysCode":"710302303803","pointsWithdrawId":226},"shandle":0}`, 258 | } 259 | $.post(url, async (err, resp, data) => { 260 | try { 261 | const result = JSON.parse(data) 262 | 263 | if(result.code == 0){ 264 | console.log(`\n考状元提现成功:${result.msg}`) 265 | 266 | } else { 267 | console.log('\n考状元提现失败:'+data) 268 | } 269 | 270 | } catch (e) { 271 | //$.logErr(e, resp); 272 | } finally { 273 | resolve() 274 | } 275 | },timeout) 276 | }) 277 | } 278 | 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)} 279 | -------------------------------------------------------------------------------- /scripts/readme.md: -------------------------------------------------------------------------------- 1 | ## 转载自https://github.com/adwktt/adwktt 2 | 因为作者老删库,所以下载备份至此 3 | -------------------------------------------------------------------------------- /scripts/shq.js: -------------------------------------------------------------------------------- 1 | /* 2 | 软件名称:生活圈 商店搜索下载 3 | 更新时间:2021-04-08 @肥皂 4 | 脚本说明:生活圈自动阅读 5 | 脚本为自动完成生活圈的评论任务 6 | 请不要分享此脚本,请不要分享此脚本,请不要分享此脚本。 7 | 单纯跑脚本每天低保三块钱。手动去转载文章到生活圈,两毛一条, 8 | 请转账自己生活圈定位地区的文章。文章可以去微信搜索定位地区的一些本地新闻号转载。文章可转载或直接复制粘贴当原创发布,只要上了推送十块钱一篇。判定原创1元一贴 9 | 本人公众号,有些脚本可能只会发布到公众号,比如自己偷撸的,bug无限刷之类的,不定期更新一些文章吧。下面的链接是公众号二维码 10 | https://ae01.alicdn.com/kf/Ub229d86c9337410ebe479afe22226c9aV.jpg 11 | 复制此文章链接到微信打开阅读并下载生活圈,我会有两分钱的收益,谢谢大家。 12 | https://tz.fafengtuqiang.cn/weizhan/article/109912864/31896564367/1568637/510227705367/1080334 13 | 或者商店搜索下载,微信秒到,注册后七天可提现,之后每天可提 14 | 本脚本以学习为主! 15 | 使用方法:首页找到评论有奖,点进去即获取数据成功 16 | TG电报群: https://t.me/hahaha8028 17 | 注意事项:必看。 18 | 脚本默认评论方式为使用文章标题评论,最好去boxjs自定义评论内容里添加自定义的内容,否则太多人评论都是相同的内容,这样容易出问题,部分地区可能没有评论有奖的任务,需要自己切换地区,首次打开软件最好把软件的定位权限关闭 19 | 可参与评论有奖的地区: 这些地区由@ziye测试提供,辛苦大佬。 20 | 无锡 徐州 泰州 莆田 泉州 南昌 赣州 烟台 威海 临沂 郑州 开封 洛阳 周口 十堰 荆门 孝感 荆州 重庆 自贡 宜宾 21 | 以上地区请不要批量扎堆到一个地方,自己随机选一个地区。多账号直接退出登录,换号就行,不需要使用卸载大法,去生活圈公众号绑定一下账号就行了,多账号请尽量错开地区玩,最好每天去boxjs修改一下自定义评论的内容,最大限度的防止黑号。 22 | boxjs地址 : 23 | https://raw.githubusercontent.com/age174/-/main/feizao.box.json 24 | 生活圈 25 | 圈X配置如下,其他软件自行测试 26 | [task_local] 27 | #生活圈 28 | 0-59 9,12,22 * * * https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/shq.js, tag=生活圈, img-url=https://ftp.bmp.ovh/imgs/2021/04/e2b32e2eb2ad0cd3.png, enabled=true 29 | [rewrite_local] 30 | #生活圈 31 | https://ex.jwshq.cn/app/commentator/getActivityItemPage url script-request-header https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/shq.js 32 | #loon 33 | https://ex.jwshq.cn/app/commentator/getActivityItemPage script-path=https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/shq.js, requires-header=true, timeout=10, tag=生活圈 34 | #surge 35 | 生活圈 = type=http-request,pattern=https://ex.jwshq.cn/app/commentator/getActivityItemPage,requires-header=1,max-size=0,script-path=https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/shq.js,script-update-interval=0 36 | [MITM] 37 | hostname = ex.jwshq.cn 38 | */ 39 | 40 | const $ = new Env('生活圈自动评论'); 41 | let status; 42 | status = (status = ($.getval("shqstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符 43 | const shqurlArr = [], shqhdArr = [],shqcount = '' 44 | let times = Math.round(Date.now() / 1000) 45 | let shqurl = $.getdata('shqurl') 46 | let shqhd = $.getdata('shqhd') 47 | let shqkey = '',id = '',uid='',tid='' 48 | let nr = ($.getval('nr') || '');//自定义评论内容 49 | let txje = 15 //在此处修改一下需要提现的金额,可对照自己的余额修改提现,支持小数点提现,改完手动运行脚本即可提现,微信秒到,记得绑定自己的微信 50 | let kg = 0 //提现开关,默认关闭,改为1手动执行一次可提现 51 | !(async () => { 52 | if (typeof $request !== "undefined") { 53 | await shqck() 54 | 55 | } else {shqurlArr.push($.getdata('shqurl')) 56 | shqhdArr.push($.getdata('shqhd')) 57 | let shqcount = ($.getval('shqcount') || '1'); 58 | for (let i = 2; i <= shqcount; i++) { 59 | shqurlArr.push($.getdata(`shqurl${i}`)) 60 | shqhdArr.push($.getdata(`shqhd${i}`)) 61 | } 62 | console.log(`------------- 共${shqhdArr.length}个账号-------------\n`) 63 | for (let i = 0; i < shqhdArr.length; i++) { 64 | if (shqhdArr[i]) { 65 | 66 | shqurl = shqurlArr[i]; 67 | shqhd = shqhdArr[i]; 68 | $.index = i + 1; 69 | console.log(`\n开始【生活圈${$.index}】`) 70 | await shqlb(); 71 | await shqxx(); 72 | if(kg == 1){ 73 | await shqtx(); 74 | } 75 | 76 | 77 | } 78 | }} 79 | 80 | })() 81 | .catch((e) => $.logErr(e)) 82 | .finally(() => $.done()) 83 | //生活圈数据获取 84 | 85 | 86 | function shqck() { 87 | if ($request.url.indexOf("start=") > -1) { 88 | const shqurl = $request.url 89 | if(shqurl) $.setdata(shqurl,`shqurl${status}`) 90 | $.log(shqurl) 91 | const shqhd = JSON.stringify($request.headers) 92 | if(shqhd) $.setdata(shqhd,`shqhd${status}`) 93 | $.log(shqhd) 94 | $.msg($.name,"",'生活圈'+`${status}` +'数据获取成功!') 95 | } 96 | } 97 | 98 | 99 | 100 | 101 | 102 | 103 | //生活圈任务列表 104 | function shqlb(timeout = 0) { 105 | return new Promise((resolve) => { 106 | 107 | let url = { 108 | url : `https://ex.jwshq.cn/app/commentator/getActivityItemPage?start=1&limit=1`, 109 | headers : JSON.parse(shqhd), 110 | 111 | } 112 | $.get(url, async (err, resp, data) => { 113 | 114 | try { 115 | const result = JSON.parse(data) 116 | if(result.code== 0){ 117 | if(result.data.data[0] == undefined){ 118 | $.log('\n生活圈没有匹配到任务列表') 119 | } 120 | name = result.data.data[0].title 121 | name = encodeURI(name+nr) 122 | key = result.data.data[0].articleId 123 | console.log('\n生活圈获取任务ID成功\n当前任务ID: '+key+'\n开始提交评论:'+result.data.data[0].title) 124 | //$.log(name) 125 | await $.wait(1000); 126 | await shqtj() 127 | } else { 128 | console.log('\n生活圈获取任务ID失败 '+result.msg) 129 | 130 | } 131 | 132 | } catch (e) { 133 | //$.logErr(e, resp); 134 | } finally { 135 | resolve() 136 | } 137 | },timeout) 138 | }) 139 | } 140 | 141 | 142 | 143 | //生活圈提交 144 | function shqtj(timeout = 0) { 145 | return new Promise((resolve) => { 146 | let url = { 147 | url : "https://ex.jwshq.cn/app/commentator/comment", 148 | headers : JSON.parse(shqhd), 149 | body : `imageId=&articleId=${key}&text=${name}&sign=0`, 150 | } 151 | $.post(url, async (err, resp, data) => { 152 | try { 153 | 154 | 155 | const result = JSON.parse(data) 156 | if(result.data.award == 3){ 157 | console.log('\n生活圈提交评论成功,获得'+result.data.award+'分现金奖励') 158 | await $.wait(1000); 159 | await shqtq() 160 | 161 | } else { 162 | console.log('\n生活圈错误'+result.data.message) 163 | 164 | } 165 | 166 | } catch (e) { 167 | //$.logErr(e, resp); 168 | } finally { 169 | resolve() 170 | } 171 | },timeout) 172 | }) 173 | } 174 | //生活圈领取现金 175 | function shqtq(timeout = 0) { 176 | return new Promise((resolve) => { 177 | let url = { 178 | url : "https://ex.jwshq.cn/app/commentator/increaseBalance", 179 | headers : JSON.parse(shqhd), 180 | 181 | } 182 | $.get(url, async (err, resp, data) => { 183 | try { 184 | 185 | const result = JSON.parse(data) 186 | if(result.data == true){ 187 | console.log('\n生活圈任务提取现金成功') 188 | //await $.wait(1000); 189 | //await shqlb() 190 | } else { 191 | console.log('\n生活圈任务提取现金失败') 192 | 193 | } 194 | 195 | } catch (e) { 196 | //$.logErr(e, resp); 197 | } finally { 198 | resolve() 199 | } 200 | },timeout) 201 | }) 202 | } 203 | 204 | //生活圈提现 205 | function shqtx(timeout = 0) { 206 | return new Promise((resolve) => { 207 | let url = { 208 | url : "https://ex.jwshq.cn/app/wx/withdraw", 209 | headers : JSON.parse(shqhd), 210 | body : 'amount='+txje, 211 | 212 | } 213 | $.post(url, async (err, resp, data) => { 214 | try { 215 | 216 | const result = JSON.parse(data) 217 | if(result.code == 0){ 218 | console.log(`\n生活圈提现:${result.data.message}`) 219 | 220 | } else { 221 | console.log('\n生活圈提现错误'+data) 222 | 223 | } 224 | 225 | } catch (e) { 226 | //$.logErr(e, resp); 227 | } finally { 228 | resolve() 229 | } 230 | },timeout) 231 | }) 232 | } 233 | 234 | //生活圈信息 235 | function shqxx(timeout = 0) { 236 | return new Promise((resolve) => { 237 | let url = { 238 | url : "https://ex.jwshq.cn/app/commentator/commentAwardInfo", 239 | headers : JSON.parse(shqhd), 240 | } 241 | $.get(url, async (err, resp, data) => { 242 | try { 243 | 244 | const result = JSON.parse(data) 245 | if(result.code == 0){ 246 | uid = result.data.awardAmountToday / 100 247 | tid = result.data.awardAmountTotal / 100 248 | console.log(`\n生活圈今日评论文章数:${result.data.commentNum}\n今日共获得:${uid}元\n我的总收入:${tid}元`) 249 | 250 | } else { 251 | console.log('\n生活圈错误'+data) 252 | 253 | } 254 | 255 | } catch (e) { 256 | //$.logErr(e, resp); 257 | } finally { 258 | resolve() 259 | } 260 | },timeout) 261 | }) 262 | } 263 | 264 | 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)} 265 | -------------------------------------------------------------------------------- /scripts/xbyd.js: -------------------------------------------------------------------------------- 1 | /* 2 | 软件名称:小宝阅读 3 | 更新时间:2021-04-28 @肥皂 4 | 脚本说明:小宝阅读自动阅读 5 | 脚本为自动完成小宝阅读的阅读任务 6 | 每日收益一两块左右吧,可多号撸。 7 | 这个脚本一个月前就写了。不过一直没什么任务。今天看了一下。任务多起来了。可以开搞了。需要手动阅读一次通过鉴权再执行脚本。 8 | 目前单价 0.018元。不知道中途要不要鉴权。待测。 9 | 10 | 复制链接打开 11 | https://app.b4tg3gc.top/app_reg?share_id=d689d21fa27283a1205975 12 | 13 | 复制后点击手动任务。按提示进入阅读界面即可。 14 | 本脚本以学习为主! 15 | 使用方法:点击任务大厅的阅读文章 16 | 点击开始阅读,等待7-8秒返回获取数据 17 | 18 | TG电报群: https://t.me/hahaha8028 19 | 20 | boxjs地址 : 21 | 22 | https://raw.githubusercontent.com/age174/-/main/feizao.box.json 23 | 24 | 25 | 小宝阅读 26 | 圈X配置如下,其他软件自行测试,定时可以多设置几次,没任务会停止运行的 27 | [task_local] 28 | #小宝阅读 29 | 5,35 9-22 * * * https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/xbyd.js, tag=小宝阅读, img-url=https://ae01.alicdn.com/kf/Ubc6bbe61f9f64be78d2b89ec88557fa4f.jpg, enabled=true 30 | 31 | 32 | [rewrite_local] 33 | #小宝阅读 34 | https://app.b4tg3gc.top/wxread/indexinfo? url script-request-header https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/xbyd.js 35 | #更改等待时长(小宝阅读进入需要等待一分多钟才能点击,添加该重写可以把等待时长改为5秒。) 36 | https:\/\/app\.b4tg3gc\.top\/wxread\/indexinfo\? url response-body limit_time = \d+ response-body limit_time = 5 37 | 38 | 39 | #loon 40 | https://app.b4tg3gc.top/wxread/indexinfo? script-path=https://raw.githubusercontent.com/age174/-/main/xbyd.js, requires-header=true, timeout=10, tag=小宝阅读 41 | 42 | 43 | 44 | #surge 45 | 46 | 小宝阅读 = type=http-request,pattern=https://app.b4tg3gc.top/wxread/indexinfo?,requires-header=1,max-size=0,script-path=https://raw.githubusercontent.com/age174/-/main/xbyd.js,script-update-interval=0 47 | 48 | 49 | 50 | 51 | [MITM] 52 | hostname = app.b4tg3gc.top 53 | 54 | 55 | */ 56 | 57 | 58 | const $ = new Env('小宝阅读自动阅读'); 59 | let status; 60 | status = (status = ($.getval("xbydstatus") || "1") ) > 1 ? `${status}` : ""; // 账号扩展字符 61 | const xbydurlArr = [], xbydhdArr = [],xbydcount = '' 62 | let times = Math.round(Date.now() / 1000) 63 | let xbydurl = $.getdata('xbydurl') 64 | let xbydhd = $.getdata('xbydhd') 65 | let xbydkey = '',id = '',uid='',tid='',name='',xx='' 66 | !(async () => { 67 | if (typeof $request !== "undefined") { 68 | await xbydck() 69 | 70 | } else {xbydurlArr.push($.getdata('xbydurl')) 71 | xbydhdArr.push($.getdata('xbydhd')) 72 | let xbydcount = ($.getval('xbydcount') || '1'); 73 | for (let i = 2; i <= xbydcount; i++) { 74 | xbydurlArr.push($.getdata(`xbydurl${i}`)) 75 | xbydhdArr.push($.getdata(`xbydhd${i}`)) 76 | } 77 | console.log(`------------- 共${xbydhdArr.length}个账号-------------\n`) 78 | for (let i = 0; i < xbydhdArr.length; i++) { 79 | if (xbydhdArr[i]) { 80 | 81 | xbydurl = xbydurlArr[i]; 82 | xbydhd = xbydhdArr[i]; 83 | $.index = i + 1; 84 | console.log(`\n开始【小宝阅读${$.index}】`) 85 | await xbyd1(); 86 | await xbydxx(); 87 | 88 | } 89 | }} 90 | 91 | })() 92 | .catch((e) => $.logErr(e)) 93 | .finally(() => $.done()) 94 | //小宝阅读数据获取 95 | 96 | 97 | function xbydck() { 98 | if ($request.url.indexOf("user_id") > -1) { 99 | const xbydurl = $request.url 100 | if(xbydurl) $.setdata(xbydurl,`xbydurl${status}`) 101 | $.log(xbydurl) 102 | const xbydhd = JSON.stringify($request.headers) 103 | if(xbydhd) $.setdata(xbydhd,`xbydhd${status}`) 104 | $.log(xbydhd) 105 | $.msg($.name,"",'小宝阅读'+`${status}` +'数据获取成功!') 106 | } 107 | } 108 | 109 | //小宝阅读key 110 | function xbyd1(timeout = 0) { 111 | return new Promise((resolve) => { 112 | setTimeout( ()=>{ 113 | if (typeof $.getdata('xbydhd') === "undefined") { 114 | $.msg($.name,"",'请先获取小宝阅读数据!😓',) 115 | $.done() 116 | } 117 | 118 | let url = { 119 | url : xbydurl, 120 | headers : JSON.parse(xbydhd), 121 | 122 | } 123 | $.get(url, async (err, resp, data) => { 124 | 125 | try { 126 | //console.log(data) 127 | 128 | if(resp.statusCode == 200){ 129 | console.log('\n小宝阅读获取任务信息成功') 130 | uid=data.match(/user_id = "(.*?)";/)[1] 131 | tid=data.match(/token = '(.*?)';/)[1] 132 | name=data.match(/

(.*?) { 160 | 161 | let url = { 162 | url : "https://app.b4tg3gc.top/wxread/startread", 163 | headers : JSON.parse(xbydhd), 164 | body : `user_id=${uid}&signature=${tid}&task_type=1`, 165 | 166 | } 167 | $.post(url, async (err, resp, data) => { 168 | 169 | try { 170 | const result = JSON.parse(data) 171 | 172 | if(result.status_code == 200){ 173 | if(result.data == ''){ 174 | $.log('\n任务更新中') 175 | }else{ 176 | tid =result.token 177 | id =data.task_id 178 | 179 | console.log('\n小宝阅读获取任务ID成功\n今日阅读次数'+name+'\n当前任务ID: '+uid+'\n任务token:'+tid+'\n开始循环阅读,等待十秒:') 180 | await $.wait(10000); 181 | await xbydyd(); 182 | } 183 | } else { 184 | console.log('\n小宝阅读获取任务ID失败 '+result.message) 185 | } 186 | 187 | } catch (e) { 188 | //$.logErr(e, resp); 189 | } finally { 190 | resolve() 191 | } 192 | },timeout) 193 | }) 194 | } 195 | 196 | 197 | //小宝阅读提交 198 | function xbydyd(timeout = 0) { 199 | return new Promise((resolve) => { 200 | let url = { 201 | url : "https://app.b4tg3gc.top/wxread/getreadstatus", 202 | headers : JSON.parse(xbydhd), 203 | body : `user_id=${uid}&task_id=${id}&signature=${tid}&task_type=1`, 204 | } 205 | $.post(url, async (err, resp, data) => { 206 | $.log(data) 207 | try { 208 | 209 | const result = JSON.parse(data) 210 | if(result.data.code == 1){ 211 | console.log('\n小宝阅读任务提交:'+result.message+'\n获得积分:'+result.data.points) 212 | 213 | await xbyd1(); 214 | } else { 215 | console.log('\n小宝阅读任务提交失败 '+result.message) 216 | 217 | } 218 | 219 | } catch (e) { 220 | //$.logErr(e, resp); 221 | } finally { 222 | resolve() 223 | } 224 | },timeout) 225 | }) 226 | } 227 | 228 | 229 | //小宝阅读信息 230 | function xbydxx(timeout = 0) { 231 | return new Promise((resolve) => { 232 | 233 | let url = { 234 | url : "https://app.b4tg3gc.top/get/profit?user_id="+uid, 235 | headers : JSON.parse(xbydhd), 236 | 237 | } 238 | $.get(url, async (err, resp, data) => { 239 | try { 240 | 241 | const result = JSON.parse(data) 242 | if(result.code == 'S'){ 243 | console.log('\n小宝阅读获取用户信息成功\n今日预估收益:'+result.data.todayProfit+'\n当前账户余额:'+result.data.totalProfit+'\n今日阅读次数:'+result.data.tridTaskNum) 244 | 245 | } else { 246 | console.log('\n小宝阅读获取用户信息失败 '+result.msg) 247 | } 248 | 249 | } catch (e) { 250 | //$.logErr(e, resp); 251 | } finally { 252 | resolve() 253 | } 254 | },timeout) 255 | }) 256 | } 257 | 258 | 259 | 260 | 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)} 261 | -------------------------------------------------------------------------------- /scripts/ygkc.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | 阳光矿场小程序无限刷红包雨 4 | 添加重写和mitm 5 | 6 | 脚本添加到本地吧 7 | 我就不上传了 8 | 去红包雨界面领取一个红包获取数据 9 | 刷个百来块就算了哈 ,自己暂停,手动提现一元,可以一直提现 10 | 到不到账看人品 11 | 12 | mitm 13 | 14 | k009.taoyuoo.top 15 | 16 | 重写 17 | 18 | https://k009.taoyuoo.top/app/index.php? url script-request-header https://raw.githubusercontent.com/sngxpro/QuanX/master/scripts/ygkc.js 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 times = Math.round(Date.now() / 1000) 28 | let ygkcurl = $.getdata('ygkcurl') 29 | let ygkchd = $.getdata('ygkchd') 30 | let jc = 1000 31 | !(async () => { 32 | if (typeof $request !== "undefined") { 33 | await ygkcck() 34 | 35 | } else {ygkcurlArr.push($.getdata('ygkcurl')) 36 | ygkchdArr.push($.getdata('ygkchd')) 37 | let ygkccount = ($.getval('ygkccount') || '1'); 38 | for (let i = 2; i <= ygkccount; i++) { 39 | ygkcurlArr.push($.getdata(`ygkcurl${i}`)) 40 | ygkchdArr.push($.getdata(`ygkchd${i}`)) 41 | } 42 | console.log(`------------- 共${ygkchdArr.length}个账号-------------\n`) 43 | for (let i = 0; i < ygkchdArr.length; i++) { 44 | if (ygkchdArr[i]) { 45 | 46 | ygkcurl = ygkcurlArr[i]; 47 | ygkchd = ygkchdArr[i]; 48 | $.index = i + 1; 49 | console.log(`\n开始【阳光矿场${$.index}】`) 50 | await wkzztx(); 51 | 52 | } 53 | }} 54 | 55 | })() 56 | .catch((e) => $.logErr(e)) 57 | .finally(() => $.done()) 58 | //数据获取 59 | 60 | 61 | function ygkcck() { 62 | if ($request.url.indexOf("redbag") > -1) { 63 | const ygkcurl = $request.url 64 | if(ygkcurl) $.setdata(ygkcurl,`ygkcurl${status}`) 65 | $.log(ygkcurl) 66 | const ygkchd = JSON.stringify($request.headers) 67 | if(ygkchd) $.setdata(ygkchd,`ygkchd${status}`) 68 | $.log(ygkchd) 69 | $.msg($.name,"",'阳光矿场'+`${status}` +'数据获取成功!') 70 | } 71 | } 72 | 73 | 74 | 75 | function wkzztx(timeout = 0) { 76 | return new Promise((resolve) => { 77 | 78 | let url = { 79 | url : ygkcurl.match(/(.*?)time/)[1]+`time=${jc++}`, 80 | headers : ygkchd, 81 | 82 | } 83 | $.get(url, async (err, resp, data) => { 84 | try { 85 | const result = JSON.parse(data) 86 | if(result.result == 'success'){ 87 | 88 | $.log('\n'+result.addmoney) 89 | $.wait(1000); 90 | await wkzztx() 91 | } else { 92 | $.wait(1000); 93 | await wkzztx() 94 | console.log(result.msg) 95 | } 96 | 97 | } catch (e) { 98 | //$.logErr(e, resp); 99 | } finally { 100 | resolve() 101 | } 102 | },timeout) 103 | }) 104 | } 105 | 106 | 107 | 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)} 108 | -------------------------------------------------------------------------------- /sngx2021.conf: -------------------------------------------------------------------------------- 1 | # Quantumult X小白配置 制作 by微信公众号:少年歌行PRO 2021/6/30被迫更换了仓库 2 | # 为便于识别和指出问题,增加版本号标识。当前版本号v3.0.0。 3 | # Telegram资源发布群(禁言纯净)@shao66 4 | # Telegram水友交流群(资源同步)@sngxpro 5 | # Telegram私聊群主 @shaogebot 6 | #脚本调用下列大佬的资源,在此致谢,排名不分先后 7 | #@nobyda @chavyleung @zzpiglet @songyangzz @toulanboy @sunert @peng-ym @iepngs @lowking @lxk0301 @vinewx @chouchoui @Orz-3 @ZhiYi-N @evilbutcher @yichahucha @id77 @photonmang @wangdelu2020 @Zero-S1 @ziye12 @barrym-chen @iisams @LJJJia @congcong0806 @XidNDD @passerby-b @photonmang 8 | 9 | #特别感谢Orz-3的图标项目 美化效果杠杠的 10 | 11 | [dns] 12 | no-ipv6 13 | server=119.29.29.29 14 | address=/mtalk.google.com/108.177.125.188 15 | 16 | [general] 17 | server_check_url=http://bing.com/ 18 | dns_exclusion_list=*.cmpassport.com, *.jegotrip.com.cn, *.icitymobile.mobi, id6.me, *.icitymobile.mobi, *.pingan.com.cn, *.cmbchina.com, *.localnetwork.uop, mfs.ykimg.com*.ttf 19 | geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://ghproxy.com/https://raw.githubusercontent.com/Orz-3/QuantumultX/master/IP.js 20 | resource_parser_url=https://ghproxy.com/https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/resource-parser.js 21 | profile_img_url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/icons/wangzhe/bailishouyue.png 22 | fallback_udp_policy=direct 23 | udp_whitelist=53, 80-427, 444-65535 24 | 25 | 26 | [policy] 27 | #可选策略,默认不启用,如需启用,请去掉下行的 # 。 28 | #static=节点选择, 手动选择, 延迟最低, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Orz-3/mini/none/Zero.png 29 | #可选策略,默认不启用,如需启用,请去掉下行的#。 30 | #static=手动选择, server-tag-regex=.*, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Orz-3/mini/master/Color/Manual.png 31 | #可选策略,默认不启用,如需启用,请去掉下行的#。 32 | #url-latency-benchmark=延迟最低, server-tag-regex=.*, check-interval=300, tolerance=0, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Orz-3/mini/master/Color/Urltest.png 33 | #可选策略,默认不启用,如需启用,请同时启用下方[filter]的网易云音乐分流、[server remote]的网易云节点订阅,三者不同时启用成功会报错。启用方法是删除下一行开头的# 34 | #选择本地节点中的网易云解锁灰色节点 35 | static=TikTok, proxy, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/diluke.png 36 | static=网易云音乐, 解锁节点一, 解锁节点二, 解锁节点三, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/wendi.png 37 | static=新加坡, server-tag-regex=(?=.*(新加坡|狮城|SG|(?i)Singapore))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/keli.png 38 | static=美国, server-tag-regex=(?=.*(美国|美國|US|(?i)States|American))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/anbo.png 39 | static=日本, server-tag-regex=(?=.*(日本|JP|(?i)Japan))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/keqing.png 40 | static=韩国, server-tag-regex=(?=.*(韩国|韓國|南朝鲜|KR|(?i)Korean))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/feixieer.png 41 | static=香港, server-tag-regex=(?=.*(香港|HK|(?i)Hong))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/xiangling.png 42 | static=台湾, server-tag-regex=(?=.*(台湾|台灣|TW|(?i)Taiwan))^((?!(专线|手游|游戏|(?i)IPLC|IEPL|game)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/babala.png 43 | static=特殊, server-tag-regex=^((?!(专线|手游|游戏|香港|台湾|日本|新加坡|美国|韩国|狮城|南朝鲜|US|SG|JP|KR|HK|TW|台灣|美國|韓國|獅城|账号|试用|流量|电报|网址|最新|域名|剩余|(?i)IPLC|IEPL|game|States|American|Singapore|Japan|Korea|Hong|Taiwan|data|date|website)).)*$, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/mona.png 44 | static=IPLC, server-tag-regex=(手游|游戏|专线|(?i)IPLC|IEPL|game), img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/shatang2.png 45 | static=苹果服务, direct, 美国, 香港, proxy, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/qiqi.png 46 | static=全球加速, proxy, 美国, 新加坡, 日本, 韩国, 香港, 台湾, 特殊, IPLC, direct, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/ganyu.png 47 | static=港台番剧, direct, 香港, 台湾, proxy, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/diaona.png 48 | static=国际媒体, proxy, 美国, 新加坡, 日本, 韩国, 香港, 台湾, 特殊, direct, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/qin.png 49 | static=声田音乐, proxy, 美国, 香港, 日本, direct, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/beidou.png 50 | static=网飞影视, proxy, 新加坡, 香港, 台湾, direct, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/lisha.png 51 | static=电报代理, proxy, direct, 新加坡, IPLC, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/ningguang.png 52 | static=黑白名单, proxy, direct, 美国, 新加坡, 日本, 韩国, 香港, 台湾, 特殊, IPLC, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/nvshi.png 53 | 54 | 55 | 56 | [server_remote] 57 | #公众号少年歌行PRO提示您:这个位置用于填写您的机场订阅地址(请回车另起一行) 58 | #公众号少年歌行PRO提示您:这个位置已赠送您2个可用订阅,我会长期维护的喲 59 | #下方是高速订阅,速度快,但被封全死,不要看测速结果,因为禁止测速所以不准,直接使用看是否可用 60 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/proxies/main/Youthsongsfreeqx, tag=公众号少年歌行pro🤪, img-url=https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/icons/main/genshin/mona.png, update-interval=86400, opt-parser=false, enabled=true 61 | 62 | 63 | [filter_remote] 64 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Unbreak.list, tag=规则修正, update-interval=86400, opt-parser=false, enabled=true 65 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Guard/Advertising.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=false, enabled=true 66 | https://ghproxy.com/https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRule.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=false, enabled=true 67 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Guard/Privacy.list, tag=隐私保护, force-policy=reject, update-interval=86400, opt-parser=false, enabled=true 68 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Guard/Hijacking.list, tag=运营劫持, force-policy=reject, update-interval=86400, opt-parser=false, enabled=true 69 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/Telegram/Telegram.list, tag=电报代理, force-policy=电报代理, update-interval=86400, opt-parser=false, enabled=true 70 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Music/Spotify.list, tag=声田音乐, force-policy=声田音乐, update-interval=86400, opt-parser=false, enabled=true 71 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/Netflix.list, tag=网飞影视, force-policy=网飞影视, update-interval=86400, opt-parser=false, enabled=true 72 | https://ghproxy.com/https://raw.githubusercontent.com/Semporia/Quantumult-X/master/Filter/TikTok.list, tag=TikTok, force-policy=TikTok, update-interval=86400, opt-parser=false, enabled=true 73 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/Bahamut.list, tag=动画疯, force-policy=台湾, update-interval=86400, opt-parser=false, enabled=true 74 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Streaming.list, tag=国际媒体, force-policy=国际媒体, update-interval=86400, opt-parser=false, enabled=true 75 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/StreamingSE.list, tag=港台番剧, force-policy=港台番剧, update-interval=86400, opt-parser=false, enabled=true 76 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Global.list, tag=全球加速, force-policy=全球加速, update-interval=86400, opt-parser=false, enabled=true 77 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/Apple/AppStoreConnect.list, tag=苹果服务, force-policy=苹果服务, update-interval=86400, opt-parser=false, enabled=true 78 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/Apple/AppStore.list, tag=苹果服务, force-policy=苹果服务, update-interval=86400, opt-parser=false, enabled=true 79 | https://ghproxy.com/https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Apple/Apple.list, tag=苹果服务, force-policy=苹果服务, update-interval=86400, opt-parser=true, enabled=true 80 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/filter/China.list, tag=国内网站, force-policy=direct, update-interval=86400, opt-parser=false, enabled=true 81 | 82 | 83 | [rewrite_remote] 84 | # 注意,仅支持版本号16.2以下版本抖音,高版本抖音检测解密,有可能会出现黑屏问题,因此旧版本打勾,新版本不要打勾 85 | # 如想降级到16.2,ID为:842443730(使用降级软件或者ios越狱插件等都可以) 86 | https://ghproxy.com/https://raw.githubusercontent.com/sngxmini/QuanX/main/rewrite/douyin.conf, tag=抖音净化(仅16.2以下), update-interval=86400, opt-parser=false, enabled=true 87 | #解锁限制类规则,根据需要选择是否开启 88 | https://ghproxy.com/https://raw.githubusercontent.com/sngxmini/QuanX/master/rewrite/tiktokJP.conf, tag=tiktok解锁日区(勿混用), update-interval=86400, opt-parser=true, enabled=true 89 | https://ghproxy.com/https://raw.githubusercontent.com/sngxmini/QuanX/master/rewrite/tiktokTW.conf, tag=tiktok解锁台区(勿混用), update-interval=86400, opt-parser=true, enabled=false 90 | https://ghproxy.com/https://raw.githubusercontent.com/sngxmini/QuanX/master/rewrite/tiktokKR.conf, tag=tiktok解锁韩区(勿混用), update-interval=86400, opt-parser=true, enabled=false 91 | https://ghproxy.com/https://raw.githubusercontent.com/sngxmini/QuanX/master/rewrite/tiktokUS.conf, tag=tiktok解锁美区(勿混用), update-interval=86400, opt-parser=true, enabled=false 92 | #BoxJs规则,强烈建议保持开启 93 | https://ghproxy.com/https://raw.githubusercontent.com/chavyleung/scripts/master/box/rewrite/boxjs.rewrite.quanx.conf, tag=BoxJs, update-interval=86400, opt-parser=true, enabled=true 94 | #比价格规则,根据需要选择是否开启 95 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/price.conf, tag=淘宝京东比价格, update-interval=86400, opt-parser=false, enabled=true 96 | #去广告类规则,建议保持开启,但抓取一些看广告得奖励cookie是要关闭 97 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/YouTube.conf, tag=YouTube去广告, update-interval=86400, opt-parser=false, enabled=true 98 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/Rewrite_lhie1.conf, tag=lhie1去广告, update-interval=86400, opt-parser=false, enabled=true 99 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/Advertising.conf, tag=神机去广告, update-interval=86400, opt-parser=false, enabled=true 100 | https://ghproxy.com/https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/General.conf, tag=神机重定向, update-interval=86400, opt-parser=false, enabled=true 101 | #破解软件规则,建议用的时候开启 102 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/unlockvip.conf, tag=少年歌行解锁vip, update-interval=86400, opt-parser=false, enabled=true 103 | #ddgksf2013破解软件规则,建议用的时候开启 104 | https://ghproxy.com/https://raw.githubusercontent.com/ddgksf2013/Cuttlefish/master/Rewrite/UnlockApp.conf, tag=ddgksf2013解锁vip, update-interval=86400, opt-parser=false, enabled=false 105 | #京东代收货获取ck,和其他规则都冲突,用时候勾选,抓到cookie后立即关闭 106 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jddsh.conf, tag=京东待收货(和其他规则都冲突抓完关), update-interval=86400, opt-parser=false, enabled=false 107 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/dsjziye888.conf, tag=电视家子夜ck(使用泛域名抓完一定关), update-interval=86400, opt-parser=false, enabled=false 108 | #获取cookie类重写,现抓ck现启用,且注意我单列的基本是互相冲突的 109 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/cookie.conf, tag=获取Cookie(现抓现打勾), update-interval=86400, opt-parser=false, enabled=true 110 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/CookieJD.conf, tag=老版获取CookieJD(现抓现打勾), update-interval=86400, opt-parser=false, enabled=false 111 | https://cdn.jsdelivr.net/gh/Oreomeow/QuanX@master/rewrite/csxdr.conf, tag=超市小达人获取ck(与获取cookie、动物研究规则冲突), update-interval=86400, opt-parser=false, enabled=false 112 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/dwyjy.conf, tag=动物研究院获取ck(与获取cookie、超市、网红规则冲突), update-interval=86400, opt-parser=false, enabled=false 113 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/wdwhd.conf, tag=我的网红店获取ck(与获取cookie、超市、动物规则冲突), update-interval=86400, opt-parser=false, enabled=false 114 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/debao.conf, tag=德宝小程序(与获取cookie规则冲突), update-interval=86400, opt-parser=false, enabled=false 115 | https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/yyzb.conf, tag=云云赚呗(与其他规则冲突), update-interval=86400, opt-parser=false, enabled=false 116 | #下方是可选配置,注意tag说明 117 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qx_rewite.txt, tag=sunert中青旧版cookie获取, update-interval=86400, opt-parser=false, enabled=false 118 | https://ghproxy.com/https://raw.githubusercontent.com/Sunert/Script/master/TaskConf/youth/qx_rewite.txt, tag=sunert中青cookie获取, update-interval=86400, opt-parser=false, enabled=false 119 | https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/qx_youthread.txt, tag=sunert中青旧版阅读body获取, update-interval=86400, opt-parser=true, enabled=false 120 | https://ghproxy.com/https://raw.githubusercontent.com/Sunert/Script/master/TaskConf/youth/qx_youthread.txt, tag=sunert中青阅读body获取, update-interval=86400, opt-parser=false, enabled=false 121 | https://gitee.com/curtinlv/qx/raw/master/rewrite/youth.conf, tag=Curtinlv中青分享阅读助力10次, update-interval=86400, opt-parser=false, enabled=false 122 | #https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/rewrite-zq.plugin, tag=ztxtop中青看点数据抓取(需资源解析器), update-interval=86400, opt-parser=false, enabled=false 123 | #https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/rewrite-zqread.plugin, tag=ztxtop中青看点阅读数据抓取(需资源解析器), update-interval=86400, opt-parser=false, enabled=false 124 | https://ghproxy.com/https://raw.githubusercontent.com/ztxtop/x/main/rewrite-zqkkz.plugin, tag=ztxtop中青看看赚&浏览赚Cookie获取(需资源解析器), update-interval=86400, opt-parser=true, enabled=false 125 | #https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqbody.conf, tag=简单天气body(第一个开,单独开), update-interval=86400, opt-parser=false, enabled=false 126 | #https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqapi.conf, tag=简单天气api(第二个开,单开), update-interval=86400, opt-parser=false, enabled=false 127 | #https://ghproxy.com/https://raw.githubusercontent.com/Oreomeow/QuanX/master/rewrite/jdtqevent.conf, tag=简单天气event(第三个开,单开), update-interval=86400, opt-parser=false, enabled=false 128 | 129 | [server_local] 130 | #公众号少年歌行PRO提示您:这个位置用于填写您非机场订阅的固定节点信息(请回车另起一行) 131 | #自定义本地节点的写法格式如下(抄作业自契阔大佬@orz-3,感谢) 132 | #http写法 133 | #http=111.111.111.111:4567, fast-open=false, udp-relay=false, tag=http 134 | #ssr写法 135 | #shadowsocks=music.desperadoj.com:30003, method=aes-128-gcm, password=desperadoj.com_free_proxy_emx2, fast-open=false, udp-relay=false, tag=ss 136 | #v2ray写法 137 | #vmess=v2ray.com:231, method=aes-128-gcm, password=64532b8d-4c4d-3ec9-829b-81720abe314c, obfs=ws, obfs-host=SCDN.71138.QCFTDS.China-nCDN-nRDS.com, obfs-uri=/iso, fast-open=false, udp-relay=false, tag=v2ray 138 | #trojan写法 139 | #trojan=example.com:443, password=pwd, over-tls=true, tls-verification=true, fast-open=false, udp-relay=false, tag=trojan 140 | 141 | #解锁网易云音乐节点 142 | http=106.52.127.72:19951, fast-open=false, udp-relay=false, tag= 解锁节点一 143 | shadowsocks=music.desperadoj.com:30003, method=aes-128-gcm, password=desperadoj.com_free_proxy_emx2, fast-open=false, udp-relay=false, tag=解锁节点二 144 | shadowsocks=127.0.0.1:8080, method=aes-128-gcm, password=This_proxy_is_for_free, fast-open=false, udp-relay=false, tag=解锁节点三 145 | 146 | 147 | [filter_local] 148 | host-suffix, ooxx.be, proxy 149 | host-suffix, local, direct 150 | host-suffix, music.126.net, DIRECT 151 | ip-cidr, 192.168.0.0/16, direct 152 | ip-cidr, 10.0.0.0/8, direct 153 | ip-cidr, 172.16.0.0/12, direct 154 | ip-cidr, 127.0.0.0/8, direct 155 | ip-cidr, 100.64.0.0/10, direct 156 | ip-cidr, 224.0.0.0/4, direct 157 | ip6-cidr, fe80::/10, direct 158 | -geoip, cn, direct 159 | # Netease Music Advertising 160 | host,admusicpic.music.126.net,reject 161 | host,iadmat.nosdn.127.net,reject 162 | host,iadmusicmat.music.126.net,reject 163 | host,iadmusicmatvideo.music.126.net,reject 164 | # Netease Music 165 | host,api.iplay.163.com,网易云音乐 166 | host,apm3.music.163.com,网易云音乐 167 | host,apm.music.163.com,网易云音乐 168 | host,interface3.music.163.com,网易云音乐 169 | host,interface3.music.163.com.163jiasu.com,网易云音乐 170 | host,interface.music.163.com,网易云音乐 171 | host,music.163.com,网易云音乐 172 | ip-cidr,39.105.63.80/32,网易云音乐 173 | ip-cidr,39.105.175.128/32,网易云音乐 174 | ip-cidr,45.254.48.1/32,网易云音乐 175 | ip-cidr,47.100.127.239/32,网易云音乐 176 | ip-cidr,59.111.160.195/32,网易云音乐 177 | ip-cidr,59.111.160.197/32,网易云音乐 178 | ip-cidr,59.111.181.35/32,网易云音乐 179 | ip-cidr,59.111.181.38/32,网易云音乐 180 | ip-cidr,59.111.181.60/32,网易云音乐 181 | ip-cidr,101.71.154.241/32,网易云音乐 182 | ip-cidr,103.126.92.132/32,网易云音乐 183 | ip-cidr,103.126.92.133/32,网易云音乐 184 | ip-cidr,112.13.119.17/32,网易云音乐 185 | ip-cidr,112.13.119.18/32,网易云音乐 186 | ip-cidr,112.13.122.1/32,网易云音乐 187 | ip-cidr,112.13.122.4/32,网易云音乐 188 | ip-cidr,115.236.118.33/32,网易云音乐 189 | ip-cidr,115.236.121.1/32,网易云音乐 190 | ip-cidr,118.24.63.156/32,网易云音乐 191 | ip-cidr,182.92.170.253/32,网易云音乐 192 | ip-cidr,193.112.159.225/32,网易云音乐 193 | ip-cidr,223.252.199.66/32,网易云音乐 194 | ip-cidr,223.252.199.67/32,网易云音乐 195 | # Final 196 | final,direct 197 | 198 | [rewrite_local] 199 | #公众号少年歌行PRO提示您:这个位置用于填写您自己找到的其他未被此懒人包收录的脚本(请回车另起一行) 200 | #公众号少年歌行PRO提示您:关注公众号或加入交流群可以获得群友分享的各种新脚本(请回车另起一行) 201 | 202 | [task_local] 203 | #公众号少年歌行PRO提示您:这个位置用于填写您自己找到的其他自动化脚本定时信息(请回车另起一行) 204 | #公众号少年歌行PRO提示您:关注公众号或加入交流群可以获得群友分享的各种自动化脚本定时信息(请回车另起一行) 205 | 206 | [http_backend] 207 | #公众号少年歌行PRO提示您:如您不了解,请不要修改 208 | #已将boxjs的加载方式修改为http_backend方式,默认浏览器登录boxjs地址为127.0.0.1:9999 209 | #如果还想用域名方式登录boxjs,先用上面的数字ip登录boxjs,然后点击BoxJs页面最下方的 > 应用按钮(底栏) > 内置应用按钮 > 偏好设置按钮, 210 | #在新页面`HTTP Backend (Quantumult X)` 中填入 http://127.0.0.1:9999 并保存,就可以继续用域名方式登录boxjs了 211 | https://ghproxy.com/https://raw.githubusercontent.com/chavyleung/scripts/master/chavy.box.js, tag=BoxJS, path=^/, enabled=true 212 | 213 | [mitm] 214 | #公众号少年歌行PRO提示您:需要在圈x设置中生成mitm证书并安装后,这里才会显示证书信息,有证书信息后圈x才能正常工作。 215 | 216 | skip_validating_cert = true 217 | -------------------------------------------------------------------------------- /task/readme.md: -------------------------------------------------------------------------------- 1 | ## Quantumult X 少年歌行pro Task任务对照表 2 | 3 | 4 | 5 | ❤ 【公众号少年歌行pro多网合一订阅地址,包含下方全部仓库的脚本】 6 | 7 | https://raw.githubusercontent.com/Oreomeow/QuanX/main/task/AllinOne.json 8 | 9 | 10 | ### 使用方法: 11 | 12 | 1.复制上方地址 13 | 14 | 2.打开圈x软件,在设置菜单中找到调试,选择构造请求并进入
15 | 16 | 3.在构造请求界面,点击右上方第一个图标,长的像是一个提示框加2个箭头
17 | 18 | 4.弹出界面点加号,将之前选中的仓库订阅地址复制粘贴进来
19 | 20 | 5.点击 好,即可看到出现了新建仓库及任务图标
21 | 22 | 6.注意:第一次点击上一步的好,有可能不出现我们粘贴进去的新仓库,而是出现一个叫sample的空仓库,这是圈x的示例功能,请重复操作一遍即可 23 | --------------------------------------------------------------------------------