├── BoxJsFiles └── Functional-Store-Hub.json ├── CaiXin ├── Egern.yaml ├── Loon.plugin ├── QuantumultX.snippet ├── Script │ └── CaiXin.js ├── Shadowrocket.model ├── Stash.stoverride └── Surge.sgmodel ├── CaiXinWeekly ├── Egern.yaml ├── Loon.plugin ├── QuantumultX.snippet ├── Script │ └── CaiXinWeekly.js ├── Shadowrocket.module ├── Stash.stoverride └── Surge.sgmodule ├── Files ├── Functional-Store-Hub.png ├── PixivShowICON.png └── icon.png ├── GeoLocationChecker └── QuantumultX │ ├── IP-API-TaiwanFlag.js │ ├── IP-API.js │ └── README.md ├── KuWoMusic ├── KuWoMusic.Egern.yaml ├── KuWoMusic.Loon.plugin ├── KuWoMusic.QuantumultX.snippet ├── KuWoMusic.Shadowrocket.module ├── KuWoMusic.Stash.stoverride ├── KuWoMusic.Surge.sgmodule ├── README.md └── 酷我音乐全解锁.hcc ├── LiuLiShuoYueDu ├── LiuLiShuoYueDu.Egern.yaml ├── LiuLiShuoYueDu.Loon.plugin ├── LiuLiShuoYueDu.QuantumultX.snippet ├── LiuLiShuoYueDu.Shadowrocket.module ├── LiuLiShuoYueDu.Stash.stoverride ├── LiuLiShuoYueDu.Surge.sgmodule ├── Script │ └── LiuLiShuoYueDu.js └── 流利说+解锁VIP.hcc ├── NeteaseMusic ├── AgentNode │ ├── Clash.yaml │ ├── Loon.list │ ├── QuantumultX.snippet │ ├── README.md │ ├── Shadowrocket.list │ ├── Stash.yaml │ └── Surge.list └── UnlockCheck │ ├── README.md │ └── Script │ └── Check.js ├── Nicegram ├── Egern.yaml ├── Loon.plugin ├── QuantumultX.snippet ├── Script │ └── Nicegram.js ├── Shadowrocket.module ├── Stash.stoverride └── Surge.sgmodule ├── NodeLinkCheck ├── Loon.plugin ├── README.md ├── Script │ └── NodeLinkCheck.js ├── Sub-Store │ └── Operator.js └── Surge.sgmodule ├── PixivShow ├── Egern.yaml ├── Loon.plugin ├── QuantumultX.snippet ├── Script │ └── PixivShow.js ├── Shadowrocket.model ├── Stash.stoverride └── Surge.sgmodel ├── PlaneFinder ├── PlaneFinder.Egern.yaml ├── PlaneFinder.Loon.plugin ├── PlaneFinder.QuantumultX.snippet ├── PlaneFinder.Shadowrocket.module ├── PlaneFinder.Stash.stoverride ├── PlaneFinder.Surge.sgmodule └── Script │ └── PlaneFinder.js ├── README.md ├── WPSOffice ├── Egern.yaml ├── Loon.plugin ├── QuantumultX.snippet ├── Script │ └── WPS.js ├── Shadowrocket.module ├── Stash.stoverride ├── Surge.sgmodule └── WPS会员@R·E.hcc ├── WarpPanel └── WarpPanel+.sgmodule ├── Xmind ├── Script │ └── Xmind.js ├── Xmind.Egern.yaml ├── Xmind.Loon.plugin ├── Xmind.QuantumultX.snippet ├── Xmind.Shadowrocket.module ├── Xmind.Stash.stoverride └── Xmind.Surge.sgmodule └── ZhiHuExtremeOptimization └── 1 /BoxJsFiles/Functional-Store-Hub.json: -------------------------------------------------------------------------------- 1 | {"id":"Functional_Store_Hub.Sub","name":"Functional Store Hub 功能配置","author":"@R·E","description":"Functional Store Hub 脚本和应用的详细功能的配置","icon":"https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png","repo":"https://github.com/I-am-R-E/Functional-Store-Hub/","apps":[{"id":"Functional_Store_Hub.PixivShow","name":"Pixiv Show 配置","descs_html":["

Pixiv Show 脚本详细配置

","

支持设置总开关,支持类型、分流、次数设置

","

Telegram 脚本频道:Functional Store Hub

","

Provided By R·E

"],"keys":["@Functional_Store_Hub.PixivShow.Settings"],"settings":[{"id":"@Functional_Store_Hub.PixivShow.Settings.Switch","name":"推送开关","val":true,"type":"boolean","desc":"关闭后,运行脚本不会推送通知"},{"id":"@Functional_Store_Hub.PixivShow.Settings.Type","name":"设置推送类型","val":"0","type":"radios","items":[{"key":"0","label":"禁止18+"},{"key":"1","label":"只有18+"},{"key":"2","label":"不区分类型"}],"desc":"设置推送的类型,指在库中的分类,不等同于作品本身的 R18 标识"},{"id":"@Functional_Store_Hub.PixivShow.Settings.Tags","name":"设置推送分类,默认不分类","val":"","type":"text","placeholder":"黑丝|白丝|萝莉","desc":"推送的分类,多个分类用'|'代替,例如:黑丝|白丝|萝莉"},{"id":"@Functional_Store_Hub.PixivShow.Settings.Times","name":"设置每次推送数量,默认为1次,最大为20次","val":"","type":"number","placeholder":"3","desc":"每次推送的通知(图片)的次数,正整数"},{"id":"@Functional_Store_Hub.PixivShow.Settings.OpenType","name":"设置点击通知后跳转的地址","val":"0","type":"radios","items":[{"key":"0","label":"跳转作品页面"},{"key":"1","label":"跳转图片地址"}],"desc":"设置打开地址,可设置作品页面和图片地址两种"}],"author":"@R·E","repo":"https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow/","icons":["https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/PixivShowICON.png","https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/PixivShowICON.png"]}]} 2 | -------------------------------------------------------------------------------- /CaiXin/Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=财新会员 2 | #!desc=解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | scriptings: 7 | - http_request: 8 | name: 财新会员 9 | script_url: >- 10 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js 11 | match: >- 12 | ^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth) 13 | body_required: true 14 | mitm: 15 | hostnames: 16 | - gateway.caixin.com 17 | -------------------------------------------------------------------------------- /CaiXin/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=财新会员 2 | #!desc=解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | http-request ^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth) script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js, timeout=10, tag=财新会员 8 | 9 | [MITM] 10 | hostname = gateway.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXin/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=财新会员 2 | #!desc=解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [rewrite_local] 7 | ^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth) url script-request-header https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js 8 | 9 | [mitm] 10 | hostname = gateway.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXin/Script/CaiXin.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁财新阅读、音频限制 3 | 脚本作者:R·E 4 | 支持版本:商店最新 7.9.3 5 | 下载地址:https://apps.apple.com/us/app/%E8%B4%A2%E6%96%B0-%E6%B5%81%E8%A8%80%E6%97%A0%E5%A4%84%E4%B8%8D%E5%9C%A8-%E7%9C%9F%E7%9B%B8%E5%B0%B1%E8%AF%BB%E8%B4%A2%E6%96%B0/id356023612 6 | 更新时间:2022.07.19 7 | 问题反馈:https://t.me/Functional_Store_Hub 8 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖!⚠️⚠️⚠️ 9 | */ 10 | var _0x177f40=$request['headers'];_0x177f40['User-Agent']='Mozilla/5.0\x20(iPhone;\x20CPU\x20iPhone\x20OS\x2015_4_1\x20like\x20Mac\x20OS\x20X)\x20AppleWebKit/605.1.15\x20(KHTML,\x20like\x20Gecko)\x20Mobile/15E148\x20CaixinV5/7.9.3\x20deviceType/1';const _0x4726b2=$request['url']['replace'](/uid=(\d+|)/g,'uid=8401805')['replace'](/code=(\w+|)/g,'code=4DC3A37D00671789D41F17E77E46A89F')['replace'](/device=(\w+|)/g,'device=699440d159f8b18216b678d3261c91afa3a8a444')['replace'](/deviceType=(\d+|)/g,'deviceType=1');if($request['url']['indexOf']('validateAudioAuth')!=-0x1){_0x177f40['appinfo']='75SU0e5TW70SSqRtJ/F6dN60qhTR/VmZTj9JQB4m3Uwq7sM2Mqb98OoOmr%2BJGjxMer45axESuqqrtjbo%2Bm5AYRzduI5eFvoYMcmS35ifWwfGXmPy6G3ZfPagiTWEn%2BM%2BPAUiArgEuqyBgwc3OMuvj5jYaliJKDZ6LuUieXHIFRTu/7a7DCFvIxZFQkeQjA4dDHXMWIqoT1Vx7k7vkaRp7rVdzSUSO5SaMvFbYOY1VWBz8n8d4JbNklAPNWS7sjK3umhjWq70j8MbjSCItzxFw88h49NsDs8fH47fALaZvQR63FgsF/Ab0HP46n/5Q0sDF2C9WTk/r6tIh/Rg%2BMTQZVSYimZ6XctG8QciSjRKgNs/xQUwYap6FnT2XT6QNtNzdutTVUUH43crJm51OyLzYC66vdKsBdZQAT5SRD9TLgA41tQIv/ixuxeSREnoZVBoVFTe2PIQ2IdmbE12Hjz8F38ZIgJbXNKzysRQwi7RRhrc9fGcRRcUQYFW0nCxMl/SkT42OtjQklw%3D';}$done({'url':_0x4726b2,'headers':_0x177f40}); 11 | -------------------------------------------------------------------------------- /CaiXin/Shadowrocket.model: -------------------------------------------------------------------------------- 1 | #!name=财新会员 2 | #!desc=解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | 财新会员 = type=http-request,pattern=^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% gateway.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXin/Stash.stoverride: -------------------------------------------------------------------------------- 1 | name: 财新会员 2 | desc: 解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | http: 4 | mitm: 5 | - 'gateway.caixin.com' 6 | script: 7 | - match: ^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth) 8 | name: CaiXin 9 | type: request 10 | require-body: false 11 | timeout: 10 12 | script-providers: 13 | CaiXin: 14 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js 15 | interval: 86400 16 | -------------------------------------------------------------------------------- /CaiXin/Surge.sgmodel: -------------------------------------------------------------------------------- 1 | #!name=财新会员 2 | #!desc=解锁财新文章阅读与音频限制 @Functional_Store_Hub 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | 财新会员 = type=http-request,pattern=^https?:\/\/gateway\.caixin\.com\/api\/app\-api\/auth\/(validate|validateAudioAuth),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXin/Script/CaiXin.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% gateway.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXinWeekly/Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=财新周刊会员 2 | #!desc=财新周刊会员,登陆账号体验更加(2022.07.12) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | scriptings: 7 | - http_response: 8 | name: 财新周刊 9 | script_url: >- 10 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js 11 | match: >- 12 | ^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?) 13 | body_required: true 14 | mitm: 15 | hostnames: 16 | - ipadcms.caixin.com 17 | -------------------------------------------------------------------------------- /CaiXinWeekly/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=财新周刊会员 2 | #!desc=财新周刊会员,登陆账号体验更加(2022.07.12) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | http-response ^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?) script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js, requires-body=true, timeout=10, tag=财新周刊 8 | 9 | [MITM] 10 | hostname = ipadcms.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXinWeekly/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=财新周刊会员 2 | #!desc=财新周刊会员,登陆账号体验更加(2022.07.12) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | ^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?) url script-response-body https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js 7 | 8 | hostname = ipadcms.caixin.com 9 | -------------------------------------------------------------------------------- /CaiXinWeekly/Script/CaiXinWeekly.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁财新周刊会员 3 | 脚本作者:R·E 4 | 支持版本:商店最新 4.0.6 5 | 下载地址:https://apps.apple.com/cn/app/%E8%B4%A2%E6%96%B0%E5%91%A8%E5%88%8A/id391959946 6 | 更新时间:2022.07.12 7 | 问题反馈:https://t.me/Functional_Store_Hub 8 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖!⚠️⚠️⚠️ 9 | */ 10 | const _0x6bf4fd='//ipadcms.caixin.com/api/article/';const _0x1e4d47='//ipadcms.caixin.com/tmp/articles/';const _0x41f70a='//ipadcms.caixin.com/power/myfree/';const _0x4b9f79='//ipadcms.caixin.com/power/myfreev3/';var _0x2b77dd=$request['url'];var _0x164874=$response['body'];if(_0x2b77dd['indexOf'](_0x6bf4fd)!=-0x1||_0x2b77dd['indexOf'](_0x1e4d47)!=-0x1){_0x164874=_0x164874['replace'](/\"isfree\":0/g,'\x22isfree\x22:1');}if(_0x2b77dd['indexOf'](_0x41f70a)!=-0x1){_0x164874='{\x22info\x22:[{\x22type\x22:2,\x22subscriptDescription\x22:\x22通过财新通兑换码白嫖\x22,\x22uid\x22:null,\x22endtime\x22:1893427200,\x22magazineid\x22:1000,\x22starttime\x22:1656604800}],\x22list\x22:[{\x22UID\x22:null,\x22END_DT\x22:1893427200,\x22subscriptDescription\x22:\x22通过财新通兑换码白嫖\x22,\x22MAGAZINEID\x22:1000,\x22START_DT\x22:1656604800,\x22TYPE\x22:2,\x22ID\x22:null}]}';}if(_0x2b77dd['indexOf'](_0x4b9f79)!=-0x1){_0x164874='{\x22msg\x22:\x22success\x22,\x22data\x22:{\x22flag\x22:true,\x22list\x22:[{\x22goodsTypeId\x22:20,\x22goodsCode\x22:\x22TAG\x22,\x22permanent\x22:0,\x22list\x22:[{\x22endTime\x22:\x222030-01-01\x2000:00:00\x22,\x22startTime\x22:\x222022-07-01\x2000:00:00\x22,\x22status\x22:1}]},{\x22goodsTypeId\x22:11,\x22goodsCode\x22:\x22QZSF\x22,\x22permanent\x22:0,\x22list\x22:[{\x22endTime\x22:\x222030-01-01\x2000:00:00\x22,\x22startTime\x22:\x222022-07-01\x2000:00:00\x22,\x22status\x22:1}]}]},\x22code\x22:0}';}console['log']('\x0aR·E\x20CaiXinWeekly\x20Script\x20Log:\x0a😎财新周刊已解锁到2030年');$done({'body':_0x164874}); 11 | -------------------------------------------------------------------------------- /CaiXinWeekly/Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=财新周刊会员 2 | #!desc=财新周刊会员,登陆账号体验更加(2022.07.12) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | 财新周刊 = type=http-response,pattern=^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% ipadcms.caixin.com 11 | -------------------------------------------------------------------------------- /CaiXinWeekly/Stash.stoverride: -------------------------------------------------------------------------------- 1 | name: 财新周刊会员 2 | desc: 财新周刊会员,登陆账号体验更加(2022.07.12) @R·E https://t.me/Functional_Store_Hub 3 | 4 | http: 5 | mitm: 6 | - 'ipadcms.caixin.com' 7 | script: 8 | - match: ^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?) 9 | name: CaiXinWeekly 10 | type: response 11 | require-body: true 12 | timeout: 10 13 | 14 | script-providers: 15 | CaiXinWeekly: 16 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js 17 | interval: 86400 18 | -------------------------------------------------------------------------------- /CaiXinWeekly/Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=财新周刊会员 2 | #!desc=财新周刊会员,登陆账号体验更加(2022.07.12) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | 财新周刊 = type=http-response,pattern=^https?:\/\/ipadcms\.caixin\.com\/(api|tmp|power)\/(articles?|myfree(v\d+)?),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/CaiXinWeekly/Script/CaiXinWeekly.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% ipadcms.caixin.com 11 | -------------------------------------------------------------------------------- /Files/Functional-Store-Hub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/38f4fa9b9a963457d7ea5a93fdcd1cd44945a49e/Files/Functional-Store-Hub.png -------------------------------------------------------------------------------- /Files/PixivShowICON.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/38f4fa9b9a963457d7ea5a93fdcd1cd44945a49e/Files/PixivShowICON.png -------------------------------------------------------------------------------- /Files/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/38f4fa9b9a963457d7ea5a93fdcd1cd44945a49e/Files/icon.png -------------------------------------------------------------------------------- /GeoLocationChecker/QuantumultX/IP-API-TaiwanFlag.js: -------------------------------------------------------------------------------- 1 | //中文 2 | //geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API.js 3 | 4 | //英文 5 | //geo_location_checker=http://ip-api.com/json/, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API.js 6 | 7 | //Only QX 8 | //Version 1.3 9 | //Telegram频道 https://t.me/Functional_Store_Hub 10 | //Taiwanese flag 11 | 12 | if($response['statusCode']!=0xc8){$done(null);}function _0x400be7(_0x26b020){var _0x4f97cc=new RegExp('[\u4E00-\u9FA5]+');if(_0x4f97cc['test'](_0x26b020)){return!![];}else{return![];}}function _0x13fb87(_0x490586){const _0x39eee8=_0x490586['toUpperCase']()['split']('')['map'](_0x5df444=>0x1f1a5+_0x5df444['charCodeAt']());return String['fromCodePoint'](..._0x39eee8);}function _0x3997c0(_0x3cf2c4,_0x27ad54){var _0x58f19b=new RegExp('[\u4E00-\u9FA5]+');var _0x4aa724=_0x3cf2c4;var _0x5258f6=_0x27ad54;var _0x12de2e='';var _0x101c04=/\ or\ /g;if(_0x4aa724['match'](_0x101c04)){_0x4aa724='';}if(!_0x58f19b['test'](_0x4aa724)){_0x4aa724='';}if(!_0x58f19b['test'](_0x5258f6)){_0x5258f6='';}if(_0x4aa724==_0x5258f6){_0x4aa724='';}if(_0x4aa724&&_0x5258f6){_0x12de2e=_0x4aa724+'\x20'+_0x5258f6;}else if(_0x4aa724){_0x12de2e=_0x4aa724;}else if(_0x5258f6){_0x12de2e=_0x5258f6;}return _0x12de2e;}function _0x4c1a3c(_0x33865c,_0x3e9ac3){var _0x29e136=_0x33865c;var _0x140c18=_0x3e9ac3;var _0x2f847f='';var _0x20bf49=/\ or\ /g;if(_0x29e136['match'](_0x20bf49)){_0x29e136='';}if(_0x29e136==_0x140c18){_0x29e136='';}if(_0x29e136&&_0x140c18){_0x2f847f=_0x29e136+'\x20\x20'+_0x140c18;}else if(_0x29e136){_0x2f847f=_0x29e136;}else if(_0x140c18){_0x2f847f=_0x140c18;}return _0x2f847f;}function _0x552e62(_0x2efb5b){var _0x1537af=/\A\S\d+/g;var _0xb2521d=_0x2efb5b['match'](_0x1537af);return _0xb2521d[0x0];}function _0x23d069(_0x621d5b,_0x50adf0){if(_0x621d5b==_0x50adf0||_0x621d5b==''){return _0x50adf0;}else{return _0x621d5b+'\x20'+_0x50adf0;}}function _0x44cb28(_0x56b016,_0x5094a4,_0xbbbf2b){if(_0x56b016==_0x5094a4||_0x5094a4==_0xbbbf2b||_0x56b016==_0xbbbf2b){if(_0x56b016==_0x5094a4&&_0x5094a4==_0xbbbf2b&&_0x56b016==_0xbbbf2b){return _0x56b016;}if(_0x56b016==_0x5094a4){if((_0x56b016+_0xbbbf2b)['length']>0x14){return _0x56b016;}else{return _0x56b016+'\x20'+_0xbbbf2b;}}if(_0x56b016==_0xbbbf2b){if((_0x56b016+_0x5094a4)['length']>0x14){return _0x56b016;}else{return _0x56b016+'\x20'+_0x5094a4;}}if(_0x5094a4==_0xbbbf2b){if((_0x56b016+_0x5094a4)['length']>0x14){return _0x56b016;}else{return _0x56b016+'\x20'+_0x5094a4;}}}else{if((_0x56b016+_0x5094a4+_0xbbbf2b)['length']>0x14){if((_0x56b016+_0x5094a4)['length']<=0x14){return _0x56b016+'\x20'+_0x5094a4;}else if((_0x56b016+_0xbbbf2b)['length']<=0x14){return _0x56b016+'\x20'+_0xbbbf2b;}else{return _0x56b016;}}else{return _0x56b016+'\x20'+_0x5094a4+'\x20'+_0xbbbf2b;}}}function _0x1aab8f(_0x3cc492){if(_0x3cc492=='中华民国'||_0x3cc492=='中華民國'){return'台湾';}else if(_0x3cc492=='中国'){return'';}else{return _0x3cc492;}}function _0x2514e4(_0x50970e){var _0x103ef1='',_0x53212d=_0x571da8(),_0x259d5b=_0x1769b0();for(var _0x4bb2fb=0x0;_0x4bb2fb<_0x50970e['length'];_0x4bb2fb++){if(_0x50970e['charCodeAt'](_0x4bb2fb)>0x2710&&_0x259d5b['indexOf'](_0x50970e['charAt'](_0x4bb2fb))!=-0x1)_0x103ef1+=_0x53212d['charAt'](_0x259d5b['indexOf'](_0x50970e['charAt'](_0x4bb2fb)));else _0x103ef1+=_0x50970e['charAt'](_0x4bb2fb);}return _0x103ef1;}function _0x571da8(){return'皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄';}function _0x1769b0(){return'皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩';}function _0x3859d4(_0x5054fd,_0x324233,_0xd2f63e){var _0x492fa3=/(.*)\/(.*)/;var _0x2cba57=_0x5054fd;var _0x5165a7=_0x2cba57['match'](_0x492fa3);if((_0x5054fd+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e)['length']>0x24){if((_0x5165a7[0x2]+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e)['length']>0x24){if((_0x5165a7[0x1]+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e)['length']>0x24){return _0x324233+'\x20·\x20'+_0xd2f63e;}else{return _0x5165a7[0x1]+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e;}}else{return _0x5165a7[0x2]+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e;}}else{return _0x5054fd+'\x20·\x20'+_0x324233+'\x20·\x20'+_0xd2f63e;}}function _0x3d5745(_0x37fd8a){var _0xb6ded4=/[\s\S]{0,9}(\ |$)/;var _0x518a8b=_0x37fd8a;var _0x4d07d0=_0x518a8b['match'](_0xb6ded4);if(_0x37fd8a['length']>0xa){return _0x4d07d0[0x0];}else{return _0x37fd8a;}}function _0x13c105(_0x1f3d7b){var _0x299419=/[\s\S]{0,20}(\ \ |$)/g;var _0x3c8cb8=_0x1f3d7b;var _0x29e17c=_0x3c8cb8['match'](_0x299419);if(!_0x29e17c[0x0]){_0x29e17c[0x0]='';}if(!_0x29e17c[0x1]){_0x29e17c[0x1]='';}if(!_0x29e17c[0x2]){_0x29e17c[0x2]='';}if(_0x1f3d7b['length']>0x18){if((_0x29e17c[0x0]['replace']('\x20\x20','')+_0x29e17c[0x1]['replace']('\x20\x20',''))['length']<=0x18){return _0x29e17c[0x0]['replace']('\x20\x20','')+'\x20'+_0x29e17c[0x1]['replace']('\x20\x20','');}else{if((_0x29e17c[0x0]['replace']('\x20\x20','')+_0x29e17c[0x2])['length']<=0x18){return _0x29e17c[0x0]['replace']('\x20\x20','')+'\x20'+_0x29e17c[0x2];}else{return _0x29e17c[0x0]['replace']('\x20\x20','');}}}else{return _0x1f3d7b;}}function _0x54917b(_0x13714a,_0x5c3eef){if(_0x13714a==_0x5c3eef){return _0x13714a;}else{return _0x13714a+'\x0a\x0a'+_0x5c3eef;}}var _0x3e534a=$response['body'];var _0x417ea0=JSON['parse'](_0x3e534a);if(_0x400be7(_0x417ea0['country'])){var _0x30e756=_0x13fb87(_0x417ea0['countryCode'])+'\x20'+_0x3d5745(_0x23d069(_0x1aab8f(_0x2514e4(_0x417ea0['country'])),_0x3997c0(_0x2514e4(_0x417ea0['regionName']),_0x2514e4(_0x417ea0['city']))));var _0x35f6b9=_0x3859d4(_0x417ea0['timezone']['replace'](/(\_|\-)/g,'\x20'),_0x552e62(_0x417ea0['as']),_0x417ea0['query']);var _0x555058=_0x417ea0['query'];var _0x4479e1='-----------------------------------'+'\x0a\x0a'+_0x23d069(_0x1aab8f(_0x2514e4(_0x417ea0['country'])),_0x3997c0(_0x2514e4(_0x417ea0['regionName']),_0x2514e4(_0x417ea0['city'])))+'\x0a\x0a'+_0x417ea0['timezone']+'\x0a\x0a'+_0x417ea0['query']+'\x0a\x0a'+'经度:'+_0x417ea0['lon']+'\x20\x20'+'纬度:'+_0x417ea0['lat']+'\x0a\x0a'+_0x54917b(_0x417ea0['isp'],_0x417ea0['org']);}else{var _0x30e756=_0x13fb87(_0x417ea0['countryCode'])+'\x20'+_0x44cb28(_0x417ea0['country'],_0x417ea0['regionName'],_0x417ea0['city']);var _0x35f6b9=_0x3859d4(_0x417ea0['timezone']['replace'](/(\_|\-)/g,'\x20'),_0x552e62(_0x417ea0['as']),_0x417ea0['query']);var _0x555058=_0x417ea0['query'];var _0x4479e1='-----------------------------------'+'\x0a\x0a'+_0x44cb28(_0x417ea0['country'],_0x417ea0['regionName'],_0x417ea0['city'])+'\x0a\x0a'+_0x417ea0['timezone']+'\x0a\x0a'+_0x417ea0['query']+'\x0a\x0a'+'Longitude:'+_0x417ea0['lon']+'\x20\x20'+'Latitude:'+_0x417ea0['lat']+'\x0a\x0a'+_0x54917b(_0x417ea0['isp'],_0x417ea0['org']);}var _0x2f4e23={};_0x2f4e23['title']=_0x30e756;_0x2f4e23['subtitle']=_0x35f6b9;_0x2f4e23['ip']=_0x555058;_0x2f4e23['description']=_0x4479e1;$done(_0x2f4e23); 13 | -------------------------------------------------------------------------------- /GeoLocationChecker/QuantumultX/IP-API.js: -------------------------------------------------------------------------------- 1 | //中文 2 | //geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API.js 3 | 4 | //英文 5 | //geo_location_checker=http://ip-api.com/json/, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API.js 6 | 7 | //Only QX 8 | //Version 1.3 9 | //Telegram频道 https://t.me/Functional_Store_Hub 10 | //Taiwanese flag becomes Chinese flag 11 | 12 | if($response['statusCode']!=0xc8){$done(null);}function _0x2a712a(_0x127fe4){var _0x3a79ab=new RegExp('[\u4E00-\u9FA5]+');if(_0x3a79ab['test'](_0x127fe4)){return!![];}else{return![];}}function _0x4a2b95(_0x3f4a6b){const _0x8db7b6=_0x3f4a6b['toUpperCase']()['split']('')['map'](_0x4dbf8e=>0x1f1a5+_0x4dbf8e['charCodeAt']());if(String['fromCodePoint'](..._0x8db7b6)=='🇹🇼'){return'🇨🇳';}else{return String['fromCodePoint'](..._0x8db7b6);}}function _0x1ac1e7(_0x1c7e19,_0xf80f0a){var _0x485911=new RegExp('[\u4E00-\u9FA5]+');var _0x1707e0=_0x1c7e19;var _0x39d11b=_0xf80f0a;var _0x40f7d5='';var _0x42b23e=/\ or\ /g;if(_0x1707e0['match'](_0x42b23e)){_0x1707e0='';}if(!_0x485911['test'](_0x1707e0)){_0x1707e0='';}if(!_0x485911['test'](_0x39d11b)){_0x39d11b='';}if(_0x1707e0==_0x39d11b){_0x1707e0='';}if(_0x1707e0&&_0x39d11b){_0x40f7d5=_0x1707e0+'\x20'+_0x39d11b;}else if(_0x1707e0){_0x40f7d5=_0x1707e0;}else if(_0x39d11b){_0x40f7d5=_0x39d11b;}return _0x40f7d5;}function _0x28bc9d(_0x1eb19f,_0x4bfbb0){var _0x3c3c63=_0x1eb19f;var _0x5da84d=_0x4bfbb0;var _0x3221d='';var _0x4c75c7=/\ or\ /g;if(_0x3c3c63['match'](_0x4c75c7)){_0x3c3c63='';}if(_0x3c3c63==_0x5da84d){_0x3c3c63='';}if(_0x3c3c63&&_0x5da84d){_0x3221d=_0x3c3c63+'\x20\x20'+_0x5da84d;}else if(_0x3c3c63){_0x3221d=_0x3c3c63;}else if(_0x5da84d){_0x3221d=_0x5da84d;}return _0x3221d;}function _0x13c0d8(_0x110960){var _0x3c89c7=/\A\S\d+/g;var _0x51466d=_0x110960['match'](_0x3c89c7);return _0x51466d[0x0];}function _0x4d73c5(_0x35c77a,_0x2095a0){if(_0x35c77a==_0x2095a0||_0x35c77a==''){return _0x2095a0;}else{return _0x35c77a+'\x20'+_0x2095a0;}}function _0x1461fb(_0x3183d8,_0x322a7d,_0x5a2693){if(_0x3183d8==_0x322a7d||_0x322a7d==_0x5a2693||_0x3183d8==_0x5a2693){if(_0x3183d8==_0x322a7d&&_0x322a7d==_0x5a2693&&_0x3183d8==_0x5a2693){return _0x3183d8;}if(_0x3183d8==_0x322a7d){if((_0x3183d8+_0x5a2693)['length']>0x14){return _0x3183d8;}else{return _0x3183d8+'\x20'+_0x5a2693;}}if(_0x3183d8==_0x5a2693){if((_0x3183d8+_0x322a7d)['length']>0x14){return _0x3183d8;}else{return _0x3183d8+'\x20'+_0x322a7d;}}if(_0x322a7d==_0x5a2693){if((_0x3183d8+_0x322a7d)['length']>0x14){return _0x3183d8;}else{return _0x3183d8+'\x20'+_0x322a7d;}}}else{if((_0x3183d8+_0x322a7d+_0x5a2693)['length']>0x14){if((_0x3183d8+_0x322a7d)['length']<=0x14){return _0x3183d8+'\x20'+_0x322a7d;}else if((_0x3183d8+_0x5a2693)['length']<=0x14){return _0x3183d8+'\x20'+_0x5a2693;}else{return _0x3183d8;}}else{return _0x3183d8+'\x20'+_0x322a7d+'\x20'+_0x5a2693;}}}function _0x3bfb89(_0x5de571){if(_0x5de571=='中华民国'||_0x5de571=='中華民國'){return'台湾';}else if(_0x5de571=='中国'){return'';}else{return _0x5de571;}}function _0x205810(_0x34c14c){var _0x185477='',_0x2b6cb5=_0xb07b7f(),_0x20bb9b=_0x5a9eca();for(var _0x5bba2f=0x0;_0x5bba2f<_0x34c14c['length'];_0x5bba2f++){if(_0x34c14c['charCodeAt'](_0x5bba2f)>0x2710&&_0x20bb9b['indexOf'](_0x34c14c['charAt'](_0x5bba2f))!=-0x1)_0x185477+=_0x2b6cb5['charAt'](_0x20bb9b['indexOf'](_0x34c14c['charAt'](_0x5bba2f)));else _0x185477+=_0x34c14c['charAt'](_0x5bba2f);}return _0x185477;}function _0xb07b7f(){return'皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄';}function _0x5a9eca(){return'皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩';}function _0x218606(_0x1e9934,_0x50ffdc,_0x2ced0e){var _0x295e24=/(.*)\/(.*)/;var _0x520ba6=_0x1e9934;var _0x343cb6=_0x520ba6['match'](_0x295e24);if((_0x1e9934+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e)['length']>0x24){if((_0x343cb6[0x2]+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e)['length']>0x24){if((_0x343cb6[0x1]+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e)['length']>0x24){return _0x50ffdc+'\x20·\x20'+_0x2ced0e;}else{return _0x343cb6[0x1]+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e;}}else{return _0x343cb6[0x2]+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e;}}else{return _0x1e9934+'\x20·\x20'+_0x50ffdc+'\x20·\x20'+_0x2ced0e;}}function _0x43c36a(_0x1022ed){var _0x3f8a67=/[\s\S]{0,9}(\ |$)/;var _0x3e0051=_0x1022ed;var _0x2d24c4=_0x3e0051['match'](_0x3f8a67);if(_0x1022ed['length']>0xa){return _0x2d24c4[0x0];}else{return _0x1022ed;}}function _0x21ed21(_0x16eab5){var _0xc40d43=/[\s\S]{0,20}(\ \ |$)/g;var _0x10b46c=_0x16eab5;var _0x447a68=_0x10b46c['match'](_0xc40d43);if(!_0x447a68[0x0]){_0x447a68[0x0]='';}if(!_0x447a68[0x1]){_0x447a68[0x1]='';}if(!_0x447a68[0x2]){_0x447a68[0x2]='';}if(_0x16eab5['length']>0x18){if((_0x447a68[0x0]['replace']('\x20\x20','')+_0x447a68[0x1]['replace']('\x20\x20',''))['length']<=0x18){return _0x447a68[0x0]['replace']('\x20\x20','')+'\x20'+_0x447a68[0x1]['replace']('\x20\x20','');}else{if((_0x447a68[0x0]['replace']('\x20\x20','')+_0x447a68[0x2])['length']<=0x18){return _0x447a68[0x0]['replace']('\x20\x20','')+'\x20'+_0x447a68[0x2];}else{return _0x447a68[0x0]['replace']('\x20\x20','');}}}else{return _0x16eab5;}}function _0x2f6202(_0x1e8e19,_0x142cd1){if(_0x1e8e19==_0x142cd1){return _0x1e8e19;}else{return _0x1e8e19+'\x0a\x0a'+_0x142cd1;}}var _0x2f1f62=$response['body'];var _0x201ccf=JSON['parse'](_0x2f1f62);if(_0x2a712a(_0x201ccf['country'])){var _0x3b3570=_0x4a2b95(_0x201ccf['countryCode'])+'\x20'+_0x43c36a(_0x4d73c5(_0x3bfb89(_0x205810(_0x201ccf['country'])),_0x1ac1e7(_0x205810(_0x201ccf['regionName']),_0x205810(_0x201ccf['city']))));var _0x13bc75=_0x218606(_0x201ccf['timezone']['replace'](/(\_|\-)/g,'\x20'),_0x13c0d8(_0x201ccf['as']),_0x201ccf['query']);var _0xb0835f=_0x201ccf['query'];var _0x2cb5ed='-----------------------------------'+'\x0a\x0a'+_0x4d73c5(_0x3bfb89(_0x205810(_0x201ccf['country'])),_0x1ac1e7(_0x205810(_0x201ccf['regionName']),_0x205810(_0x201ccf['city'])))+'\x0a\x0a'+_0x201ccf['timezone']+'\x0a\x0a'+_0x201ccf['query']+'\x0a\x0a'+'经度:'+_0x201ccf['lon']+'\x20\x20'+'纬度:'+_0x201ccf['lat']+'\x0a\x0a'+_0x2f6202(_0x201ccf['isp'],_0x201ccf['org']);}else{var _0x3b3570=_0x4a2b95(_0x201ccf['countryCode'])+'\x20'+_0x1461fb(_0x201ccf['country'],_0x201ccf['regionName'],_0x201ccf['city']);var _0x13bc75=_0x218606(_0x201ccf['timezone']['replace'](/(\_|\-)/g,'\x20'),_0x13c0d8(_0x201ccf['as']),_0x201ccf['query']);var _0xb0835f=_0x201ccf['query'];var _0x2cb5ed='-----------------------------------'+'\x0a\x0a'+_0x1461fb(_0x201ccf['country'],_0x201ccf['regionName'],_0x201ccf['city'])+'\x0a\x0a'+_0x201ccf['timezone']+'\x0a\x0a'+_0x201ccf['query']+'\x0a\x0a'+'Longitude:'+_0x201ccf['lon']+'\x20\x20'+'Latitude:'+_0x201ccf['lat']+'\x0a\x0a'+_0x2f6202(_0x201ccf['isp'],_0x201ccf['org']);}var _0x3725d3={};_0x3725d3['title']=_0x3b3570;_0x3725d3['subtitle']=_0x13bc75;_0x3725d3['ip']=_0xb0835f;_0x3725d3['description']=_0x2cb5ed;$done(_0x3725d3); 13 | -------------------------------------------------------------------------------- /GeoLocationChecker/QuantumultX/README.md: -------------------------------------------------------------------------------- 1 |
2 |

Geo Location Checker 3 |
本地Geo检查器

4 |

5 |

支持QuantumultX、优化中文和英文

6 |

Version 1.3

7 |
8 |

9 | 使用方式: 10 | 11 | 编辑配置,[general]下替换掉 geo_location_checker= 所在行代码 以下版本二选一 12 | 13 | 台湾地区旗帜替换为🇨🇳版 14 | 15 | ``` 16 | geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API.js 17 | ``` 18 | 19 | 台湾地区旗帜显示为🇹🇼版 20 | ``` 21 | geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/GeoLocationChecker/QuantumultX/IP-API-TaiwanFlag.js 22 | ``` 23 | 24 | 🎉 你可以在这里找到使用方法和注意事项: [Functional Store Hub 频道](https://t.me/Functional_Store_Hub) 25 | 26 | 😀 如果你想反馈问题,你可以直接在Github上提交issues或者加入[Functional Store Hub Discussion 群组](https://t.me/Functional_Store_Hub_Discussion)找到我 27 | -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.Egern.yaml 9 | 10 | scriptings: 11 | - http_response: 12 | name: 酷我音乐 13 | script_url: >- 14 | https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js 15 | match: >- 16 | ^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).* 17 | body_required: true 18 | mitm: 19 | hostnames: 20 | - '*.kuwo.cn' 21 | - '*.lrts.me' 22 | -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.Loon.plugin 9 | 10 | [Script] 11 | http-response ^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).* script-path=https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js,requires-body=true, timeout=10, tag=酷我音乐 12 | 13 | [MITM] 14 | hostname = *.kuwo.cn, *.lrts.me -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.QuantumultX.snippet 9 | 10 | [rewrite_local] 11 | ^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).* url script-response-body https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js 12 | 13 | [mitm] 14 | hostname = *.kuwo.cn, *.lrts.me -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.Shadowrocket.model 9 | 10 | [Script] 11 | 酷我音乐=type=http-response,pattern=^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).*,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% *.kuwo.cn, *.lrts.me 15 | -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.Stash.stoverride: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.Stash.stoverride 9 | 10 | name: 酷我音乐 11 | desc: 代码重构,这版是最完美!!!的酷我解锁 By Nameking77 https://t.me/Nameking77 12 | http: 13 | mitm: 14 | - '*.kuwo.cn, *.lrts.me' 15 | script: 16 | - match: ^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).* 17 | name: KuWoMusic 18 | type: response 19 | require-body: true 20 | timeout: 10 21 | script-providers: 22 | KuWoMusic: 23 | url: https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js 24 | interval: 86400 -------------------------------------------------------------------------------- /KuWoMusic/KuWoMusic.Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=酷我音乐 2 | #!desc=代码重构,这版是最完美!!!的酷我解锁 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@Nameking77 https://t.me/Nameking77 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=KuWoMusic.Surge.sgmodel 9 | 10 | [Script] 11 | 酷我音乐=type=http-response,pattern=^https?:\/\/.*\.(kuwo|lrts)\.(cn|me)\/(a\.p|music\.pay|(vip\/(v2|enc)\/(theme|user\/vip))|(EcomResource|(Mobile)?Ad)Serv(er|ice)).*,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nameking77/Qx/main/rewrite/kw.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% *.kuwo.cn, *.lrts.me -------------------------------------------------------------------------------- /KuWoMusic/README.md: -------------------------------------------------------------------------------- 1 |
2 | Functional Store Hub 3 |

Functional Store Hub

4 |

5 |

解锁酷我音乐会员、听书、下载权限,可下载无损!

6 |
7 |

特别感谢作者: King

8 |

作者大佬的仓库: nameking77

9 |

10 |
11 |
12 |
13 |
14 | 15 | 🎉 你可以在这里找到使用方法和注意事项: [Functional Store Hub 频道](https://t.me/Functional_Store_Hub) 16 | 17 | 😀 如果你想反馈问题,你可以直接在Github上提交issues或者加入[Functional Store Hub Discussion 群组](https://t.me/Functional_Store_Hub_Discussion)找到我们 18 | -------------------------------------------------------------------------------- /KuWoMusic/酷我音乐全解锁.hcc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/38f4fa9b9a963457d7ea5a93fdcd1cd44945a49e/KuWoMusic/酷我音乐全解锁.hcc -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.Egern.yaml 9 | 10 | scriptings: 11 | - http_response: 12 | name: 流利说·阅读 13 | script_url: >- 14 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js 15 | match: >- 16 | ^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$ 17 | body_required: true 18 | mitm: 19 | hostnames: 20 | - 'vira.llsapp.com' 21 | -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.Loon.plugin 9 | 10 | [Script] 11 | http-response ^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$ script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js,requires-body=true, timeout=10, tag=流利说·阅读 12 | 13 | [MITM] 14 | hostname = vira.llsapp.com -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.QuantumultX.snippet 9 | 10 | [rewrite_local] 11 | ^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$ url script-response-body https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js 12 | 13 | [mitm] 14 | hostname = vira.llsapp.com -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.Shadowrocket.model 9 | 10 | [Script] 11 | 流利说·阅读=type=http-response,pattern=^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% vira.llsapp.com 15 | -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.Stash.stoverride: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.Stash.stoverride 9 | 10 | name: 流利说·阅读 11 | desc: 解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 By R·E @Functional_Store_Hub 12 | http: 13 | mitm: 14 | - 'vira.llsapp.com' 15 | script: 16 | - match: ^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$ 17 | name: LiuLiShuoYueDu 18 | type: response 19 | require-body: true 20 | timeout: 10 21 | script-providers: 22 | LiuLiShuoYueDu: 23 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js 24 | interval: 86400 -------------------------------------------------------------------------------- /LiuLiShuoYueDu/LiuLiShuoYueDu.Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=流利说·阅读 2 | #!desc=解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=LiuLiShuoYueDu.Surge.sgmodel 9 | 10 | [Script] 11 | 流利说·阅读=type=http-response,pattern=^https?:\/\/vira\.llsapp\.com\/api\/v\d\/\w+\/\w+$,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% vira.llsapp.com -------------------------------------------------------------------------------- /LiuLiShuoYueDu/Script/LiuLiShuoYueDu.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁流利说·阅读会员、解锁阅读权限、解锁音频权限等 3 | 脚本作者:R·E 4 | 脚本发布:https://t.me/Functional_Store_Hub 5 | 6 | 更新时间:2022.07.27 7 | 支持版本:商店版本 8 | 下载地址:https://apps.apple.com/app/id1435478035 9 | 10 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖,需在24小时内从设备中删除!⚠️⚠️⚠️ 11 | */ 12 | 13 | var _0x5c3696=$response['body'];var _0x3d6a05=$request['url'];if(_0x3d6a05['indexOf']('/api/v2/member/subscription')!=-0x1){var _0xab86ec={};_0xab86ec['expiredAt']=0x70db6800;_0xab86ec['remainDays']=0x3e7;_0xab86ec['active']=!![];_0xab86ec['startedAt']=0x61ec29ff;var _0x57dba3=_0xab86ec;_0x5c3696=JSON['stringify'](_0x57dba3);var _0x41be63={};_0x41be63['body']=_0x5c3696;$done(_0x41be63);}else if(_0x3d6a05['indexOf']('/api/v2/user_goods_subscriptions/overall')!=-0x1){var _0x172290={};_0x172290['startedAt']=0x61e2ef80;_0x172290['category']=0x4;_0x172290['status']=0x2;_0x172290['expiredAt']=0x61ec29ff;_0x172290['goodsTitle']='member';_0x172290['remainDays']=0x3e7;_0x172290['goodsUid']='XnV1EW';_0x172290['firstStartedAt']=0x70db6800;var _0x21883a={};_0x21883a['items']=[_0x172290];var _0x57dba3=_0x21883a;_0x5c3696=JSON['stringify'](_0x57dba3);var _0x387301={};_0x387301['body']=_0x5c3696;$done(_0x387301);}$done(); -------------------------------------------------------------------------------- /LiuLiShuoYueDu/流利说+解锁VIP.hcc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/38f4fa9b9a963457d7ea5a93fdcd1cd44945a49e/LiuLiShuoYueDu/流利说+解锁VIP.hcc -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/Clash.yaml: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.08.11 4 | 5 | proxies: 6 | - {"server":"music.lolico.me","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 1","type":"http"} 7 | - {"server":"101.132.192.212","port":30001,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 2","type":"ss"} 8 | - {"server":"101.132.192.212","port":30003,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 3","type":"ss"} 9 | - {"server":"101.132.79.113","port":23333,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 4","type":"http"} 10 | - {"server":"music.griouges.cn","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 5","type":"http"} 11 | - {"server":"1.116.214.16","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 6","type":"http"} 12 | - {"server":"salvan.icu","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 7","type":"http"} 13 | - {"server":"os.tencentcdn.net","port":25000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 8","type":"http"} 14 | - {"server":"pc.tencentcdn.net","port":35000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 9","type":"http"} 15 | - {"server":"119.176.253.89","port":9080,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 10","type":"http"} 16 | - {"server":"azgw.kevinxiao.cf","tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 11","type":"http"} 17 | - {"server":"azmb.kevinxiao.cf","tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 12","type":"http"} 18 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/Loon.list: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.07.16 4 | NeteaseMusic Unlock 1 = http,music.lolico.me,39000 5 | NeteaseMusic Unlock 2 = desperadoj.com_free_proxy_etg0,30001,aes-128-gcm,"101.132.192.212" 6 | NeteaseMusic Unlock 3 = desperadoj.com_free_proxy_etg0,30003,aes-128-gcm,"101.132.192.212" 7 | NeteaseMusic Unlock 4 = http,101.132.79.113,23333 8 | NeteaseMusic Unlock 5 = http,music.griouges.cn,39000 9 | NeteaseMusic Unlock 6 = http,1.116.214.16,19980 10 | NeteaseMusic Unlock 7 = http,salvan.icu,19980 11 | NeteaseMusic Unlock 8 = http,os.tencentcdn.net,25000 12 | NeteaseMusic Unlock 9 = http,pc.tencentcdn.net,35000 13 | NeteaseMusic Unlock 10 = http,119.176.253.89,9080 14 | NeteaseMusic Unlock 11 = http,azgw.kevinxiao.cf,70 15 | NeteaseMusic Unlock 12 = http,azmb.kevinxiao.cf,70 16 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.07.16 4 | # Back music.desperadoj.com DNS 101.132.192.212 5 | http=music.lolico.me:39000, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 1 6 | shadowsocks=101.132.192.212:30001, method=aes-128-gcm, password=desperadoj.com_free_proxy_etg0, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 2 7 | shadowsocks=101.132.192.212:30003, method=aes-128-gcm, password=desperadoj.com_free_proxy_etg0, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 3 8 | http=101.132.79.113:23333, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 4 9 | http=music.griouges.cn:39000, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 5 10 | http=1.116.214.16:19980, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 6 11 | http=salvan.icu:19980, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 7 12 | http=os.tencentcdn.net:25000, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 8 13 | http=pc.tencentcdn.net:35000, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 9 14 | http=119.176.253.89:9080, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 10 15 | http=azgw.kevinxiao.cf:70, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 11 16 | http=azmb.kevinxiao.cf:70, over-tls=false, fast-open=false, udp-relay=false, server_check_url=http://interface3.music.163.com, tag=NeteaseMusic Unlock 12 17 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/README.md: -------------------------------------------------------------------------------- 1 |
2 |

Functional Store Hub

3 |

4 |

解锁网易云灰色和VIP音乐节点

5 |
6 |

7 |
8 | 9 | | 软件名称 | 节点数量 | 更新时间 | 资源链接 | 10 | | :----: | :----: | :----: | :----: | 11 | | Surge | 12 | 2022.07.16 | [Surge.list](https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NeteaseMusic/AgentNode/Surge.list) | 12 | | QuantumultX | 12 | 2022.07.16 | [QuantumultX.snippet](https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NeteaseMusic/AgentNode/QuantumultX.snippet) | 13 | | Loon | 12 | 2022.07.16 | [Loon.list](https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NeteaseMusic/AgentNode/Loon.list) | 14 | | Stash | 12 | 2022.07.16 | [Stash.yaml](https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NeteaseMusic/AgentNode/Stash.yaml) | 15 | | ShadowRocket | 12 | 2022.07.16 | [Shadowrocket.list](https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NeteaseMusic/AgentNode/Shadowrocket.list) | 16 | 17 |
18 |
19 | 简略使用方法:分流指向节点

详细使用方法:https://t.me/Functional_Store_Hub/18 20 |
21 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/Shadowrocket.list: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.07.16 4 | proxies: 5 | - {"server":"music.lolico.me","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 1","type":"http"} 6 | - {"server":"101.132.192.212","port":30001,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 2","type":"ss"} 7 | - {"server":"101.132.192.212","port":30003,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 3","type":"ss"} 8 | - {"server":"101.132.79.113","port":23333,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 4","type":"http"} 9 | - {"server":"music.griouges.cn","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 5","type":"http"} 10 | - {"server":"1.116.214.16","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 6","type":"http"} 11 | - {"server":"salvan.icu","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 7","type":"http"} 12 | - {"server":"os.tencentcdn.net","port":25000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 8","type":"http"} 13 | - {"server":"pc.tencentcdn.net","port":35000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 9","type":"http"} 14 | - {"server":"119.176.253.89","port":9080,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 10","type":"http"} 15 | - {"server":"azgw.kevinxiao.cf","port":70,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 11","type":"http"} 16 | - {"server":"azmb.kevinxiao.cf","port":70,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 12","type":"http"} 17 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/Stash.yaml: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.07.16 4 | proxies: 5 | - {"server":"music.lolico.me","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 1","type":"http"} 6 | - {"server":"101.132.192.212","port":30001,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 2","type":"ss"} 7 | - {"server":"101.132.192.212","port":30003,"cipher":"aes-128-gcm","password":"desperadoj.com_free_proxy_etg0","tfo":false,"udp":false,"name":"NeteaseMusic Unlock 3","type":"ss"} 8 | - {"server":"101.132.79.113","port":23333,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 4","type":"http"} 9 | - {"server":"music.griouges.cn","port":39000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 5","type":"http"} 10 | - {"server":"1.116.214.16","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 6","type":"http"} 11 | - {"server":"salvan.icu","port":19980,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 7","type":"http"} 12 | - {"server":"os.tencentcdn.net","port":25000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 8","type":"http"} 13 | - {"server":"pc.tencentcdn.net","port":35000,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 9","type":"http"} 14 | - {"server":"119.176.253.89","port":9080,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 10","type":"http"} 15 | - {"server":"azgw.kevinxiao.cf","port":70,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 11","type":"http"} 16 | - {"server":"azmb.kevinxiao.cf","port":70,"tls":false,"tfo":false,"udp":false,"name":"NeteaseMusic Unlock 12","type":"http"} 17 | -------------------------------------------------------------------------------- /NeteaseMusic/AgentNode/Surge.list: -------------------------------------------------------------------------------- 1 | # > NeteaseMusic Unlock List 2 | # > All Nodes 3 | # > 2022.07.16 4 | NeteaseMusic Unlock 1 = http,music.lolico.me,39000,test-url=http://interface3.music.163.com 5 | NeteaseMusic Unlock 2 = ss,101.132.192.212,30001,encrypt-method=aes-128-gcm,password=desperadoj.com_free_proxy_etg0,tfo=false,udp-relay=false,test-url=http://interface3.music.163.com 6 | NeteaseMusic Unlock 3 = ss,101.132.192.212,30003,encrypt-method=aes-128-gcm,password=desperadoj.com_free_proxy_etg0,tfo=false,udp-relay=false,test-url=http://interface3.music.163.com 7 | NeteaseMusic Unlock 4 = http,101.132.79.113,23333,test-url=http://interface3.music.163.com 8 | NeteaseMusic Unlock 5 = http,music.griouges.cn,39000,test-url=http://interface3.music.163.com 9 | NeteaseMusic Unlock 6 = http,1.116.214.16,19980,test-url=http://interface3.music.163.com 10 | NeteaseMusic Unlock 7 = http,salvan.icu,19980,test-url=http://interface3.music.163.com 11 | NeteaseMusic Unlock 8 = http,os.tencentcdn.net,25000,test-url=http://interface3.music.163.com 12 | NeteaseMusic Unlock 9 = http,pc.tencentcdn.net,35000,test-url=http://interface3.music.163.com 13 | NeteaseMusic Unlock 10 = http,119.176.253.89,9080,test-url=http://interface3.music.163.com 14 | NeteaseMusic Unlock 11 = http,azgw.kevinxiao.cf,70,test-url=http://interface3.music.163.com 15 | NeteaseMusic Unlock 12 = http,azmb.kevinxiao.cf,70,test-url=http://interface3.music.163.com 16 | -------------------------------------------------------------------------------- /NeteaseMusic/UnlockCheck/README.md: -------------------------------------------------------------------------------- 1 | come soon... 2 | -------------------------------------------------------------------------------- /NeteaseMusic/UnlockCheck/Script/Check.js: -------------------------------------------------------------------------------- 1 | Come Soon... 2 | -------------------------------------------------------------------------------- /Nicegram/Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=Nicegram会员 2 | #!desc=解锁Nicegram会员(2022.07.15) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | scriptings: 7 | - http_request: 8 | name: Nicegram会员 9 | script_url: >- 10 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js 11 | match: ^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$ 12 | body_required: false 13 | mitm: 14 | hostnames: 15 | - restore-access.indream.app 16 | -------------------------------------------------------------------------------- /Nicegram/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=Nicegram会员 2 | #!desc=解锁Nicegram会员(2022.11.19) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | http-request ^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$ script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js, timeout=10, tag=Nicegram会员 8 | 9 | [MITM] 10 | hostname = restore-access.indream.app 11 | -------------------------------------------------------------------------------- /Nicegram/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=Nicegram会员 2 | #!desc=解锁Nicegram会员(2022.07.15) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | ^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$ url script-echo-response https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js 7 | 8 | hostname = restore-access.indream.app 9 | -------------------------------------------------------------------------------- /Nicegram/Script/Nicegram.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁Nicegram会员 3 | 脚本作者:R·E 4 | 支持版本:商店最新 1.0.7 5 | 更新时间:2022.09.23 6 | 问题反馈:https://t.me/Functional_Store_Hub 7 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖!⚠️⚠️⚠️ 8 | */ 9 | 10 | const a=typeof $task!='undefined';const b=typeof $httpClient!='undefined';if(b){console['log']('\x0aR·E\x20Nicegram\x20Script\x20Log:\x0aNicegram\x20Premium已解锁😎');$done({'response':{'status':0xc8,'body':'{\x22data\x22:\x20{\x22premiumAccess\x22:\x20true}}'}});}else if(a){console['log']('\x0aR·E\x20Nicegram\x20Script\x20Log:\x0aNicegram\x20Premium已解锁😎');$done({'status':'HTTP/1.1\x20200\x20OK','headers':{'Content-Type':'application/json'},'body':'{\x22data\x22:\x20{\x22premiumAccess\x22:\x20true}}'});}else{console['log']('\x0aR·E\x20Nicegram\x20Script\x20Log:\x0aNicegram\x20Premium已解锁😎');$done({'status':0xc8,'body':'{\x22data\x22:\x20{\x22premiumAccess\x22:\x20true}}'});} 11 | -------------------------------------------------------------------------------- /Nicegram/Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=Nicegram会员 2 | #!desc=解锁Nicegram会员(2022.07.15) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | Nicegram会员 = type=http-request,pattern=^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$,requires-body=0,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% restore-access.indream.app 11 | -------------------------------------------------------------------------------- /Nicegram/Stash.stoverride: -------------------------------------------------------------------------------- 1 | name: Nicegram会员 2 | desc: 解锁Nicegram会员(2022.07.15) @R·E https://t.me/Functional_Store_Hub 3 | 4 | http: 5 | mitm: 6 | - 'restore-access.indream.app' 7 | script: 8 | - match: ^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$ 9 | name: Nicegram 10 | type: response 11 | require-body: true 12 | timeout: 10 13 | 14 | script-providers: 15 | Nicegram: 16 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js 17 | interval: 86400 18 | -------------------------------------------------------------------------------- /Nicegram/Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=Nicegram会员 2 | #!desc=解锁Nicegram会员(2022.07.15) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | Nicegram会员 = type=http-request,pattern=^https?:\/\/restore-access\.indream\.app\/restoreAccess\?id=\w+$,requires-body=0,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Nicegram/Script/Nicegram.js,script-update-interval=0 8 | 9 | [MITM] 10 | hostname = %APPEND% restore-access.indream.app 11 | -------------------------------------------------------------------------------- /NodeLinkCheck/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name = NodeLinkCheck 2 | #!desc = 一款支持Surge、QuantumultX、Loon的节点代理链路检测模块 3 | 4 | [Script] 5 | generic script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Script/NodeLinkCheck.js, tag=代理链路检测, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Stack.png 6 | -------------------------------------------------------------------------------- /NodeLinkCheck/README.md: -------------------------------------------------------------------------------- 1 |
2 |

Node Link Check
代理链路检测

3 |

4 |

2.0重构开源版

5 |

支持Surge、QuantumultX、Loon

6 |
7 |

8 | 使用方式: 9 | 10 | ❶ 使用 Sub-Store 正常订阅节点,但在最下方的 节点操作 中选择 脚本操作 并选择 链接 添加 下方链接 11 | ``` 12 | 13 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Sub-Store/Operator.js 14 | ``` 15 | 16 | ❷ 添加对应内容 17 | 18 | Surge模块: 19 | 20 | ``` 21 | 22 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Surge.sgmodule 23 | ``` 24 | 25 | QuantumultX配置文件[task_local]下粘贴: 26 | 27 | ``` 28 | 29 | event-interaction https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Script/NodeLinkCheck.js, tag=Env代理链路检测, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Stack.png, enabled=true 30 | 31 | ``` 32 | 33 | Loon引用插件: 34 | 35 | ``` 36 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Loon.plugin 37 | ``` 38 | 39 | ❸ 引用 Sub-Store 处理后的订阅 40 | 41 | 🎉 你可以在这里找到使用方法和注意事项: [Functional Store Hub 频道](https://t.me/Functional_Store_Hub) 42 | 43 | 😀 如果你想反馈问题,你可以直接在Github上提交issues或者加入[Functional Store Hub Discussion 群组](https://t.me/Functional_Store_Hub_Discussion)找到我 44 | 45 | -------------------------------------------------------------------------------- /NodeLinkCheck/Script/NodeLinkCheck.js: -------------------------------------------------------------------------------- 1 | //NodeLinkCheck-mini-2.1 2 | const a='NodeLinkCheck';const b='RebuildNodeLineJsonByRE';const c=new Env(a);let d;if(typeof $argument!='undefined'){d=Object['fromEntries']($argument['split']('&')['map'](n=>n['split']('=')));}let e=a;let f='-';let g;!(async()=>{const [n,o]=await Promise['all']([i(),h()]);c['log']('出口IP信息',c['toStr'](n));c['log']('节点名信息',c['toStr'](o));const p=c['lodash_get'](o,'policy');if(p){c['log']('节点名称',p);const q=c['getjson'](b);const r=c['lodash_get'](q,p);const s=c['lodash_get'](r,'server');const t=c['lodash_get'](r,'type');c['log']('入口server信息',s);if(!s){throw new Error('请先从Sub-Store订阅');}const u=await i(s);c['log']('入口IP信息',c['toStr'](u));const v=[l(c['lodash_get'](u,'countryCode')),c['lodash_get'](u,'city'),c['lodash_get'](u,'isp')]['join']('\x20');const w=[l(c['lodash_get'](n,'countryCode')),c['lodash_get'](n,'city'),c['lodash_get'](n,'isp')]['join']('\x20');e=(c['lodash_get'](o,'path')||[])['join']('\x20➟\x20');const x={};x['policy']=p;x['nodeInfo']=r;x['server']=s;x['type']=t;x['inIpInfo']=u;x['outIpInfo']=n;g=x;}})()['catch'](n=>{console['log'](n);console['log'](c['toStr'](n));e='获取信息失败';f=''+(c['lodash_get'](n,'message')||n);})['finally'](()=>{if(c['isSurge']()){const w='代理链路检测';if(g){const {policy,nodeInfo,server,type,inIpInfo,outIpInfo}=g;const y=c['lodash_get'](nodeInfo,'type')['toUpperCase']();const z=c['lodash_get'](inIpInfo,'query');const A=c['lodash_get'](inIpInfo,'countryCode');const B=c['lodash_get'](outIpInfo,'query');const C=c['lodash_get'](outIpInfo,'countryCode');const D=(c['lodash_get'](inIpInfo,'country')+'\x20'+c['lodash_get'](inIpInfo,'regionName')+'\x20'+c['lodash_get'](inIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');const E=(c['lodash_get'](outIpInfo,'country')+'\x20'+c['lodash_get'](outIpInfo,'regionName')+'\x20'+c['lodash_get'](outIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');if(C==A&&C=='CN'){f='·\x20'+y+'\x20➟\x20'+'国内代理'+'\x20➟\x20'+policy+'\x0a·\x20'+'您'+'\x20➟\x20'+E+'\x0a·\x20'+'国内IP:'+B;}else if(C==A&&C!='CN'){f='·\x20'+y+'\x20➟\x20'+'直连代理'+'\x20➟\x20'+policy+'\x0a·\x20'+'您'+'\x20➟\x20'+E+'\x0a·\x20'+'出口IP:'+B;}else if(C!=A&&A=='CN'){var p=/IEPL/gi;var s=/IPLC/gi;var v=/\专\线/gi;if($environment['params']['search'](p)!=-0x1){f='·\x20'+y+'\x20➟\x20'+'IEPL专线'+'\x20➟\x20'+policy+'\x0a·\x20'+D+'\x20➟\x20'+E+'\x0a·\x20'+z+'\x20➟\x20'+B;}else if($environment['params']['search'](s)!=-0x1){f='·\x20'+y+'\x20➟\x20'+'IPLC专线'+'\x20➟\x20'+policy+'\x0a·\x20'+D+'\x20➟\x20'+E+'\x0a·\x20'+z+'\x20➟\x20'+B;}else if($environment['params']['search'](v)!=-0x1){f='·\x20'+y+'\x20➟\x20'+'内网专线'+'\x20➟\x20'+policy+'\x0a·\x20'+D+'\x20➟\x20'+E+'\x0a·\x20'+z+'\x20➟\x20'+B;}else{f='·\x20'+y+'\x20➟\x20'+'中转代理'+'\x20➟\x20'+policy+'\x0a·\x20'+D+'\x20➟\x20'+E+'\x0a·\x20'+z+'\x20➟\x20'+B;}}else if(C!=A&&C=='CN'){f='·\x20'+y+'\x20➟\x20'+'回国代理'+'\x20➟\x20'+policy+'\x0a·\x20'+E+'\x20➟\x20'+D+'\x0a·\x20'+B+'\x20➟\x20'+z;}else{f='⟦\x20没匹配到节点类型\x20⟧';}}else{f=f;}const x={...d};x['title']=w;x['content']=f;c['done'](x);}else if(c['isQuanX']()){const F='代理链路检测';let G;if(g){const {policy,nodeInfo,server,type,inIpInfo,outIpInfo}=g;const I=c['lodash_get'](nodeInfo,'type')['toUpperCase']();const J=c['lodash_get'](inIpInfo,'query');const K=c['lodash_get'](inIpInfo,'countryCode');const L=c['lodash_get'](outIpInfo,'query');const M=c['lodash_get'](outIpInfo,'countryCode');const N=(c['lodash_get'](inIpInfo,'country')+'\x20'+c['lodash_get'](inIpInfo,'regionName')+'\x20'+c['lodash_get'](inIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');const O=(c['lodash_get'](outIpInfo,'country')+'\x20'+c['lodash_get'](outIpInfo,'regionName')+'\x20'+c['lodash_get'](outIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');const P='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAMAAADQmBKKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAMAUExURQAAAAOo8wSw9g2x/wGf9QGh8wWe8jv6/wO/+AG49Ri1/wCn8wCk8gC39ACp8wG+9gGu9AW09gOy+Aeu/wC49Aa59wC89QCg8QCz9ACg8QCc8QCj8gC/9gCT8gCW8QGx9ACq8gCv8wG09ACf8gGu8wCb8QCQ7wCa8ACo8gCi8gCR8ACT7wCX8ACV8QCj8QCm8gC/9QCQ7wGS8gCv8wCw8wCo8wCw9ACW8AGj8ga7/QHD9wCO8ACP7wDC9gCu8wCV8ACY8ACd8QCT8AC+9wCs8wCm8gCO7wCN7wCn8wCU8AC79QCP7wCi8gGW8QWV9QCQ8QCR8ACS8QCY8ACR7wCz9ACY8ACU8ACQ7wHD9gCM7wGl8wCQ7wO99gCn8wC19AGs9ACg8QCj8gCT8ADC9wGw8wGi8gDE9gW69gCU8ACc8QC09ACM7gCU8AHD9gLD+ACz9AC18wLD9gGv8wCM7wCx8wCy8wCS7wCY8AHD9gGa8QCi8QCZ8QDE9QHF9wG09AOo9gHC9QC29ACt8gDB9QGy9AGw8wCL8ACk8QHA9QCf8QHE9gHB9gCZ8ACz9AGz9AC09AG29AG29ACf8gG19AGk8wDF+ACY8ACT7wCX8ACS7wCR7wCW8ACi8QCw8wCh8QCy8wCU7wCZ8ACj8QCV7wCQ7wCm8gC39AC29ACz8wCk8QCo8gCp8gC+9QCa8ACx8wC19ADA9QCn8gCX7wCW7wCl8gCg8QCu8wCb8AC59ACc8AC99QCf8QC69ACP7wG/9QCx8wCq8gG09ACk8gCt8wGz9AG89QCl8QC08wG49ACe8QGv8wCr8gCV8ACv8wGy9ACM7gCN7gCO7wDC9QCU8ACd8QG79QHB9QC99ACs8gG69QCd8AC79ACO7gGn8gGs8wCN7wC49AGg8QHD9gCe8AGj8gCm8QCP7gC18wCL7gGV8ACQ7gCt8gCT8AC/9QC+9AGr8wCu8gDB9QHC9gHB9gCb8QGc8QC28wCf8AGi8gCY8AGq8wGa8QCc8QCg8AC69QC/9hQYSKAAAACWdFJOUwAWHAgfIxMBI3UE7GTSV3ViFiMMxRjSde/SdLrEJ1JuuPBcxVrFmdPy6WD07EPyrNL6Lrb1rsHYURFlWM23r5L304tM7vba8cGkxb6lMxs5Pzz7dLLieYL7+lbEN22oP/OW38icSZovrsuQ69DocYG0V8vh+8/9tqVaqIWph2sq7eTn9dbZaF/y6Xuqarz20vnWsv7DTn/Qte4AAArzSURBVHja7VppWJTXFR4RISE2BUlaW4NK0rggmqpJjUYj1US0VqMmbtXGqnGJS8zaJM2eLmnT/ekPdhyWYVhmHgZwYNgVBQRF2RURBRXFLcqixmiep+fcb5bvzAJzZy76h3PPvfd7+c575uWd/QOFYiAGYiAGYiD4Y8vXmz/ePONR18g+cz/5+INP5g4WJ2ftxjO1ZyBXbfbjJ3vP2MnIZ3a+4SNIzxurztTWQsLcuZaXPHgW0Iz8WdOF6JnRBb26jJI+f4DTn1ldtRb+YyI8emAV9uus7cTOnV0bvfncNeox8r8WIOjvXZ1djZ2NjbWNXZ2wd77FQ/b/vLNRzv+j+3ea/yqU0d3d2ahrhOhunMXDfqu7sZvwZ7gtaK5O161r1Okau3Xd7OivPPfZZmAS/gfuP6R1uqs6FtLWrfPgYM+CesLf6LagHxbpinSYV3Hrvnq1iOd59hjUE/7PBQi6ahxF0ByDSxDUE74IQRoN5jdFmiJ2yClIQ/kCBGk0GmgmBezfaLgEQT3hCxCUd0yTh1OjOcYyj0+QhvJFOMS6HcuT4lgen0NQT/g/cl9QM7Rh8xjb8pq5BBm5Zr4IQRClzaWQeaXNuPMI+hXUE777gh4sLZXalUptm0u5BOGvIOcLcQhbQTYYJ5+gUsoX4FBDQUNBc0NDM0zYmwsa+AQVUL4Ah6BfAesKgyWXIKTI+QIcKmgqaGqCnrAVFBjggEfQIxLRwhcgqMlQYDA0NRkMsBcYmgxNXIKgnvAFCIJuBowmNiC4BElMC/8HAgS1QjS1thpaD7YaDK1NfIKgnvAFCDpojNZWmND4IJ+gVsoXICgp6aA0DsIRRBKXIMaS8UU4lESDzyGUIw8hDiXdxFZqdZIa1pt8DqlvUr4AQeqbajVO1MKOP3We/NkXEtfCFyFIfUEtTbVxf9PJqyA+u/5j5pr4AgRdSFenX1Cnqy9g4nG6evjjTl0z+a+pXsYXIag8vRy6YqbDcTrDr/Rpkv+2/8nqzXwBgtL3pZdDpqeXs6Vcwn2ZNPcLWm/i/9ttQaPKy/fBwCUZhvEQlt5MevRV23oJP+L+d3vsk7zPNDGNx45N8h1ur57NV90WND35QHIyzAO7YUppxvZNGvZPR/UARrl/fehNaHVgd/Ju2GCFIcN2TPJ58F+O65Pf9XNf0NrdEEcO7GYbG3JsbdKW9470Vr9NxDXGXdCymDUvPlKMhwRTk4YNtz5P8J+EXBr23lYMnU1xRLZKR8SkYb+wOW9Z3/NTiInHA6FbDGscE2O6JQsOlJvk/enT1udN+DV/YVfOPaYWQ+cYYxRLU4afpybZnMf553UKkeEbyHpXGad8xRn4M7lJo562Ph/z7q7BCrHhMbUKWldWXa+MqbwOt1BZRbG1SfT821sU4sM3ENvjrKq6XlVVWXmd4BesTJKdDxzlreiP8JgKN5JdmQ0p7dkUP+9HTDKff8VD0V/hG5idfRlu6Lo0cZNja5PY+S8fVvRjeEzN3n95/+Xsy/thgUO2yLCVSXD+temK/g3fQLhtY8JimiZsZdLb6xT9Hh6jQcLx4/tNA1OOn/dT3OvwfeH4qVMgASZLXGSYmHRvwmP0qUMwQMYhzOPHD1F8X0w6dA0GC5CAR3J8X0w6tJeJ2HttLxxdY6sMPzPo3ps0Dm8cw7QS/NDD98EkuN207/ampbEVBsX3xaTv0jD2mifB98gkb2JSmhSpTElqWhrF98KkYfOf8SMmpaWmQhoXWAnud5O8f/ui1a14jE5NbU+1RHsqxU/1q0lD5qdmZGSkZhCTho7LwEAdeE6aFtyPJoE9LRkZLK1Mymhpx59ntJjOE9xfJg2b356haslob8GpIo/XoeNULe2QsvNy/NBv+skeVXu7SqVqZ0NFTPIcAT+i5wkWb9KQ+aoyFUaZNDGfoibZnJdjwSaBPaqyPdLYU6aCWYbYyiSb8wSLNGnIfGiZsmdPShluMFJMmJo0yea8HIszadMk6FmCnUswS1JSLJjciucIm/MErxfzP1+bXiwpiU+BjrDiKIkn+CsFMcnmvBz/WoQer/Hx8dgSo4QNOR7/LK32HEHPW9UPFSBoffy5+PjoeFjPRZ+LxrYy/Acvm/qhk3qpH+/+N/zBk6IhzrGMjoct3oKt7TGZ5KgesPvvI+ui5fFtdKwF2LHHZJLdesTr3Rb0VWwsNI39NhYT25uwfXtMJtnWS/gJtwX9ONZ+OLTHaNLv7NN+IkTQ99hKr4/VsxVxb/aYTJLXm/kCBOn1bXqMWP33bdJxm74Pe0wmmestfAGC2vT5bfq2W9g2X98Gqf/bs85RwSRWL+cLEHQrvy3/Vn5+2y1MPHbKHrNJ+ZQvQFD+WTYw88/iMoSD/QSS5HwRgioqzlbks6zAYz5BUE/4AgRBu4qKE2dhOwEDAJegsxWUL0BQPfQ5UV8BW/0JdsglCOoJ/5duC/opdISRC+NEPUseQU/W11O+AEHYqj43F7dcFlyCJKKFL0DQjdy7ubk3bjAtd3Nv5N7gEgT1hC9AUE7ujZy7ObjiyM3J4XMoh/IFCOrJgehhyY56uARBPeGPFeBQjrYnRwurNqdH2wMrlyCtlvIFCNJq72i1qAQ3DE5BlC9A0J04rTYuThuH7WDX3uEURPnuCfJfHLBodlwctpOC7RMHOfVJ3dvL87NFY2U8tk/z9HLpy5nPyDFPLg+Ji7sNCRN2WDPNeFnw2Pdnf+jwXX/QPxa8Hiyvp/yQ5a9v/WgTly6vsZnQAiLOmHH28LI59v8uNzHEfj3FwSM5BL0P3EyW0pLpAAfZI08PdlhP8DLnrz54h4SHh2eG3w7PZEt45m0HeIFdgxzXU/yh8w4tD89CRni4tMK0jz+yR57iuJ7ipc4LWpAVFZ4VlcUmZrgDvMSuv8sd1hMczPG1emJUVFQWJMwEOEjIso+n2X9Qr3BUT/EcnqfZjoQoHFJahhUOcvAcDXFQT3DIYh5BIw8n4EjAeTHhooSs8TRHLyVz7NdTPJvvouIOpVKZoDysvAjzsFJ5+KId7PCFxGuC3XqCJ3BeclyirANyHQwl25W2eI1j9gp79RSv4H3z2FoXpgxTKsPq6sIg6jApVi7q5aLSBtt6ijdwX7nynBAWdiWMsWEPM+4yPKbXx6BtPcUj+d9fV1yJiGD0iCsRMKENwcG9f6FeaF1P8VZX3vB3REAgXYqwCIKDemcHTLaqJ/wJnq58BHnp95HANU1cZXhhX+yVtJ7yX3bt89nsiEhoIk1YIy5Z8OSAPi+WTpPXU/5MFy+g+2+INMelSBIvO2VwpH3+5CmufoSdmJgYmQitcIu8hGnETv2Ksy31lL/S9Q/VY84nJiZegsE2mBLu+w5jd9o8Uz3lz3TjLx7+8wqxRWFi4nlM2Bl28jG59LyxnvBdv8PYA2FyYeH5QmnCgqPw/Bpn/8VtjlRP+SsUbsXKk4UwThYW1sCEHbZQp19EBs/Eespf4+Y/7PmsOVljGTWoKMh5dkBoYQ3lh3oq3AzP0JrqGkg2TsJcwMMOAg7hP+f+n6dGVp+urj5dUw0LjJp5fP9hu4CxzPwxCgExBxodrT6N6+mjvM8R/3lMiJE/U8g/xPosPApKMCG4LQ8IRZrE3+6pEBJe72DPDuzpwovsxNXS79JxdPVShaAI2N5xugPTpYdAEGhB8urnFMJi0fYOjDGuvYb8ZTWSRepRKBYv7OgIdbnjknc6Oua9pBAbi5e48QzxnrLURzEQAzEQAzEQLsb/AbUd7RzfbKxMAAAAAElFTkSuQmCC';if(M==K&&M=='CN'){G='
-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+N+'
'+J+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else if(M==K&&M!='CN'){G='



-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+O+'
'+L+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else if(M!=K&&K=='CN'){var p=/IEPL/gi;var s=/IPLC/gi;var v=/\专\线/gi;if($environment['params']['search'](p)!=-0x1){G='
'+N+'
'+J+'


-------------------------
⟦\x20IEPL专线\x20⟧\x20
-------------------------


'+O+'
'+L+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else if($environment['params']['search'](s)!=-0x1){G='
'+N+'
'+J+'


-------------------------
⟦\x20IPLC专线\x20⟧\x20
-------------------------


'+O+'
'+L+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else if($environment['params']['search'](v)!=-0x1){G='
'+N+'
'+J+'


-------------------------
⟦\x20内网专线\x20⟧\x20
-------------------------


'+O+'
'+L+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else{G='
'+N+'
'+J+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+O+'
'+L+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}}else if(M!=K&&M=='CN'){G='
'+O+'
'+L+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+N+'
'+J+'

---------------------------------------

'+I+'\x20➟\x20'+$environment['params']+'

';}else{G='
-------------------------
⟦\x20没匹配到节点类型\x20⟧\x20
-------------------------

';}}else{G='
-------------------------
⟦\x20'+f+'\x20⟧\x20
-------------------------

';}const H={...d};H['title']=F;H['htmlMessage']=G;c['done'](H);}else if(c['isLoon']()){const Q='代理链路检测';let R;if(g){const {policy,nodeInfo,server,type,inIpInfo,outIpInfo}=g;const T=c['lodash_get'](nodeInfo,'type')['toUpperCase']();const U=c['lodash_get'](inIpInfo,'query');const V=c['lodash_get'](inIpInfo,'countryCode');const W=c['lodash_get'](outIpInfo,'query');const X=c['lodash_get'](outIpInfo,'countryCode');const Y=(c['lodash_get'](inIpInfo,'country')+'\x20'+c['lodash_get'](inIpInfo,'regionName')+'\x20'+c['lodash_get'](inIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');const Z=(c['lodash_get'](outIpInfo,'country')+'\x20'+c['lodash_get'](outIpInfo,'regionName')+'\x20'+c['lodash_get'](outIpInfo,'city'))['replace'](/(\中\国\ |\中\华\人\民\共\和\国\ |\中\華\人\民\共\和\國\ )/g,'');const a0='data:image/png;base64,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';if(X==V&&X=='CN'){R='
-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+Y+'
'+U+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else if(X==V&&X!='CN'){R='



-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+Z+'
'+W+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else if(X!=V&&V=='CN'){var p=/IEPL/gi;var s=/IPLC/gi;var v=/\专\线/gi;if($environment['params']['node']['search'](p)!=-0x1){R='
'+Y+'
'+U+'


-------------------------
⟦\x20IEPL专线\x20⟧\x20
-------------------------


'+Z+'
'+W+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else if($environment['params']['node']['search'](s)!=-0x1){R='
'+Y+'
'+U+'


-------------------------
⟦\x20IPLC专线\x20⟧\x20
-------------------------


'+Z+'
'+W+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else if($environment['params']['node']['search'](v)!=-0x1){R='
'+Y+'
'+U+'


-------------------------
⟦\x20内网专线\x20⟧\x20
-------------------------


'+Z+'
'+W+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else{R='
'+Y+'
'+U+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+Z+'
'+W+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}}else if(X!=V&&X=='CN'){R='
'+Z+'
'+W+'


-------------------------
⟦\x20防火墙\x20⟧\x20
-------------------------


'+Y+'
'+U+'

-----------------------------------

'+T+'\x20➟\x20'+$environment['params']['node']+'

';}else{R='
-------------------------
⟦\x20没匹配到节点类型\x20⟧\x20
-------------------------

';}}else{R='
-------------------------
⟦\x20'+f+'\x20⟧\x20
-------------------------

';}const S={...d};S['title']=Q;S['htmlMessage']=R;c['done'](S);}else{const a1={...d};a1['title']=e;a1['content']=f;c['done'](a1);}});async function h(){if(c['isSurge']()){let n=c['lodash_get'](d,'policy');let o;if(n){const q=await j(n);n=c['lodash_get'](q,'policy');o=c['lodash_get'](q,'path');}if(!n){const r=await j(await k());n=c['lodash_get'](r,'policy');o=c['lodash_get'](r,'path');}const p={};p['policy']=n;p['path']=o;return p;}else if(c['isQuanX']()){const s={};s['policy']=$environment['params'];return s;}else if(c['isLoon']()){const t={};t['policy']=$environment['params']['node'];return t;}else{const u={};u['policy']='';return u;}}async function i(n){try{let o;let p;if(!n&&c['isQuanX']()){const w={};w['policy']=$environment['params'];o=w;}if(!n&&c['isLoon']()){p=$environment['params']['node'];}const q={};q['User-Agent']='Mozilla/5.0\x20(Macintosh;\x20Intel\x20Mac\x20OS\x20X\x2012_3_1)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/100.0.4896.60\x20Safari/537.36';const r={};r['node']=p;r['opts']=o;r['url']='http://ip-api.com/json/'+(n||'')+'?lang=zh-CN';r['headers']=q;const s=await c['http']['get'](r);const t=c['lodash_get'](s,'status');c['log']('↓\x20res\x20statusCode');c['log'](t);let u=String(c['lodash_get'](s,'body'));try{u=JSON['parse'](u);}catch(x){}c['log']('↓\x20res\x20body');c['log'](c['toStr'](u));const v=c['lodash_get'](u,'status');if(v!=='success'){throw new Error(''+(c['lodash_get'](u,'message')||'未知错误'));}return u;}catch(y){c['log'](y);throw new Error(''+(c['lodash_get'](y,'message')||y));}}async function j(n,o){if(!o){o=[n];}let {policy}=await m('/v1/policy_groups/select?group_name='+encodeURIComponent(n));if(policy){o['push'](policy);const p=await j(policy,o);policy=c['lodash_get'](p,'policy');o=c['lodash_get'](p,'path');const q={};q['policy']=policy;q['path']=o;return q;}else{const r={};r['policy']=n;r['path']=o;return r;}}async function k(){const n=await m('/v1/policies');return c['lodash_get'](n,'policy-groups.0')||c['lodash_get'](n,'proxies.0');}function l(n){const o=n['toUpperCase']()['split']('')['map'](p=>0x1f1a5+p['charCodeAt']());return String['fromCodePoint'](...o);}function m(n='',o='GET',p=null){return new Promise(q=>{$httpAPI(o,n,p,r=>{q(r);});});} 3 | 4 | //Env mini 5 | 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.encoding = "utf-8", 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 } isShadowrocket() { return "undefined" != typeof $rocket } isStash() { return "undefined" != typeof $environment && $environment["stash-version"] } 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, a] = i.split("@"), n = { url: `http://${a}/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), a = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(a); 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 = (() => { })) { if (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 ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, i) }); else if (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 && t.error || "UndefinedError")); else if (this.isNode()) { let s = require("iconv-lite"); 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: i, statusCode: r, headers: o, rawBody: a } = t, n = s.decode(a, this.encoding); e(null, { status: i, statusCode: r, headers: o, rawBody: a, body: n }, n) }, t => { const { message: i, response: r } = t; e(i, r, r && s.decode(r.rawBody, this.encoding)) }) } } post(t, e = (() => { })) { const s = t.method ? t.method.toLocaleLowerCase() : "post"; 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[s](t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, i) }); else if (this.isQuanX()) t.method = s, 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 && t.error || "UndefinedError")); else if (this.isNode()) { let i = require("iconv-lite"); this.initGotEnv(t); const { url: r, ...o } = t; this.got[s](r, o).then(t => { const { statusCode: s, statusCode: r, headers: o, rawBody: a } = t, n = i.decode(a, this.encoding); e(null, { status: s, statusCode: r, headers: o, rawBody: a, body: n }, n) }, t => { const { message: s, response: r } = t; e(s, r, r && i.decode(r.rawBody, this.encoding)) }) } } 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, i = t["update-pasteboard"] || t.updatePasteboard; return { "open-url": e, "media-url": s, "update-pasteboard": i } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : this.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`), this.log(), this.isSurge() || this.isQuanX() || this.isLoon() ? $done(t) : this.isNode() && process.exit(1) } }(t, e) } 6 | -------------------------------------------------------------------------------- /NodeLinkCheck/Sub-Store/Operator.js: -------------------------------------------------------------------------------- 1 | //NodeLinkCheck-SubStore-mini-2.0 2 | const $=new Env('NodeLinkCheck');const nodes={};function operator(a){const b=a['map'](c=>{let {name,server,type}=c;const d=getUniqName(name);c['name']=d;nodes[d]={'server':server,'type':type};return c;});$['setjson'](nodes,'RebuildNodeLineJsonByRE');return b;}function getUniqName(a,b){let c=b==null?-0x1:b;const d=''+a+(c>=0x0?getNumber(c):'');if(nodes[d]){return getUniqName(a,c+0x1);}else{return d;}}function getNumber(a){const b=['¹','²','³','⁴','⁵','⁶','⁷','⁸','⁹','¹⁰'];const c=b['length'];if(a{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.encoding="utf-8",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}isShadowrocket(){return"undefined"!=typeof $rocket}isStash(){return"undefined"!=typeof $environment&&$environment["stash-version"]}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,a]=i.split("@"),n={url:`http://${a}/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),a=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(a);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=(()=>{})){if(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?s.status:s.statusCode,s.status=s.statusCode),e(t,s,i)});else if(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&&t.error||"UndefinedError"));else if(this.isNode()){let s=require("iconv-lite");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:i,statusCode:r,headers:o,rawBody:a}=t,n=s.decode(a,this.encoding);e(null,{status:i,statusCode:r,headers:o,rawBody:a,body:n},n)},t=>{const{message:i,response:r}=t;e(i,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";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[s](t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,i)});else if(this.isQuanX())t.method=s,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&&t.error||"UndefinedError"));else if(this.isNode()){let i=require("iconv-lite");this.initGotEnv(t);const{url:r,...o}=t;this.got[s](r,o).then(t=>{const{statusCode:s,statusCode:r,headers:o,rawBody:a}=t,n=i.decode(a,this.encoding);e(null,{status:s,statusCode:r,headers:o,rawBody:a,body:n},n)},t=>{const{message:s,response:r}=t;e(s,r,r&&i.decode(r.rawBody,this.encoding))})}}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,i=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":i}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),this.isSurge()||this.isQuanX()||this.isLoon()?$done(t):this.isNode()&&process.exit(1)}}(t,e)} 6 | -------------------------------------------------------------------------------- /NodeLinkCheck/Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name = NodeLinkCheck 2 | #!desc = 一款支持Surge、QuantumultX、Loon的节点代理链路检测模块 3 | 4 | [Panel] 5 | 策略面板 = script-name=代理链路检测,update-interval=21600 6 | 7 | [Script] 8 | 代理链路检测 = type=generic,timeout=30,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/NodeLinkCheck/Script/NodeLinkCheck.js, argument=title=代理链路检测&icon=network&color=#86abee 9 | -------------------------------------------------------------------------------- /PixivShow/Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=Pixiv Show 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | scriptings: 10 | - schedule: 11 | name: Pixiv Show 12 | script_url: "https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js" 13 | cron: 0 0/30 8-22 * * ? 14 | body_required: false 15 | -------------------------------------------------------------------------------- /PixivShow/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=Pixiv Show 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=http://boxjs.com/#/app/Functional_Store_Hub.PixivShow 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | [Script] 10 | cron "0 0/30 8-22 * * ?" script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js, tag=PixivShow, img-url=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/PixivShowICON.png 11 | -------------------------------------------------------------------------------- /PixivShow/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=Pixiv Show 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | [task_local] 10 | 0 0/30 8-22 * * ? https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js, tag=Pixiv Show, img-url=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/PixivShowICON.png, enabled=true 11 | -------------------------------------------------------------------------------- /PixivShow/Script/PixivShow.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:定时推送Pixiv美(色)图(图) 3 | 脚本描述:可在BoxJs中做更详细的设置,支持推送开关、推送类型、推送分类、推送次数、跳转页面设置! 4 | 5 | 脚本作者:R·E 6 | 脚本发布:https://t.me/Functional_Store_Hub 7 | 8 | 更新时间:2022.08.11 9 | 使用声明:⚠️⚠️⚠️转载需注明 Functional Store Hub 频道⚠️⚠️⚠️ 10 | */ 11 | 12 | const _0x119b23=new Env('PixivShow');const _0x49de03='Functional_Store_Hub';const _0x26f1b0='PixivShow';!(async()=>{var _0x46da19='';var _0x3ebeb7=_0x119b23['getdata'](_0x49de03);if(typeof _0x3ebeb7=='undefined'){_0x3ebeb7='{\x22PixivShow\x22:{\x22Settings\x22:{\x22Switch\x22:\x22true\x22,\x22Type\x22:\x220\x22,\x22Tags\x22:\x22\x22,\x22Times\x22:\x222\x22,\x22OpenType\x22:\x221\x22}}}';}_0x3ebeb7=JSON['parse'](_0x3ebeb7);_0x3ebeb7=_0x3ebeb7[_0x26f1b0]['Settings'];if(_0x3ebeb7['Switch']=='false'){$done();}if(_0x3ebeb7['Type']){_0x46da19=_0x549994(_0x46da19,'r18',_0x3ebeb7['Type']);}if(_0x3ebeb7['Tags']){_0x46da19=_0x549994(_0x46da19,'tag',encodeURI(_0x3ebeb7['Tags']));}if(_0x3ebeb7['Times']){_0x46da19=_0x549994(_0x46da19,'num',_0x3ebeb7['Times']);}var _0x57a5d4=await Promise['resolve'](_0x3a330e(_0x46da19));var _0x7b6a07=JSON['parse'](_0x57a5d4['body']);if(_0x57a5d4['status']!=0xc8){_0x119b23['log'](_0x57a5d4['status']);throw new Error('接口返回错误状态码');}if(_0x7b6a07['error']){_0x119b23['log'](String(_0x7b6a07['error']));throw new Error(String(_0x7b6a07['error']));}for(var _0x507b8d=0x0;_0x507b8d<=_0x7b6a07['data']['length'];_0x507b8d++){if(_0x3ebeb7['OpenType']=='0'){var _0x4cea7a=_0x7b6a07['data'][_0x507b8d]['urls']['original']['match'](/\/(\d+)\_/);if(_0x4cea7a[0x1]){_0x4cea7a='https://pixiv.net/i/'+_0x4cea7a[0x1];_0x119b23['msg'](_0x7b6a07['data'][_0x507b8d]['title'],_0x7b6a07['data'][_0x507b8d]['tags']['join']('·'),'',{'open-url':_0x4cea7a,'media-url':_0x7b6a07['data'][_0x507b8d]['urls']['original']});}else{_0x119b23['log']('PixivShow\x20获取\x20Open\x20ID\x20错误\x0a请移步至\x20https://t.me/Functional_Store_Hub\x20评论区反馈');_0x119b23['msg'](_0x7b6a07['data'][_0x507b8d]['title'],_0x7b6a07['data'][_0x507b8d]['tags']['join']('·'),'',{'open-url':_0x7b6a07['data'][_0x507b8d]['urls']['original'],'media-url':_0x7b6a07['data'][_0x507b8d]['urls']['original']});}}else{_0x119b23['msg'](_0x7b6a07['data'][_0x507b8d]['title'],_0x7b6a07['data'][_0x507b8d]['tags']['join']('·'),'',{'open-url':_0x7b6a07['data'][_0x507b8d]['urls']['original'],'media-url':_0x7b6a07['data'][_0x507b8d]['urls']['original']});}}})()['catch'](_0x4cd2fd=>{_0x119b23['log'](_0x4cd2fd);_0x119b23['log'](String(_0x4cd2fd));throw new Error(''+(_0x119b23['lodash_get'](_0x4cd2fd,'message')||_0x4cd2fd));})['finally'](()=>_0x119b23['done']());async function _0x3a330e(_0x110482){const _0x397d14=await _0x119b23['http']['get']({'url':'https://api.lolicon.app/setu/v2'+'?'+_0x110482,'headers':{'User-Agent':'Mozilla/5.0\x20(Macintosh;\x20Intel\x20Mac\x20OS\x20X\x2012_3_1)\x20AppleWebKit/537.36\x20(KHTML,\x20like\x20Gecko)\x20Chrome/100.0.4896.60\x20Safari/537.36'}});return _0x397d14;}function _0x549994(_0x4c7dbb,_0xc41af1,_0x49ad42){if(_0x49ad42){if(_0x4c7dbb){return _0x4c7dbb+'&'+_0xc41af1+'='+_0x49ad42;}else{return _0xc41af1+'='+_0x49ad42;}}else{return _0x4c7dbb;}}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.encoding="utf-8",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}isShadowrocket(){return"undefined"!=typeof $rocket}isStash(){return"undefined"!=typeof $environment&&$environment["stash-version"]}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=(()=>{})){if(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)});else if(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));else if(this.isNode()){let s=require("iconv-lite");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:i,statusCode:r,headers:o,rawBody:h}=t;e(null,{status:i,statusCode:r,headers:o,rawBody:h},s.decode(h,this.encoding))},t=>{const{message:i,response:r}=t;e(i,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";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[s](t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method=s,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()){let i=require("iconv-lite");this.initGotEnv(t);const{url:r,...o}=t;this.got[s](r,o).then(t=>{const{statusCode:s,statusCode:r,headers:o,rawBody:h}=t;e(null,{status:s,statusCode:r,headers:o,rawBody:h},i.decode(h,this.encoding))},t=>{const{message:s,response:r}=t;e(s,r,r&&i.decode(r.rawBody,this.encoding))})}}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,i=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":i}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 13 | -------------------------------------------------------------------------------- /PixivShow/Shadowrocket.model: -------------------------------------------------------------------------------- 1 | #!name=Pixiv Show 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | [Script] 10 | Pixiv Show = type=cron,cronexp=0 0/30 8-22 * * ?,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js,script-update-interval=0 11 | -------------------------------------------------------------------------------- /PixivShow/Stash.stoverride: -------------------------------------------------------------------------------- 1 | #!name=PixivShow 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | name: PixivShow 10 | desc: 高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 @R·E https://t.me/Functional_Store_Hub 11 | 12 | cron: 13 | script: 14 | - name: PixivShow 15 | cron: '0/30 8-22 * * *' 16 | argument: '' 17 | timeout: 10 18 | 19 | script-providers: 20 | PixivShow: 21 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js 22 | interval: 86400 23 | -------------------------------------------------------------------------------- /PixivShow/Surge.sgmodel: -------------------------------------------------------------------------------- 1 | #!name=Pixiv Show 2 | #!desc=高定制化Pixiv推送服务,可在BoxJS中做更详细的设置 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PixivShow 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | 9 | [Script] 10 | Pixiv Show = type=cron,cronexp=0 0/30 8-22 * * ?,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PixivShow/Script/PixivShow.js,script-update-interval=0 11 | -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.Egern.yaml 9 | 10 | scriptings: 11 | - http_response: 12 | name: PlaneFinder 13 | script_url: >- 14 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js 15 | match: >- 16 | ^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login 17 | body_required: true 18 | mitm: 19 | hostnames: 20 | - 'app-live.planefinder.net' 21 | -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.Loon.plugin 9 | 10 | [Script] 11 | http-response ^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js,requires-body=true, timeout=10, tag=PlaneFinder 12 | 13 | [MITM] 14 | hostname = app-live.planefinder.net -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.QuantumultX.snippet 9 | 10 | [rewrite_local] 11 | ^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login url script-response-body https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js 12 | 13 | [mitm] 14 | hostname = app-live.planefinder.net -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.Shadowrocket.model 9 | 10 | [Script] 11 | PlaneFinder=type=http-response,pattern=^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% app-live.planefinder.net 15 | -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.Stash.stoverride: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.Stash.stoverride 9 | 10 | name: PlaneFinder 11 | desc: 解锁PlaneFinder高级订阅 By R·E @Functional_Store_Hub 12 | http: 13 | mitm: 14 | - 'app-live.planefinder.net' 15 | script: 16 | - match: ^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login 17 | name: PlaneFinder 18 | type: response 19 | require-body: true 20 | timeout: 10 21 | script-providers: 22 | PlaneFinder: 23 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js 24 | interval: 86400 -------------------------------------------------------------------------------- /PlaneFinder/PlaneFinder.Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=PlaneFinder 2 | #!desc=解锁PlaneFinder高级订阅 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/PlaneFinder 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=PlaneFinder.Surge.sgmodel 9 | 10 | [Script] 11 | PlaneFinder=type=http-response,pattern=^https?:\/\/app\-live\.planefinder\.net\/api\/v\d+\/account\/\w+\/login,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/PlaneFinder/Script/PlaneFinder.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% app-live.planefinder.net -------------------------------------------------------------------------------- /PlaneFinder/Script/PlaneFinder.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁PlaneFinder高级订阅 3 | 脚本作者:R·E 4 | 脚本发布:https://t.me/Functional_Store_Hub 5 | 6 | 更新时间:2022.08.04 7 | 支持版本:商店版本 8 | 下载地址:https://apps.apple.com/app/id361273585 9 | 10 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖,需在24小时内从设备中删除!⚠️⚠️⚠️ 11 | */ 12 | 13 | var _0x5ec833=JSON['parse']($response['body']);var _0x430258={};_0x430258['type']='itunes';_0x430258['manageURL']='itms-apps://apps.apple.com/account/subscriptions';_0x430258['expiryTS']=0x70db6800;_0x430258['renews']=!![];_0x5ec833['payload']['subscription']=_0x430258;_0x5ec833['payload']['permissions']=[0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc,0xd,0xf,0x10];var _0x4cb17f={};_0x4cb17f['body']=JSON['stringify'](_0x5ec833);$done(_0x4cb17f); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Functional Store Hub 3 |

Functional Store Hub

4 |

5 |

一些有用的功能性脚本、节点和配置

6 |
7 |

8 |
9 | 10 | | 名称 | 版本 | 类型 | 支持 | 介绍 | 链接 | 11 | | :----: | :----: | :----: | :----: | :----: | :----: | 12 | | 网易音乐查询 | 1.1(2022.6.22) | Script | QX Loon(适配中) Surge(适配中) Stash(适配中) | 检测指定节点能否解锁网易云音乐灰色歌曲 | Come Soon | 13 | | 网易音乐解锁节点 | 2022.07.11 | Nodelist | Surge
QuantumultX
Loon
Stash
Shadowrocket | 10条解锁网易云灰色和VIP音乐节点 | [Agent Node](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/NeteaseMusic/AgentNode) | 14 | | 代理链路检测 | 2.0(2022.6.14) | Script | QX Loon Surge Stash(适配中) | 检测指定节点的代理链路状况 | [Node Link Check](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/NodeLinkCheck) | 15 | | 知乎极致优化 | 0.0 | Script | QX Loon Surge Stash | 针对知乎6.0客户端的极致优化 | Come Soon | 16 | | 本地Geo检查器优化 | 1.3(2022.07.26) | Script | QuantumultX | 内容优化且只显示有用信息的本地Geo检查器 | [Geo Location Checker](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/GeoLocationChecker/QuantumultX) | 17 | | QuantumultX配置 | 0.0 | Configuration File | QuantumultX | 最有逻辑的QuantumultX懒人配置文件 | Come Soon | 18 | | ShadowRocket配置 | 0.0 | Configuration File | ShadowRocket | 最有逻辑的ShadowRocket懒人配置文件 | Come Soon | 19 | | WPS Office | 1.0(2022.07.10) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket
HTTPCatcher | WPS Office
超级会员 | [WPS Office](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/WPSOffice) | 20 | | 财新 | 1.0(2022.07.11) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket | 财新阅读、音频 | [财新](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXin) | 21 | | 财新周刊 | 1.0(2022.07.12) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket | 财新周刊
会员 | [财新周刊](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/CaiXinWeekly) | 22 | | Nicegram | 1.0(2022.07.24) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket | Nicegram
Premium | [Nicegram](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Nicegram) | 23 | | 流利说·阅读 | 1.0(2022.07.27) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket | 流利说·阅读
999days VIP | [流利说·阅读](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/LiuLiShuoYueDu) | 24 | | 酷我音乐 | 1.0(2022.08.01) | Script | Surge
QuantumultX
Loon
Stash
Egern
Shadowrocket
HTTPCatcher | 酷我音乐
高级会员
作者:king | [酷我音乐](https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/KuWoMusic) | 25 |
26 | 27 | 🎉 你可以在这里找到使用方法和注意事项: [Functional Store Hub 频道](https://t.me/Functional_Store_Hub) 28 | 29 | 😀 如果你想反馈问题,你可以直接在Github上提交issues或者加入[Functional Store Hub Discussion 群组](https://t.me/Functional_Store_Hub_Discussion)找到我 30 | -------------------------------------------------------------------------------- /WPSOffice/Egern.yaml: -------------------------------------------------------------------------------- 1 | #!name=WPS会员 2 | #!desc=WPS解锁本地会员,支持大陆版以及非大陆版(2022.07.10) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/WPSOffice 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | scriptings: 7 | - http_response: 8 | name: WPS会员 9 | script_url: >- 10 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/WPSOffice/Script/WPS.js 11 | match: ^https?:\/\/.*?account\.wps\.(com|cn)(:\d+)?\/api\/users\/\w+\/overview$ 12 | body_required: true 13 | mitm: 14 | hostnames: 15 | - account.wps.cn 16 | - '*account.wps.com' 17 | -------------------------------------------------------------------------------- /WPSOffice/Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=WPS会员 2 | #!desc=WPS解锁本地会员,支持大陆版以及非大陆版(2022.07.10) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/WPSOffice 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | [Script] 7 | http-response ^https?:\/\/.*?account\.wps\.(com|cn)(:\d+)?\/api\/users\/\w+\/overview$ script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/WPSOffice/Script/WPS.js, requires-body=true, timeout=10, tag=WPS会员 8 | 9 | [MITM] 10 | hostname = account.wps.cn,*account.wps.com 11 | -------------------------------------------------------------------------------- /WPSOffice/QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=WPS会员 2 | #!desc=WPS解锁本地会员,支持大陆版以及非大陆版(2022.07.10) 3 | #!openUrl=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/WPSOffice 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | 6 | ^https?:\/\/.*?account\.wps\.(com|cn)(:\d+)?\/api\/users\/\w+\/overview$ url script-response-body https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/WPSOffice/Script/WPS.js 7 | 8 | hostname = account.wps.cn,*account.wps.com 9 | -------------------------------------------------------------------------------- /WPSOffice/Script/WPS.js: -------------------------------------------------------------------------------- 1 | /* 2 | 脚本功能:解锁WPS本地会员 3 | 脚本作者:R·E 4 | 支持版本:商店最新 11.24.0(US) 11.26.1(CN) 5 | 更新时间:2022.07.10 6 | 问题反馈:https://t.me/Functional_Store_Hub 7 | 使用声明:⚠️⚠️⚠️此脚本仅供学习与交流,禁止转载与贩卖!⚠️⚠️⚠️ 8 | */ 9 | var a='{\x22result\x22:\x22ok\x22,\x22privilege\x22:[],\x22total_cost\x22:0,\x22level\x22:88,\x22wealth\x22:0,\x22exp\x22:0,\x22vip\x22:{\x22has_ad\x22:0,\x22enabled\x22:[]},\x22total_buy\x22:0}';var b=JSON['parse'](a);const c=new Array('data_recover','ocr','pdf2doc','pdf_merge','pdf_sign','pdf_split');const d=new Array(['超级会员',0x28],['WPS会员',0x14],['稻壳会员',0xc]);const e=0x70db6800;b['server_time']=e;b['userid']=e;b['vip']['name']=d[0x0][0x0];b['vip']['memberid']=d[0x0][0x1];b['vip']['expire_time']=e;for(i=0x0;i- 14 | https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js 15 | match: >- 16 | https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices 17 | body_required: true 18 | mitm: 19 | hostnames: 20 | - 'www.xmind.cn' 21 | - 'www.xmind.net' 22 | - 'www.xmind.app' 23 | -------------------------------------------------------------------------------- /Xmind/Xmind.Loon.plugin: -------------------------------------------------------------------------------- 1 | #!name=Xmind思维导图 2 | #!desc=解锁Xmind思维导图订阅到2030年 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Xmind 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=Xmind.Loon.plugin 9 | 10 | [Script] 11 | http-response https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js,requires-body=true, timeout=10, tag=Xmind思维导图 12 | 13 | [MITM] 14 | hostname = www.xmind.cn, www.xmind.net, www.xmind.app 15 | -------------------------------------------------------------------------------- /Xmind/Xmind.QuantumultX.snippet: -------------------------------------------------------------------------------- 1 | #!name=Xmind思维导图 2 | #!desc=解锁Xmind思维导图订阅到2030年 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Xmind 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=Xmind.QuantumultX.snippet 9 | 10 | [rewrite_local] 11 | https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices url script-response-body https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js 12 | 13 | [mitm] 14 | hostname = www.xmind.cn, www.xmind.net, www.xmind.app 15 | -------------------------------------------------------------------------------- /Xmind/Xmind.Shadowrocket.module: -------------------------------------------------------------------------------- 1 | #!name=Xmind思维导图 2 | #!desc=解锁Xmind思维导图订阅到2030年 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Xmind 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=Xmind.Shadowrocket.model 9 | 10 | [Script] 11 | Xmind思维导图=type=http-response,pattern=https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% www.xmind.cn, www.xmind.net, www.xmind.app 15 | -------------------------------------------------------------------------------- /Xmind/Xmind.Stash.stoverride: -------------------------------------------------------------------------------- 1 | #!name=Xmind思维导图 2 | #!desc=解锁Xmind思维导图订阅到2030年 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Xmind 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=Xmind.Stash.stoverride 9 | 10 | name: Xmind思维导图 11 | desc: 解锁Xmind思维导图订阅到2030年 By R·E @Functional_Store_Hub 12 | http: 13 | mitm: 14 | - 'www.xmind.cn' 15 | - 'www.xmind.net' 16 | - 'www.xmind.app' 17 | script: 18 | - match: https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices 19 | name: Xmind 20 | type: response 21 | require-body: true 22 | timeout: 10 23 | script-providers: 24 | Xmind: 25 | url: https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js 26 | interval: 86400 27 | -------------------------------------------------------------------------------- /Xmind/Xmind.Surge.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=Xmind思维导图 2 | #!desc=解锁Xmind思维导图订阅到2030年 3 | #!openUrl=https://t.me/Functional_Store_Hub 4 | #!author=@R·E https://t.me/Functional_Store_Hub 5 | #!homepage=https://github.com/I-am-R-E/Functional-Store-Hub/tree/Master/Xmind 6 | #!manual=https://t.me/Functional_Store_Hub/10 7 | #!icon=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Files/icon.png 8 | #!other=Xmind.Surge.sgmodel 9 | 10 | [Script] 11 | Xmind思维导图=type=http-response,pattern=https?:\/\/www\.xmind\.(cn|net|app)\/\_res\/devices,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/I-am-R-E/Functional-Store-Hub/Master/Xmind/Script/Xmind.js,script-update-interval=0 12 | 13 | [MITM] 14 | hostname = %APPEND% www.xmind.cn, www.xmind.net, www.xmind.app 15 | -------------------------------------------------------------------------------- /ZhiHuExtremeOptimization/1: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------