diff --git a/52pojie-DailyBonus/52pojie.js b/52pojie-DailyBonus/52pojie.js new file mode 100644 index 0000000000..c7e169b703 --- /dev/null +++ b/52pojie-DailyBonus/52pojie.js @@ -0,0 +1,133 @@ +/* +吾爱破解签到脚本 + +更新时间: 2022.6.18 +脚本兼容: QuantumultX, Surge, Loon, Node.js +电报频道: @NobyDa +问题反馈: @NobyDa_bot + +************************ +QX, Surge, Loon说明: +************************ +手动登录 https://www.52pojie.cn/home.php 如通知成功获取cookie, 则可以使用此签到脚本. +获取Cookie后, 请将Cookie脚本禁用并移除主机名, 以免产生不必要的MITM. +脚本将在每天上午9点执行, 您可以修改执行时间. + +************************ +Node.js说明: +************************ +需自行安装"got"与"iconv-lite"模块. 例: npm install got iconv-lite -g + +抓取Cookie说明: +浏览器打开 https://www.52pojie.cn/home.php 登录账号后, 开启抓包软件并刷新页面. +抓取该URL请求头下的Cookie字段, 填入以下CookieWA的单引号内即可. */ + +const CookieWA = ''; + +//Bark APP 通知推送Key +const barkKey = ''; + +/*********************** +Surge 4.2.0+ 脚本配置: +************************ + +[Script] +吾爱签到 = type=cron,cronexp=0 9 * * *,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +吾爱获取Cookie = type=http-request,pattern=https:\/\/www\.52pojie\.cn\/home\.php\?,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +[MITM] +hostname= www.52pojie.cn + +************************ +QuantumultX 远程脚本配置: +************************ + +[task_local] +# 吾爱签到 +0 9 * * * https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +[rewrite_local] +# 获取Cookie +https:\/\/www\.52pojie\.cn\/home\.php\? url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +[mitm] +hostname= www.52pojie.cn + +************************ +Loon 2.1.0+ 脚本配置: +************************ + +[Script] +# 吾爱签到 +cron "0 9 * * *" script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +# 获取Cookie +http-request https:\/\/www\.52pojie\.cn\/home\.php\? script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js + +[Mitm] +hostname= www.52pojie.cn +*/ + +const $ = API('nobyda_52pojie'); +const date = new Date(); +const reqData = { + url: 'https://www.52pojie.cn/home.php?mod=task&do=apply&id=2', + headers: { + Cookie: CookieWA || $.read("COOKIE"), + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0", + } +}; +if ($.env.isRequest) { + GetCookie() +} else if (!reqData.headers.Cookie) { + $.notify('吾爱破解', ``, `未填写/未获取Cookie!`); +} else if (!reqData.headers.Cookie.includes('_auth=')) { + $.notify('吾爱破解', ``, `Cookie关键授权字段缺失, 需重新获取!`); +} else { + $.http.put(reqData) + .then((resp) => { + if (resp.body.match(/(ÒÑÍê³É|\u606d\u559c\u60a8|��̳�š��ᰮ�ƽ�)/)) { + $.msgBody = date.getMonth() + 1 + "月" + date.getDate() + "日, 签到成功 🎉" + } else if (resp.body.match(/(ÄúÒÑ|\u4e0b\u671f\u518d\u6765|>��Ǹ������)/)) { + $.msgBody = date.getMonth() + 1 + "月" + date.getDate() + "日, 已签过 ⚠️" + } else if (resp.body.match(/(ÏȵǼ|\u9700\u8981\u5148\u767b\u5f55|�Ҫ�ȵ�¼���ܼ�)/)) { + $.msgBody = "签到失败, Cookie失效 ‼️‼️" + } else if (resp.statusCode == 403) { + $.msgBody = "服务器暂停签到 ⚠️" + } else { + $.msgBody = "脚本待更新 ‼️‼️" + } + }) + .catch((err) => ($.msgBody = `签到失败 ‼️‼️\n${err || err.message}`)) + .finally(async () => { + if (barkKey) { + await BarkNotify($, barkKey, '吾爱破解', $.msgBody); + } + $.notify('吾爱破解', ``, $.msgBody); + $.done(); + }) +} + +function GetCookie() { + const TM = $.read("TIME"); + const CK = $request.headers['Cookie'] || $request.headers['cookie']; + if (CK && CK.includes('_auth=')) { + $.write(CK, "COOKIE"); + if (!TM || TM && (Date.now() - TM) / 1000 >= 21600) { + $.notify("吾爱破解", "", `写入Cookie成功 🎉`); + $.write(JSON.stringify(Date.now()), "TIME"); + } else { + $.info(`吾爱破解\n写入Cookie成功 🎉`) + } + } else { + $.info(`吾爱破解\n写入Cookie失败, 关键值缺失`) + } + $.done() +} + +//Bark APP notify +async function BarkNotify(c, k, t, b) { for (let i = 0; i < 3; i++) { console.log(`🔷Bark notify >> Start push (${i + 1})`); const s = await new Promise((n) => { c.post({ url: 'https://api.day.app/push', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: t, body: b, device_key: k, ext_params: { group: t } }) }, (e, r, d) => r && r.status == 200 ? n(1) : n(d || e)) }); if (s === 1) { console.log('✅Push success!'); break } else { console.log(`❌Push failed! >> ${s.message || s}`) } } }; + +//https://github.com/Peng-YM/QuanX/tree/master/Tools/OpenAPI +function ENV() { const e = "function" == typeof require && "undefined" != typeof $jsbox; return { isQX: "undefined" != typeof $task, isLoon: "undefined" != typeof $loon, isSurge: "undefined" != typeof $httpClient && "undefined" == typeof $loon, isBrowser: "undefined" != typeof document, isNode: "function" == typeof require && !e, isJSBox: e, isRequest: "undefined" != typeof $request, isScriptable: "undefined" != typeof importModule } } function HTTP(e = { baseURL: "" }) { function t(t, a) { a = "string" == typeof a ? { url: a } : a; const h = e.baseURL; h && !d.test(a.url || "") && (a.url = h ? h + a.url : a.url), a.body && a.headers && !a.headers["Content-Type"] && (a.headers["Content-Type"] = "application/x-www-form-urlencoded"), a = { ...e, ...a }; const c = a.timeout, l = { onRequest: () => { }, onResponse: e => e, onTimeout: () => { }, ...a.events }; let f, y; if (l.onRequest(t, a), s) f = $task.fetch({ method: t, ...a }); else if (o || n) f = new Promise((e, s) => { $httpClient[t.toLowerCase()](a, (t, o, n) => { t ? s(t) : e({ statusCode: o.status || o.statusCode, headers: o.headers, body: n }) }) }); else if (r) { const e = require("got"), s = require("iconv-lite"); f = new Promise((o, n) => { e[t.toLowerCase()](a).then(e => o({ statusCode: e.statusCode, headers: e.headers, body: s.decode(e.rawBody, "utf-8") })).catch(n) }) } else if (i) { const e = new Request(a.url); e.method = t, e.headers = a.headers, e.body = a.body, f = new Promise((t, s) => { e.loadString().then(s => { t({ statusCode: e.response.statusCode, headers: e.response.headers, body: s }) }).catch(e => s(e)) }) } else u && (f = new Promise((e, s) => { fetch(a.url, { method: t, headers: a.headers, body: a.body }).then(e => e.json()).then(t => e({ statusCode: t.status, headers: t.headers, body: t.data })).catch(s) })); const p = c ? new Promise((e, s) => { y = setTimeout(() => (l.onTimeout(), s(`${t} URL: ${a.url} exceeds the timeout ${c} ms`)), c) }) : null; return (p ? Promise.race([p, f]).then(e => (clearTimeout(y), e)) : f).then(e => l.onResponse(e)) } const { isQX: s, isLoon: o, isSurge: n, isScriptable: i, isNode: r, isBrowser: u } = ENV(), a = ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "PATCH"], d = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/, h = {}; return a.forEach(e => h[e.toLowerCase()] = (s => t(e, s))), h } function API(e = "untitled", t = !1) { const { isQX: s, isLoon: o, isSurge: n, isNode: i, isJSBox: r, isScriptable: u } = ENV(); return new class { constructor(e, t) { this.name = e, this.debug = t, this.http = HTTP(), this.env = ENV(), this.node = (() => { if (i) { const e = require("fs"); return { fs: e } } return null })(), this.initCache(); const s = (e, t) => new Promise(function (s) { setTimeout(s.bind(null, t), e) }); Promise.prototype.delay = function (e) { return this.then(function (t) { return s(e, t) }) } } initCache() { if (s && (this.cache = JSON.parse($prefs.valueForKey(this.name) || "{}")), (o || n) && (this.cache = JSON.parse($persistentStore.read(this.name) || "{}")), i) { let e = "root.json"; this.node.fs.existsSync(e) || this.node.fs.writeFileSync(e, JSON.stringify({}), { flag: "wx" }, e => console.log(e)), this.root = {}, e = `${this.name}.json`, this.node.fs.existsSync(e) ? this.cache = JSON.parse(this.node.fs.readFileSync(`${this.name}.json`)) : (this.node.fs.writeFileSync(e, JSON.stringify({}), { flag: "wx" }, e => console.log(e)), this.cache = {}) } } persistCache() { const e = JSON.stringify(this.cache, null, 2); s && $prefs.setValueForKey(e, this.name), (o || n) && $persistentStore.write(e, this.name), i && (this.node.fs.writeFileSync(`${this.name}.json`, e, { flag: "w" }, e => console.log(e)), this.node.fs.writeFileSync("root.json", JSON.stringify(this.root, null, 2), { flag: "w" }, e => console.log(e))) } write(e, t) { if (this.log(`SET ${t}`), -1 !== t.indexOf("#")) { if (t = t.substr(1), n || o) return $persistentStore.write(e, t); if (s) return $prefs.setValueForKey(e, t); i && (this.root[t] = e) } else this.cache[t] = e; this.persistCache() } read(e) { return this.log(`READ ${e}`), -1 === e.indexOf("#") ? this.cache[e] : (e = e.substr(1), n || o ? $persistentStore.read(e) : s ? $prefs.valueForKey(e) : i ? this.root[e] : void 0) } delete(e) { if (this.log(`DELETE ${e}`), -1 !== e.indexOf("#")) { if (e = e.substr(1), n || o) return $persistentStore.write(null, e); if (s) return $prefs.removeValueForKey(e); i && delete this.root[e] } else delete this.cache[e]; this.persistCache() } notify(e, t = "", a = "", d = {}) { const h = d["open-url"], c = d["media-url"]; if (s && $notify(e, t, a, d), n && $notification.post(e, t, a + `${c ? "\n多媒体:" + c : ""}`, { url: h }), o) { let s = {}; h && (s.openUrl = h), c && (s.mediaUrl = c), "{}" === JSON.stringify(s) ? $notification.post(e, t, a) : $notification.post(e, t, a, s) } if (i || u) { const s = a + (h ? `\n点击跳转: ${h}` : "") + (c ? `\n多媒体: ${c}` : ""); if (r) { const o = require("push"); o.schedule({ title: e, body: (t ? t + "\n" : "") + s }) } else console.log(`${e}\n${t}\n${s}\n\n`) } } log(e) { this.debug && console.log(`[${this.name}] LOG: ${this.stringify(e)}`) } info(e) { console.log(`[${this.name}] INFO: ${this.stringify(e)}`) } error(e) { console.log(`[${this.name}] ERROR: ${this.stringify(e)}`) } wait(e) { return new Promise(t => setTimeout(t, e)) } done(e = {}) { s || o || n ? $done(e) : i && !r && "undefined" != typeof $context && ($context.headers = e.headers, $context.statusCode = e.statusCode, $context.body = e.body) } stringify(e) { if ("string" == typeof e || e instanceof String) return e; try { return JSON.stringify(e, null, 2) } catch (e) { return "[object Object]" } } }(e, t) } \ No newline at end of file diff --git a/BDTieBa-DailyBonus/TieBa.js b/BDTieBa-DailyBonus/TieBa.js new file mode 100644 index 0000000000..104b018db5 --- /dev/null +++ b/BDTieBa-DailyBonus/TieBa.js @@ -0,0 +1,315 @@ +/********************************* +百度贴吧签到脚本 + +脚本原作者: @sazs34 +平台兼容: QuantumultX, Surge, Loon +更新日期: 2024/06/01 + +获取Cookie说明: +打开百度贴吧App后(AppStore中国区, 非内部版),点击"我的", 如通知成功获取cookie则可以使用该脚本. + +********************************* +Surge(iOS 5.9.0+/macOS 5.5.0+)模块: +https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/TieBaDailyBonus.sgmodule + +********************************* +QuantumultX 任务仓库(Gallery)订阅: +https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +工具&分析->HTTP请求->右上角添加任务仓库->选择百度贴吧签到脚本添加定时任务和附加组件 + +********************************* +Loon 脚本订阅(非插件): +https://raw.githubusercontent.com/NobyDa/Script/master/Loon/Loon_Daily_bonus.plugin + +添加后请按需启用脚本 + +*********************************/ + + +var $nobyda = nobyda(); +var cookieVal = $nobyda.read("CookieTB"); +var useParallel = 0; //0自动切换,1串行,2并行(当贴吧数量大于30个以后,并行可能会导致QX崩溃,所以您可以自动切换) +var singleNotifyCount = 20; //想签到几个汇总到一个通知里,这里就填几个(比如我有13个要签到的,这里填了5,就会分三次消息通知过去) +var process = { + total: 0, + result: [ + // { + // bar:'', + // level:0, + // exp:0, + // errorCode:0, + // errorMsg:'' + // } + ] +}; +var url_fetch_sign = { + url: "https://tieba.baidu.com/mo/q/newmoindex", + headers: { + "Content-Type": "application/octet-stream", + Referer: "https://tieba.baidu.com/index/tbwise/forum", + Cookie: cookieVal, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366" + } +}; +var url_fetch_add = { + url: "https://tieba.baidu.com/sign/add", + method: "POST", + headers: { + "Content-Type": "application/x-www-form-urlencoded", + Cookie: cookieVal, + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/14B100 UCBrowser/10.7.5.650 Mobile" + }, + body: "" +}; +if ($nobyda.isRequest) { + GetCookie() +} else { + signTieBa() +} + + +function signTieBa() { + useParallel = $nobyda.read("BDTB_DailyBonus_Mode") || useParallel + singleNotifyCount = $nobyda.read("BDTB_DailyBonus_notify") || singleNotifyCount + if (!cookieVal) { + $nobyda.notify("贴吧签到", "签到失败", "未获取到cookie"); + return $nobyda.done() + } + $nobyda.get(url_fetch_sign, function(error, response, data) { + if (error) { + $nobyda.notify("贴吧签到", "签到失败", "未获取到签到列表"); + $nobyda.done() + } else { + // $nobyda.notify("贴吧签到", "贴吧列表", response.body); + var body = JSON.parse(data); + var isSuccessResponse = body && body.no == 0 && body.error == "success" && body.data.tbs; + if (!isSuccessResponse) { + $nobyda.notify("贴吧签到", "签到失败", (body && body.error) ? body.error : "接口数据获取失败"); + return $nobyda.done() + } + process.total = body.data.like_forum.length; + if (body.data.like_forum && body.data.like_forum.length > 0) { + if (useParallel == 1 || (useParallel == 0 && body.data.like_forum.length >= 30)) { + signBars(body.data.like_forum, body.data.tbs, 0); + } else { + for (const bar of body.data.like_forum) { + signBar(bar, body.data.tbs); + } + } + } else { + $nobyda.notify("贴吧签到", "签到失败", "请确认您有关注的贴吧"); + return $nobyda.done() + } + } + }) +} + +function signBar(bar, tbs) { + if (bar.is_sign == 1) { //已签到的,直接不请求接口了 + process.result.push({ + bar: `${bar.forum_name}`, + level: bar.user_level, + exp: bar.user_exp, + errorCode: 9999, + errorMsg: "已签到" + }); + checkIsAllProcessed(); + } else { + url_fetch_add.body = `tbs=${tbs}&kw=${bar.forum_name}&ie=utf-8`; + $nobyda.post(url_fetch_add, function(error, response, data) { + if (error) { + process.result.push({ + bar: bar.forum_name, + errorCode: 999, + errorMsg: '接口错误' + }); + checkIsAllProcessed(); + } else { + try { + var addResult = JSON.parse(data); + if (addResult.no == 0) { + process.result.push({ + bar: bar.forum_name, + errorCode: 0, + errorMsg: `获得${addResult.data.uinfo.cont_sign_num}积分,第${addResult.data.uinfo.user_sign_rank}个签到` + }); + } else { + process.result.push({ + bar: bar.forum_name, + errorCode: addResult.no, + errorMsg: addResult.error + }); + } + } catch (e) { + $nobyda.notify("贴吧签到", "贴吧签到数据处理异常", JSON.stringify(e)); + $nobyda.done() + } + checkIsAllProcessed(); + } + }) + } +} + +function signBars(bars, tbs, index) { + //$nobyda.notify("贴吧签到", `进度${index}/${bars.length}`, ""); + if (index >= bars.length) { + //$nobyda.notify("贴吧签到", "签到已满", `${process.result.length}`); + checkIsAllProcessed(); + } else { + var bar = bars[index]; + if (bar.is_sign == 1) { //已签到的,直接不请求接口了 + process.result.push({ + bar: `${bar.forum_name}`, + level: bar.user_level, + exp: bar.user_exp, + errorCode: 9999, + errorMsg: "已签到" + }); + signBars(bars, tbs, ++index); + } else { + url_fetch_add.body = `tbs=${tbs}&kw=${bar.forum_name}&ie=utf-8`; + $nobyda.post(url_fetch_add, function(error, response, data) { + if (error) { + process.result.push({ + bar: bar.forum_name, + errorCode: 999, + errorMsg: '接口错误' + }); + signBars(bars, tbs, ++index); + } else { + try { + var addResult = JSON.parse(data); + if (addResult.no == 0) { + process.result.push({ + bar: bar.forum_name, + errorCode: 0, + errorMsg: `获得${addResult.data.uinfo.cont_sign_num}积分,第${addResult.data.uinfo.user_sign_rank}个签到` + }); + } else { + process.result.push({ + bar: bar.forum_name, + errorCode: addResult.no, + errorMsg: addResult.error + }); + } + } catch (e) { + $nobyda.notify("贴吧签到", "贴吧签到数据处理异常", JSON.stringify(e)); + $nobyda.done() + } + signBars(bars, tbs, ++index) + } + }) + } + } +} + +function checkIsAllProcessed() { + //$nobyda.notify("贴吧签到", `最终进度${process.result.length}/${process.total}`, ""); + if (process.result.length != process.total) return; + for (var i = 0; i < Math.ceil(process.total / singleNotifyCount); i++) { + var notify = ""; + var spliceArr = process.result.splice(0, singleNotifyCount); + var notifySuccessCount = 0; + for (const res of spliceArr) { + if (res.errorCode == 0 || res.errorCode == 9999) { + notifySuccessCount++; + } + if (res.errorCode == 9999) { + notify += `【${res.bar}】已经签到,当前等级${res.level},经验${res.exp} +`; + } else { + notify += `【${res.bar}】${res.errorCode==0?'签到成功':'签到失败'},${res.errorCode==0?res.errorMsg:('原因:'+res.errorMsg)} +`; + } + } + $nobyda.notify("贴吧签到", `签到${spliceArr.length}个,成功${notifySuccessCount}个`, notify); + $nobyda.done() + } +} + +function GetCookie() { + let headerCookie = $request.headers["Cookie"] || $request.headers["cookie"]; + if (headerCookie && headerCookie.includes('BDUSS=')) { + if (!cookieVal) { + $nobyda.notify("写入百度贴吧Cookie成功 🎉", "", ""); + } else { + console.log(`写入百度贴吧Cookie成功 🎉`); + } + $nobyda.write(headerCookie, "CookieTB") + } else { + console.log(`写入Cookie失败, BDUSS值缺失. `); + } + return $nobyda.done(); +} + +function nobyda() { + const isRequest = typeof $request != "undefined" + const isSurge = typeof $httpClient != "undefined" + const isQuanX = typeof $task != "undefined" + const notify = (title, subtitle, message) => { + if (isQuanX) $notify(title, subtitle, message) + if (isSurge) $notification.post(title, subtitle, message) + } + const write = (value, key) => { + if (isQuanX) return $prefs.setValueForKey(value, key) + if (isSurge) return $persistentStore.write(value, key) + } + const read = (key) => { + if (isQuanX) return $prefs.valueForKey(key) + if (isSurge) return $persistentStore.read(key) + } + const adapterStatus = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + const get = (options, callback) => { + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "GET" + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) $httpClient.get(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + const post = (options, callback) => { + if (isQuanX) { + if (typeof options == "string") options = { + url: options + } + options["method"] = "POST" + $task.fetch(options).then(response => { + callback(null, adapterStatus(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (isSurge) { + $httpClient.post(options, (error, response, body) => { + callback(error, adapterStatus(response), body) + }) + } + } + const done = (value = {}) => { + if (isQuanX) return $done(value) + if (isSurge) isRequest ? $done(value) : $done() + } + return { + isRequest, + notify, + write, + read, + get, + post, + done + } +}; \ No newline at end of file diff --git a/Bahamut/BahamutAnimeAds.js b/Bahamut/BahamutAnimeAds.js new file mode 100644 index 0000000000..09a88fcc7e --- /dev/null +++ b/Bahamut/BahamutAnimeAds.js @@ -0,0 +1,68 @@ +/************************ + +动画疯,屏蔽播放广告脚本 (黑屏25秒自动播放) +由于动画疯强制验证观看广告时间,无法实现真正意义上的跳过广告。 + +Surge(4.11+)模块: +https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/BahamutAnimeAds.sgmodule + +QX(1.0.27+)用户请自行搭配KOP-XIAO资源解析器重写引用Surge模块。 + +************************/ + +let [req, rsp] = [$request, JSON.parse($response.body || '{}')]; + +runs().catch((err) => { + console.log(`[BahamutAnime] ERROR: ${err.message||err}`) +}).finally(() => $done({ + body: JSON.stringify(rsp) +})); + +async function runs() { + if (req.url.includes('token.php')) { + if (rsp.ad) { + rsp.ad.minor = []; + rsp.ad.major = []; + } + if (rsp.data && rsp.data.ad) { + rsp.data.ad.minor = []; + rsp.data.ad.major = []; + } + } + if (req.url.includes('m3u8.php') && (rsp.message || rsp.error)) { + await adURL(''); + await new Promise(r => setTimeout(r, 25000)); + await adURL('end'); + rsp = await playURL(); + } +} + +function adURL(str) { + return new Promise((res) => { + get({ + url: `https://api.gamer.com.tw/mobile_app/anime/v1/stat_ad.php?ad=${str}&schedule=0&sn=${req.url.split(/sn=(\d+)/i)[1]}`, + headers: req.headers + }, (err, resp, data) => res()) + }) +} + +function playURL() { + return new Promise((res) => { + get({ + url: req.url, + headers: req.headers + }, (err, resp, data) => res(JSON.parse(data || '{}'))) + }) +} + +function get(options, callback) { + if (typeof $task != "undefined") { + $task.fetch(options).then(response => { + response["status"] = response.statusCode + callback(null, response, response.body) + }, reason => callback(reason.error, null, null)) + } + if (typeof $httpClient != "undefined") { + $httpClient.get(options, callback) + } +} \ No newline at end of file diff --git a/Bahamut/BahamutDailyBonus.js b/Bahamut/BahamutDailyBonus.js new file mode 100644 index 0000000000..42ca42997a --- /dev/null +++ b/Bahamut/BahamutDailyBonus.js @@ -0,0 +1,358 @@ +/************************ + +巴哈姆特签到脚本 +包含主站签到、公会签到、动画疯答题等 + +脚本兼容: Surge、QuantumultX、Loon、Shadowrocket、Node.js +适配过程: https://nobyda.github.io/2021/07/24/Bahamut_daily_bonus_js_example +BoxJs订阅: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json + +************************* +【 签到脚本注意事项 】: +************************* + +1. 该脚本需要进入BoxJs或脚本内填写账号密码后, 方可使用. +2. 不建议在凌晨执行,因需要获取动画疯题目答案; 默认配置将在每天的早上8:00执行. +3. 如需使用Node.js运行该脚本, 则需安装got、tough-cookie模块 + +************************* +【 Surge & Loon 脚本配置 】: +************************* + +[Script] +cron "0 8 * * *" script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutDailyBonus.js, wake-system=1, timeout=300 + +************************* +【 QX 1.0.10+ 脚本配置 】 : +************************* + +[task_local] +0 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutDailyBonus.js, tag=巴哈姆特签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/bahamutGame.png + +************************/ + +// 以下全局变量中的持久化接口为BoxJs预留, 以便修改 +// 把兼容函数定义到$中, 以便统一调用 +const $ = new Env('巴哈姆特'); + +// 用户名 +$.uid = $.getdata('@ND_BAHA.ID') || 'YourUserName'; + +// 用户密码 +$.pwd = $.getdata('@ND_BAHA.PW') || 'YourUserPassword'; + +// 两步验证Token, 16位数, 未设置请保持默认 +$.totp = $.getdata('@ND_BAHA.TOTP') || ''; + +// 是否开启广告签到,true/false,默认关闭 (该功能耗时过长) +$.needSignAds = $.getdata('@ND_BAHA.ADS') || false; + +// 是否自动签到公会,true/false,默认开启 +$.needSignGuild = $.getdata('@ND_BAHA.GUILD') || true; + +// 是否自动答题动画疯,true/false,默认开启 (不保证100%答题正确) +$.needAnswer = $.getdata('@ND_BAHA.ANSWER') || true; + +//Bark APP 通知推送Key +$.barkKey = ''; + +// 为通知准备的空数组 +$.notifyMsg = []; + +(async function() { // 立即运行的匿名异步函数 + await BahamutLogin(); // 登录 + await BahamutGuildSign(); //签到巴哈公会 + await BahamutSign(); //签到巴哈 + await BahamutAnswer(); //动画疯答题 +})().catch((e) => $.notifyMsg.push(e.message || e)) //捕获登录函数等抛出的异常, 并把原因添加到全局变量(通知) + .finally(async () => { //finally在catch之后无论有无异常都会执行 + if ($.barkKey) { //如果已填写Bark Key + await BarkNotify($, $.barkKey, $.name, $.notifyMsg.join('\n')); //推送Bark通知 + }; + $.msg($.name, ``, $.notifyMsg.join('\n'), { + 'open-url': 'crazyanime://', //动画疯url scheme + 'media-url': 'https://cdn.jsdelivr.net/gh/NobyDa/mini@master/Color/bahamutClear.png' //通知图片 + }); //带上总结推送通知 + $.done(); //调用Surge、QX内部特有的函数, 用于退出脚本执行 + }); + +async function BahamutLogin(retry = 3, interval = 1000) { //登录函数,拿到Set-Cookie + + //登录成功: {"success":true,"userid":"DGIE","nickname":"coco","gold":152769,"gp":0,"avatar":"https:\/\/avatar2.bahamut.com.tw\/avataruserpic\/dgie.png","avatar_s":"https:\/\/avatar2.bahamut.com.tw\/avataruserpic\/dgie_s.png","lv":6} + //账号错误: {"code":0,"message":"查無此人:SDFOUGB"} + //密码错误: {"code":0,"message":"帳號、密碼或驗證碼錯誤!"} + //验证码错误: {"code":0,"message":"驗證碼錯誤"} + + for (let i = 0; i < retry; i++) { //循环登录(默认三次) + if (i > 0) { + $.log('', `🔶尝试第${i+1}次登录...`); + await $.wait(interval); //延迟一秒 + }; + const reqUrl = { + url: 'https://api.gamer.com.tw/mobile_app/user/v3/do_login.php', //登录接口 + headers: { //请求头 + 'Cookie': 'ckAPP_VCODE=6666' //Cookie中的ckAPP_VCODE为必须 + }, + //请求体放入用户名和密码,并把它uri编码 + body: `uid=${encodeURIComponent($.uid)}&passwd=${encodeURIComponent($.pwd)}&vcode=6666${$.totp?`&twoStepAuth=${TOTP($.totp)}`:``}` + }; + const res = await $.http.post(reqUrl) //使用post请求查询 (兼容函数实际上返回Promise实例对象,以便后续调用时可以实现顺序执行异步函数) + .then(async (resp) => { //请求成功的处理 + const body = JSON.parse(resp.body); //解析响应体json为对象 + if (body.userid) { //如果成功返回用户信息 + $.BAHARUNE = JSON.stringify(resp.headers).split(/(BAHARUNE=\w+)/)[1]; + return `✅巴哈姆特登录成功`; + } else { //否则登录失败 (例如密码错误) + const failMsg = body.error ? body.error.message : null; //判断签到失败原因 + throw new Error(`${body.message||failMsg||'原因未知'}`); //带上原因抛出异常 + } + }).catch((err) => `❌登录失败\n❌${err.message || err}`); + $.log('', res.message || res); + if (res === `✅巴哈姆特登录成功`) { + break; //登录成功则跳出循环 + } else if (retry == i + 1) { //如果最后一次重试仍登录失败 + throw new Error(res.message || res); //抛出错误, 被调用该函数时的catch捕获, 脚本结束. + } + } +} + +function BahamutSign() { //查询巴哈姆特签到Token + return $.http.get({ //使用get方法 (Promise实例对象) 查询签到Token + url: 'https://www.gamer.com.tw/ajax/get_csrf_token.php', // 查询Token接口 + headers: {} //请求头, 客户端将自动设置Cookie字段 + }).then(async (resp) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作 + if (resp.body) { //如果签到Token获取成功 + $.log('', '✅获取签到令牌成功'); //打印日志 + const sign = await StartSignBahamut(resp.body); //带上Token开始签到 + $.notifyMsg.push(`主页签到: 成功, 已连续签到${sign}天`); //添加到全局变量备用 (通知) + await StartAdsBonus(resp.body.slice(0, 16), 'start'); //执行广告签到 + } else { //否则抛出异常 + throw new Error('获取签到令牌失败'); //带上原因被下面catch捕获 + } + }) + .catch(err => { + $.notifyMsg.push(`主页签到: ${err.message||err}`); //添加到全局变量备用 (通知) + $.log('', `❌巴哈姆特签到失败`, `❌${err.message||err}`); + }); // 捕获异常, 打印日志 +} + +function StartSignBahamut(token) { //巴哈姆特签到 + + //签到成功: {"data":{"days":1,"dialog":"","prjSigninDays":0}} + //已签过: {"error":{"code":0,"message":"今天您已經簽到過了喔","status":"","details":[]}} + //未登录: {"error":{"code":401,"message":"尚未登入","status":"NO_LOGIN","details":[]}} + //令牌过期: {"error":{"code":403,"message":"網頁已過期","status":"CSRF_TOKEN_ERROR","details":[]}} + + return $.http.post({ //使用post方法 (Promise实例对象) 进行签到 + url: 'https://www.gamer.com.tw/ajax/signin.php', //巴哈姆特签到接口 + headers: {}, //请求头, 客户端将自动设置Cookie字段 + body: `action=1&token=${token}` //请求体带上查询到的签到Token + }) + .then(res => { // 网络请求成功的处理 + const body = JSON.parse(res.body); //解析响应体json为对象 + if (body.data) { // 如果签到成功 (判断预期响应格式) + $.log('', '✅巴哈姆特签到成功', `✅已连续签到${body.data.days}天`); //打印日志 + return body.data.days; //返回签到天数 + } else { //否则签到失败 + const failMsg = body.error ? body.error.message : null; //判断签到失败原因 + throw new Error(failMsg || body.message || '未知'); //带上原因抛出异常 + } + }); //未写catch,如果签到失败或其他错误,则被调用该函数时的catch捕获 +} + +function StartAdsBonus(token, type) { + if ($.needSignAds === false || $.needSignAds === 'false') { //如果用户选择不签到广告 + return; //退出广告签到函数 + } + return $.http.post({ //使用post方法 (Promise实例对象) 进行签到 + url: 'https://api.gamer.com.tw/mobile_app/bahamut/v1/sign_in_ad_' + type + '.php', //双倍巴币广告奖励接口 + headers: { + 'X-Bahamut-Csrf-Token': token, //前16位签到Token + 'Cookie': `ckBahamutCsrfToken=${token};${$.BAHARUNE}` //前16位签到Token和重新设置的Cookie + } + }) + .then(async (res) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作 + const body = JSON.parse(res.body); //解析响应体json为对象 + if (body.data && body.data.finished == 0 && type == 'start') { //如果成功激活广告奖励 + $.log('', '🔶正在执行广告签到 (30s)'); //打印日志 + await $.wait(30000); //等待30秒 + await StartAdsBonus(token, 'finished'); //领取奖励函数 + } else if (body.data && body.data.finished == 1) { //如果广告奖励领取成功 + $.log('', '✅领取广告奖励成功'); //打印日志 + $.notifyMsg.push('广告签到: 成功, 已领取双倍签到奖励'); //添加到全局变量备用 (通知) + } else { + const failMsg = body.error ? body.error.message : null; //判断签到失败原因 + throw new Error(failMsg || body.message || '未知'); //带上原因抛出异常 + } + }) + .catch(err => { + $.notifyMsg.push(`广告签到: ${err.message||err}`); //添加到全局变量备用 (通知) + $.log('', `❌广告奖励签到失败`, `❌${err.message||err}`); + }); // 捕获异常, 打印日志 +} + +function BahamutGuildSign() { //巴哈姆特查询公会列表 + if ($.needSignGuild === false || $.needSignGuild === 'false') { //如果用户选择不签到公会 + return; //退出公会签到函数 + } + return $.http.get({ //使用get请求查询公会列表 (Promise实例对象) + url: 'https://api.gamer.com.tw/ajax/common/topBar.php?type=forum', // 查询公会列表接口 + headers: {} //请求头, 客户端将自动设置Cookie字段 + }) + .then(async (resp) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作 + const list = (resp.body.replace(/\n/g, '').match(/guild\.php\?g?sn=\d.+?<\/p>/g) || []) //正则过滤公会列表大致内容 + .map(n => { //使用map遍历每个大致内容 + return { //返回包含公会ID和公会名称的对象 + sn: n.split(/guild\.php\?g?sn=(\d+)/)[1], //正则进一步提取公会ID + name: n.split(/
(.+?)<\/p>/)[1] //正则进一步提取公会名称
+ }
+ });
+ if (list.length) { //过滤后, 如果包含公会列表
+ $.log('', `✅获取公会列表成功`); //打印日志
+ //按照公会数量进行并发签到, map结合Promise.all后可以实现并发签到并且都完成后才进行下一行操作
+ const sign = await Promise.all(list.map(StartSignGuild));
+ const sucs = sign.filter(n => n === 1).length; //过滤后得到成功数量
+ const fail = sign.filter(n => n === 0).length; //过滤后得到失败数量
+ //添加到全局变量备用 (通知)
+ $.notifyMsg.push(`公会签到: ${sucs?`成功${sucs}个`:``}${sucs&&fail?`, `:``}${fail?`失败${fail}个`:``}`);
+ } else {
+ throw new Error('公会列表为空'); //无公会列表则抛出异常
+ }
+ })
+ .catch(err => { //捕获异常, 打印日志
+ $.notifyMsg.push(`公会签到: ${err.message || err}`); //添加到全局变量备用 (通知)
+ $.log('', `❌巴哈姆特公会签到失败`, `❌${err.message || err}`); //打印日志
+ });
+}
+
+function StartSignGuild(v) { //巴哈姆特公会签到
+
+ //签到成功: {"ok":1,"msg":"本日簽到成功!獲得5貢獻度"}
+ //已签过: {"error":1,"msg":"您今天已經簽到過了!"}
+ //公会ID错误: {"error":1,"msg":"此公會社團不存在。"}
+ //未加入公会: {"error":1,"msg":"你還不是成員,歡迎加入!"}
+ //未登录: {"error":1,"msg":"請先登入"}
+
+ return $.http.post({ //使用post方法签到公会 (Promise实例对象)
+ url: 'https://guild.gamer.com.tw/ajax/guildSign.php', //公会签到接口
+ headers: {}, //请求头, 客户端将自动设置Cookie字段
+ body: `sn=${v.sn}` //把查询到的公会ID放进请求体
+ })
+ .then((res) => { //网络请求成功后的处理
+ const body = JSON.parse(res.body); //解析响应体json为对象
+ $.log('', `🔷<${v.name}>`, `${body.ok?`✅`:`❌`}${body.msg}`); //打印日志, 包含签到结果
+ if (body.ok) { //如果签到成功
+ return 1; //返回1表示成功
+ } else {
+ return 0; //返回0表示失败
+ }
+ })
+ .catch(e => { //捕获异常, 打印日志
+ $.log('', `🔷<${v.name}>`, `❌签到失败: ${e.message||e}`);
+ return 0; //返回0表示失败
+ });
+}
+
+function BahamutAnswer() { //动画疯答题
+
+ //未答题: {"game":"灌籃高手","question":"流川楓的號碼是下列何者?","a1":"7","a2":"11","a3":"23","a4":"59","userid":"GN32964174","token":"01092fe463ab36ab47cb298e229c4f8fb298e229cc260fa7baf"}
+ //已答题: {"error":1,"msg":"今日已經答過題目了,一天僅限一次機會"}
+ //未登录: {"error":1,"nologin":1,"msg":"請先登入"}
+
+ if ($.needAnswer === false || $.needAnswer === 'false') { //如果用户关闭动画疯答题
+ return; //退出答题函数
+ }
+ return $.http.get({ //使用get方获取题目 (Promise实例对象)
+ url: 'https://ani.gamer.com.tw/ajax/animeGetQuestion.php?t=' + Date.now(), //获取题目接口
+ headers: {} //请求头, 客户端将自动设置Cookie字段
+ })
+ .then(async (res) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作
+ const r = JSON.parse(res.body); //解析响应体json为对象
+ if (r.token) { //如果有题目
+ $.log('', `✅获取动画疯题目成功`, ``, `🔶<${r.game}> ${r.question}`,
+ `1️⃣${r.a1}`, `2️⃣${r.a2}`, `3️⃣${r.a3}`, `4️⃣${r.a4}`); //打印日志
+ const article = await GetAanswerArticles(); //获取答案文章ID
+ const getAnswer = await StartSearchAnswers(article); //传入文章ID, 再从文章内获取答案
+ const sendAnswer = await StartBahamutAnswer(getAnswer, r.token); //传入答案和题目令牌, 开始答题
+ $.notifyMsg.push(`动画答题: ${sendAnswer}`); //答题后的结果添加到全局变量备用 (通知)
+ } else { //未获取到题目
+ throw new Error(r.msg || `获取题目失败`); //带上原因抛出异常
+ }
+ })
+ .catch(e => { //捕获异常, 打印日志
+ $.notifyMsg.push(`动画答题: ${e.message||e||`失败`}`); //添加到全局变量备用 (通知)
+ $.log('', `❌动画疯答题失败`, `❌${e.message||e}`); //打印日志
+ });
+}
+
+function GetAanswerArticles() { // 从blackxblue的小屋查询含答案的文章ID
+ $.log('', `🔶开始获取文章`); //打印日志
+ return $.http.get({ //使用get方法获取文章ID (Promise实例对象)
+ url: 'https://api.gamer.com.tw/mobile_app/bahamut/v1/home.php?owner=blackXblue&page=1', //获取文章ID接口
+ headers: {}
+ })
+ .then((res) => { //网络请求成功后的处理
+ const body = JSON.parse(res.body); //解析响应体json为对象
+ const tDate = $.time('MM/dd'); //返回今日日期
+ const title = (body.creation || []).filter(t => t.title.includes(tDate)); //过滤后返回今日答案文章
+ if (title.length && title[0].sn) { //如果有答案文章
+ $.log('', `✅获取文章成功 (${title[0].sn})`); //打印日志
+ return title[0].sn; //返回文章ID
+ } else { //否则带上原因抛出异常, 被调用该函数时的catch捕获
+ throw new Error('今日答案未发表');
+ }
+ })
+}
+
+function StartSearchAnswers(id) { //获取文章内答案
+ $.log('', `🔶开始获取答案`); //打印日志
+ return $.http.get({ //使用get方法获取答案 (Promise实例对象)
+ url: 'https://api.gamer.com.tw/mobile_app/bahamut/v1/home_creation_detail.php?sn=' + id, //获取答案接口
+ headers: {}
+ })
+ .then((res) => { //网络请求成功后的处理
+ const body = JSON.parse(res.body); //解析响应体json为对象
+ const answers = body.content.split(/A:(\d)/)[1]; //正则提取答案
+ if (answers) { //如果成功提取答案
+ $.log('', `✅获取答案成功 (${answers})`); //打印日志
+ return answers; //返回答案
+ } else { //否则带上原因抛出异常, 被调用该函数时的catch捕获
+ throw new Error('提取答案失败');
+ }
+ })
+}
+
+function StartBahamutAnswer(answer, token) { //动画疯答题
+
+ //答题正确: {"ok":1,"gift":"恭喜您得到:300 巴幣"}
+ //答题错误: {"error":1,"msg":"答題錯誤"}
+ //令牌过期: {"error":1,"msg":"很抱歉!本題目已超過時效!"}
+ //已答题: {"error":1,"msg":"今日已經答過題目了,一天僅限一次機會"}
+ //未登录: {"error":1,"nologin":1,"msg":"請先登入"}
+
+ $.log('', `🔶开始答题`); //打印日志
+ return $.http.post({ //使用post方法提交答案 (Promise实例对象)
+ url: 'https://ani.gamer.com.tw/ajax/animeAnsQuestion.php', //提交答案接口
+ headers: {}, //请求头, 客户端将自动设置Cookie字段
+ body: `token=${token}&ans=${answer}&t=${Date.now()}`, //请求体带上答案和答案令牌
+ })
+ .then((res) => { //网络请求成功后的处理
+ const body = JSON.parse(res.body); //解析响应体json为对象
+ if (body.ok) { //如果答题成功
+ $.log('', `✅${body.gift}`); //打印奖励日志
+ return body.gift; //返回奖励内容
+ } else { //否则答题失败
+ const failMsg = body.error ? body.error.message : null; //提取签到失败原因
+ throw new Error(body.msg || failMsg || '未知'); //否则带上原因抛出异常, 被调用该函数时的catch捕获
+ }
+ })
+}
+
+//Bark APP notify
+async function BarkNotify(c,k,t,b){for(let i=0;i<3;i++){console.log(`🔷Bark notify >> Start push (${i+1})`);const s=await new Promise((n)=>{c.post({url:'https://api.day.app/push',headers:{'Content-Type':'application/json'},body:JSON.stringify({title:t,body:b,device_key:k,ext_params:{group:t}})},(e,r,d)=>r&&r.status==200?n(1):n(d||e))});if(s===1){console.log('✅Push success!');break}else{console.log(`❌Push failed! >> ${s.message||s}`)}}};
+
+//修改自 https://github.com/chavyleung/scripts/blob/master/Env.js 的兼容函数
+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.ua="Anime/2.13.9 (tw.com.gamer.anime;build:437;iOS 14.5.0) Alamofire/5.4.1",this.logs=[],this.isMute=!1,this.isNeedRewrite=!0,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}isShadowrocket(){return"undefined"!=typeof $rocket}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http:\/\/${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},((void 0===t.headers.Cookie||/ckAPP_VCODE/.test(t.headers.Cookie))&&void 0===t.cookieJar)&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(t.headers["User-Agent"]=this.ua,delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){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&&(t.headers["User-Agent"]=this.ua,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()){this.initGotEnv(t);const{url:i,...r}=t;this.got[s](i,r).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","================================="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\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("",`${s}\u79d2`,`=================================`),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)};
+
+// 从 https://jsfiddle.net/russau/rbyjk774 魔改的TOTP两部验证算法, 完全使用原生javascript实现
+function TOTP(token){function t(e,a,d){var g=0,c=[],b=0,f,k,l,h,m,w,n,y,p=!1,q=[],t=[],v,u=!1;d=d||{};f=d.encoding||"UTF8";v=d.numRounds||1;l=z(a,f);if(v!==parseInt(v,10)||1>v)throw Error("numRounds must a integer >= 1");if("SHA-1"===e)m=512,w=A,n=H,h=160,y=function(a){return a.slice()};else throw Error("Chosen SHA variant is not supported");k=x(e);this.setHMACKey=function(a,b,c){var d;if(!0===p)throw Error("HMAC key already set");if(!0===u)throw Error("Cannot set HMAC key after calling update");f=(c||{}).encoding||"UTF8";b=z(b,f)(a);a=b.binLen;b=b.value;d=m>>>3;c=d/4-1;if(da/8){for(;b.length<=c;)b.push(0);b[c]&=4294967040}for(a=0;a<=c;a+=1)q[a]=b[a]^909522486,t[a]=b[a]^1549556828;k=w(q,k);g=m;p=!0};this.update=function(a){var d,e,f,h=0,n=m>>>5;d=l(a,c,b);a=d.binLen;e=d.value;d=a>>>5;for(f=0;f获取Cookie以及脚本配置请查看脚本注释
",
+ "如需修改Cookie列表请严格按照JSON格式修改
",
+ "建议通过脚本获取Cookie
",
+ "
",
+ "签到相关教程
",
+ ""
+ ],
+ "settings": [
+ {
+ "id": "JD_DailyBonusLog",
+ "name": "详细响应日志",
+ "val": false,
+ "type": "boolean",
+ "desc": "打印原始签到结果, 用于调试脚本, 一般用户建议关闭."
+ },
+ {
+ "id": "JD_Crash_disable",
+ "name": "崩溃自动禁用",
+ "val": true,
+ "type": "boolean",
+ "desc": "脚本运行崩溃时(如VPN断连), 下次运行时将自动禁用相关崩溃接口(仅部分接口启用), 注: 崩溃时可能会误禁用正常接口."
+ },
+ {
+ "id": "JD_Retry_disable",
+ "name": "签到接口增强",
+ "val": true,
+ "type": "boolean",
+ "desc": "用于部分接口提示\"不含活动数据\"问题, 开启后会进行二次查询, 注: 可能会导致崩溃(小概率)."
+ },
+ {
+ "id": "JD_Follow_disable",
+ "name": "自动关注店铺",
+ "val": true,
+ "type": "boolean",
+ "desc": "部分接口签到过程可能需要关注店铺, 如介意可选择关闭."
+ },
+ {
+ "id": "JD_DailyBonusDisables",
+ "name": "签到接口禁用",
+ "val": "",
+ "type": "checkboxes",
+ "desc": "",
+ "items": [
+ {
+ "key": "JDBean",
+ "label": "京东京豆"
+ },
+ {
+ "key": "JRSteel",
+ "label": "金融钢镚"
+ },
+ {
+ "key": "JDTurn",
+ "label": "京东转盘"
+ },
+ {
+ "key": "JDGStore",
+ "label": "京东超市"
+ },
+ {
+ "key": "JDCard",
+ "label": "京东卡包"
+ },
+ {
+ "key": "JD3C",
+ "label": "京东数码"
+ },
+ {
+ "key": "JDSuitcase",
+ "label": "京东箱包"
+ },
+ {
+ "key": "JDChild",
+ "label": "京东童装"
+ },
+ {
+ "key": "JDBaby",
+ "label": "京东母婴"
+ },
+ {
+ "key": "JDCash",
+ "label": "京东红包"
+ },
+ {
+ "key": "JDFSale",
+ "label": "京东闪购"
+ },
+ {
+ "key": "JDBook",
+ "label": "京东图书"
+ },
+ {
+ "key": "JDStory",
+ "label": "失眠补贴"
+ },
+ {
+ "key": "JDPhone",
+ "label": "手机小时达"
+ },
+ {
+ "key": "JDSchool",
+ "label": "京东校园"
+ },
+ {
+ "key": "JDUndies",
+ "label": "京东内衣"
+ },
+ {
+ "key": "JDShoes",
+ "label": "京东鞋靴"
+ },
+ {
+ "key": "JDShand",
+ "label": "京东二手"
+ },
+ {
+ "key": "JDHealth",
+ "label": "京东健康"
+ },
+ {
+ "key": "JDWomen",
+ "label": "京东女装"
+ },
+ {
+ "key": "JDSecKill",
+ "label": "京东秒杀"
+ },
+ {
+ "key": "JTDouble",
+ "label": "金贴双签"
+ },
+ {
+ "key": "JDVege",
+ "label": "京东菜场"
+ },
+ {
+ "key": "JDClean",
+ "label": "京东清洁"
+ },
+ {
+ "key": "JDCare",
+ "label": "京东个护"
+ },
+ {
+ "key": "JDaccompany",
+ "label": "京东陪伴"
+ },
+ {
+ "key": "JDCube",
+ "label": "京东魔方"
+ },
+ {
+ "key": "JDJiaDian",
+ "label": "京东家电"
+ },
+ {
+ "key": "JDDouble",
+ "label": "京豆双签"
+ },
+ {
+ "key": "subsidy",
+ "label": "京东金贴"
+ },
+ {
+ "key": "JDGetCash",
+ "label": "京东现金"
+ },
+ {
+ "key": "JDShake",
+ "label": "京东摇一摇"
+ },
+ {
+ "key": "Qbear",
+ "label": "总京豆查询"
+ },
+ {
+ "key": "TCash",
+ "label": "总红包查询"
+ },
+ {
+ "key": "TSteel",
+ "label": "总钢镚查询"
+ },
+ {
+ "key": "TotalSubsidy",
+ "label": "总金贴查询"
+ },
+ {
+ "key": "TotalMoney",
+ "label": "总现金查询"
+ }
+ ]
+ },
+ {
+ "id": "JD_DailyBonusTimeOut",
+ "name": "超时退出 (毫秒)",
+ "val": "",
+ "type": "number",
+ "placeholder": "默认无超时 (点击以展开说明)",
+ "desc": "按需填写, 用于由网络不稳定引起的脚本中断, 正常或越狱用户建议留空. 如QX日志出现大量\"JS Context timeout\"后脚本中断时, 建议填写6000"
+ },
+ {
+ "id": "JD_DailyBonusDelay",
+ "name": "接口延迟 (毫秒)",
+ "val": "",
+ "type": "number",
+ "placeholder": "默认并发无延迟 (点击以展开说明)",
+ "desc": "延迟作用于每个签到接口, 该参数接受随机或指定延迟(例: '2000'则表示延迟2秒; '2000-5000'则表示延迟最小2秒,最大5秒内的随机延迟), 如填入延迟则切换顺序签到(耗时较长); VPN重启或越狱用户建议填写1(顺序执行), Surge用户请注意在SurgeUI界面调整脚本超时."
+ },
+ {
+ "id": "CookiesJD",
+ "name": "Cookie列表",
+ "type": "textarea",
+ "autoGrow": false,
+ "rows": 9,
+ "val": "[\n {\n \"cookie\": \"此处填写账号1 Cookie\"\n },\n {\n \"cookie\": \"此处填写账号2 Cookie\",\n \"jrBody\": \"此处填写账号2 钢镚Body\"\n }\n]",
+ "placeholder": "[ {\"cookie\": \"pt_key=xxx;pt_pin=yyy;\", \"jrBody\": \"reqData=zzz\"} ]",
+ "desc": "Cookie和钢镚签到Body列表, 如需修改请严格按照JSON格式填写; \"cookie\"为必须, 其他为可选."
+ }
+ ],
+ "scripts": [
+ {
+ "name": "京东签到",
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js"
+ },
+ {
+ "name": "初始化设置",
+ "script": "https://gist.githubusercontent.com/NobyDa/91cbe57dd50b3588a975af8922507a72/raw/JD_initial.js"
+ }
+ ],
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/tree/master/JD-DailyBonus",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/jd.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/jd.png"
+ ]
+ },
+ {
+ "id": "iQIYI",
+ "name": "爱奇艺",
+ "keys": [
+ "CookieQY"
+ ],
+ "descs_html": [
+ "获取Cookie以及脚本配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "iQIYI_LogDetails",
+ "name": "响应日志",
+ "val": false,
+ "type": "boolean",
+ "desc": ""
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/iQIYI-DailyBonus/iQIYI.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/iQIYI-DailyBonus/iQIYI.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/iQIYI.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/iQIYI.png"
+ ]
+ },
+ {
+ "id": "BiliManga",
+ "name": "哔哩漫画",
+ "keys": [
+ "BILI_COMICS_CHECKIN"
+ ],
+ "descs_html": [
+ "获取Cookie以及脚本配置请查看脚本注释
"
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Bilibili-DailyBonus/Manga.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/manga.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/manga.png"
+ ]
+ },
+ {
+ "id": "BiliMangaPoints",
+ "name": "哔哩漫画抢券",
+ "descs_html": [
+ "脚本配置请查看脚本注释
"
+ ],
+ "keys": [
+ "BM_ProductName",
+ "BM_ProductNum",
+ "BM_ExchangeNum"
+ ],
+ "settings": [
+ {
+ "id": "@BILI_COMICS_CHECKIN.ProductName",
+ "name": "商品名",
+ "val": "积分兑换",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "要抢购的积分商城商品名"
+ },
+ {
+ "id": "@BILI_COMICS_CHECKIN.ProductNum",
+ "name": "兑换数量",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "要兑换的数量, 默认为积分可兑换的最大值"
+ },
+ {
+ "id": "@BILI_COMICS_CHECKIN.ExchangeNum",
+ "name": "抢购次数",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "默认暴力抢购100次"
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/ExchangePoints.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Bilibili-DailyBonus/ExchangePoints.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/manga.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/manga.png"
+ ]
+ },
+ {
+ "id": "BaiduTB",
+ "name": "百度贴吧",
+ "keys": [
+ "CookieTB"
+ ],
+ "descs_html": [
+ "获取Cookie以及脚本配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "BDTB_DailyBonus_Mode",
+ "name": "签到模式",
+ "val": "0",
+ "type": "radios",
+ "desc": "",
+ "items": [
+ {
+ "key": "0",
+ "label": "自动切换"
+ },
+ {
+ "key": "1",
+ "label": "顺序执行"
+ },
+ {
+ "key": "2",
+ "label": "并发执行"
+ }
+ ]
+ },
+ {
+ "id": "BDTB_DailyBonus_notify",
+ "name": "通知汇总",
+ "val": "",
+ "type": "number",
+ "placeholder": "默认20 (点击以展开说明)",
+ "desc": "想签到几个汇总到一个通知里, 这里就填几个(比如我有13个要签到的, 这里填了5, 就会分三次推送通知)"
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/BDTieBa-DailyBonus/TieBa.js",
+ "author": "@sazs34, @NobyDa",
+ "repo": "https://github.com/sazs34/TaskConfig/blob/master/task/sign_baidu_tieba_v2.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/tieba.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/tieba.png"
+ ]
+ },
+ {
+ "id": "52poje",
+ "name": "吾爱破解",
+ "keys": [
+ "nobyda_52pojie"
+ ],
+ "descs_html": [
+ "获取Cookie以及脚本配置请查看脚本注释
"
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/52pojie-DailyBonus/52pojie.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/52pj.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/52pj.png"
+ ]
+ },
+ {
+ "id": "KuaiKan",
+ "name": "快看漫画",
+ "keys": [
+ "@KKMH.COOKIE",
+ "@KKMH.TIME",
+ "@KKMH.UID",
+ "@KKMH.DATE"
+ ],
+ "descs_html": [
+ "获取Cookie以及脚本配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "@KKMH.LOG",
+ "name": "响应日志",
+ "val": false,
+ "type": "boolean",
+ "desc": "打印原始签到结果, 用于调试脚本, 一般用户建议关闭."
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/KuaiKan-DailyBonus/KKMH.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/KuaiKan-DailyBonus/KKMH.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/KuaiKan.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/KuaiKan.png"
+ ]
+ },
+ {
+ "id": "Bahamut",
+ "name": "巴哈姆特",
+ "keys": [
+ "@ND_BAHA.ID",
+ "@ND_BAHA.PW",
+ "@ND_BAHA.TOTP",
+ "@ND_BAHA.GUILD",
+ "@ND_BAHA.ANSWER",
+ "@ND_BAHA.ADS"
+ ],
+ "descs_html": [
+ "脚本配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "@ND_BAHA.ADS",
+ "name": "签到广告",
+ "val": false,
+ "type": "boolean",
+ "desc": "开启后将签到双倍巴币奖励, 默认关闭. 请注意, 此功能耗时过长(30秒以上), 如果使用Surge请调整该脚本超时为300秒"
+ },
+ {
+ "id": "@ND_BAHA.GUILD",
+ "name": "签到公会",
+ "val": true,
+ "type": "boolean",
+ "desc": "开启后将自动签到公会"
+ },
+ {
+ "id": "@ND_BAHA.ANSWER",
+ "name": "动画疯答题",
+ "val": true,
+ "type": "boolean",
+ "desc": "开启后将自动答题"
+ },
+ {
+ "id": "@ND_BAHA.ID",
+ "name": "用户名",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "输入用户名(账号)"
+ },
+ {
+ "id": "@ND_BAHA.PW",
+ "name": "用户密码",
+ "val": "",
+ "type": "text",
+ "placeholder": "",
+ "desc": "输入用户密码"
+ },
+ {
+ "id": "@ND_BAHA.TOTP",
+ "name": "两步验证令牌",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "输入网站生成的16位令牌, 如未设置两步验证, 请留空"
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutDailyBonus.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Bahamut/BahamutDailyBonus.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/bahamutGame.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/bahamutGame.png"
+ ]
+ },
+ {
+ "id": "BiliRegion",
+ "name": "哔哩番剧自动地区",
+ "descs_html": [
+ "脚本配置请查看脚本注释
"
+ ],
+ "keys": [
+ "BiliArea_Policy",
+ "BiliArea_CN",
+ "BiliArea_HK",
+ "BiliArea_TW",
+ "BiliArea_DF",
+ "BiliArea_disabled"
+ ],
+ "settings": [
+ {
+ "id": "BiliAreaNotify",
+ "name": "静默运行",
+ "val": false,
+ "type": "boolean",
+ "desc": "开启后将不再发出切换策略通知"
+ },
+ {
+ "id": "BiliDoubanRating",
+ "name": "豆瓣评分",
+ "val": true,
+ "type": "boolean",
+ "desc": "关闭后将不再查询豆瓣评分, 可显著提高相关页面载入速度"
+ },
+ {
+ "id": "BiliArea_Policy",
+ "name": "策略组名",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "哔哩哔哩分流的策略组名"
+ },
+ {
+ "id": "BiliArea_CN",
+ "name": "中国大陆-子策略名",
+ "val": "DIRECT",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "哔哩哔哩分流策略组里的中国大陆子策略名"
+ },
+ {
+ "id": "BiliArea_HK",
+ "name": "中国香港-子策略名",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "哔哩哔哩分流策略组里的香港子策略名"
+ },
+ {
+ "id": "BiliArea_TW",
+ "name": "中国台湾-子策略名",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "哔哩哔哩分流策略组里的台湾子策略名"
+ },
+ {
+ "id": "BiliArea_DF",
+ "name": "后备-子策略名",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "部分番剧可能会被屏蔽, 使用该策略以避免页面加载失败. 建议填写台湾子策略"
+ },
+ {
+ "id": "BiliArea_disabled",
+ "name": "WiFi黑名单",
+ "val": "",
+ "type": "text",
+ "placeholder": "(点击以展开说明)",
+ "desc": "WiFi名称以逗号分隔, 名单内将跳过策略切换"
+ }
+ ],
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Surge/JS/Bili_Auto_Regions.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/bilibili.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/bilibili.png"
+ ]
+ },
+ {
+ "id": "TestFlightAccount",
+ "name": "TestFlight账户管理",
+ "keys": [
+ "TESTFLIGHT-ACCOUNT"
+ ],
+ "descs_html": [
+ "脚本说明以及配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "@TESTFLIGHT-ACCOUNT.Debug",
+ "name": "开发者模式",
+ "val": false,
+ "type": "boolean",
+ "desc": "用于调试脚本, 一般用户请勿开启."
+ },
+ {
+ "id": "@TESTFLIGHT-ACCOUNT.EnableCache",
+ "name": "启用缓存",
+ "val": true,
+ "type": "boolean",
+ "desc": "用于缓存APP列表, 改善列表页面加载过慢,需与\"请求超时\"配合使用。开启缓存并刷新列表后,可适当调小超时"
+ },
+ {
+ "id": "@TESTFLIGHT-ACCOUNT.Timeout",
+ "name": "请求超时",
+ "val": "",
+ "type": "number",
+ "placeholder": "30",
+ "desc": "默认为30, 单位: 秒"
+ },
+ {
+ "id": "@TESTFLIGHT-ACCOUNT.ForceIOSlist",
+ "name": "使用iOS应用列表",
+ "val": false,
+ "type": "boolean",
+ "desc": "强制使用iOS应用列表, 用于改善 macOS TestFlight 加载过慢, iOS用户无需开启"
+ }
+ ],
+ "scripts": [
+ {
+ "name": "清除缓存",
+ "script": "https://gist.githubusercontent.com/NobyDa/d025c53d3922657f921b983ce129fc1d/raw/TestFlightAccountRemoveCache.js"
+ }
+ ],
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/TestFlight/TestFlightAccount.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/testflight.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/testflight.png"
+ ]
+ },
+ {
+ "id": "Ctrip",
+ "name": "携程旅行",
+ "keys": [
+ "CTRIP_DAILY_BONUS"
+ ],
+ "descs_html": [
+ "脚本说明以及配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "@CTRIP_DAILY_BONUS.Debug",
+ "name": "开发者模式",
+ "val": false,
+ "type": "boolean",
+ "desc": "用于调试脚本, 一般用户请勿开启."
+ }
+ ],
+ "script": "https://raw.githubusercontent.com/NobyDa/Script/master/Ctrip-DailyBonus/Ctrip.js",
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Ctrip-DailyBonus/Ctrip.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/ctrip.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/ctrip.png"
+ ]
+ },
+ {
+ "id": "GoogleCAPTCHA",
+ "name": "Google搜索人机验证",
+ "keys": [
+ "GOOGLE_CAPTCHA"
+ ],
+ "descs_html": [
+ "脚本说明以及配置请查看脚本注释
"
+ ],
+ "settings": [
+ {
+ "id": "@GOOGLE_CAPTCHA.Regex",
+ "name": "代理策略/策略组正则表达式",
+ "val": "",
+ "type": "text",
+ "placeholder": "^(🇸🇬|🇭🇰)\\s.*\\d+$",
+ "desc": "筛选的代理策略/策略组, 限制20个, 留空则表示随机使用。"
+ },
+ {
+ "id": "@GOOGLE_CAPTCHA.RegexTest",
+ "name": "正则表达式测试",
+ "val": "",
+ "type": "text",
+ "placeholder": "(🇸🇬|🇭🇰)",
+ "desc": "填写并保存后可在右上角测试匹配的策略/策略组。"
+ }
+ ],
+ "scripts": [
+ {
+ "name": "测试匹配的策略/策略组",
+ "script": "https://gist.githubusercontent.com/NobyDa/830932e4526c9c84169020a56c3ef199/raw/GOOGLE_CAPTCHA_TEST_POLICY.js"
+ }
+ ],
+ "author": "@NobyDa",
+ "repo": "https://github.com/NobyDa/Script/blob/master/Surge/JS/Google_CAPTCHA.js",
+ "icons": [
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Alpha/Google.png",
+ "https://raw.githubusercontent.com/NobyDa/mini/master/Color/Google.png"
+ ]
+ }
+ ],
+ "task": [
+ {
+ "config": "30 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Ctrip-DailyBonus/Ctrip.js, tag=携程旅行签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/ctrip.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/CtripAuth.snippet, tag=携程旅行(获取授权)"
+ },
+ {
+ "config": "5 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/iQIYI-DailyBonus/iQIYI.js, tag=爱奇艺签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/iQIYI.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/iQiYiCookie.snippet, tag=爱奇艺(获取Cookie)"
+ },
+ {
+ "config": "10 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js, tag=哔哩漫画签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/manga.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/BiliComicCookie.snippet, tag=哔哩漫画(获取Cookie)"
+ },
+ {
+ "config": "10,20,30 0 12 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/ExchangePoints.js, tag=哔哩漫画抢券, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/manga.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/BiliComicCookie.snippet, tag=哔哩漫画(获取Cookie)"
+ },
+ {
+ "config": "15 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/BDTieBa-DailyBonus/TieBa.js, tag=百度贴吧签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/tieba.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/TieBaCookie.snippet, tag=百度贴吧(获取Cookie)"
+ },
+ {
+ "config": "25 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/KuaiKan-DailyBonus/KKMH.js, tag=快看漫画签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/KuaiKan.png",
+ "addons": "https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/KuaiKanCookie.snippet, tag=快看漫画(获取Cookie)"
+ },
+ {
+ "config": "0 8 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutDailyBonus.js, tag=巴哈姆特签到, img-url=https://raw.githubusercontent.com/NobyDa/mini/master/Color/bahamutGame.png"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/QuantumultX/AdRule.list b/QuantumultX/AdRule.list
index a1b068f129..f077f195cb 100644
--- a/QuantumultX/AdRule.list
+++ b/QuantumultX/AdRule.list
@@ -1,5 +1,5 @@
-# Update-2019.10.23 Self-use rule, Remove versus shenji duplicates and optimizations
-# This rule does not include shenji
+# Update > 2023/12/23
+DOMAIN-SUFFIX,api-access.pangolin-sdk-toutiao-b.com,REJECT
DOMAIN-SUFFIX,apoll.m.taobao.com,REJECT
DOMAIN-SUFFIX,comet.yahoo.com,REJECT
DOMAIN-SUFFIX,gemini.yahoo.com,REJECT
@@ -17,7 +17,6 @@ DOMAIN-SUFFIX,cupid.iqiyi.com,REJECT
DOMAIN-SUFFIX,emoticon.sns.iqiyi.com,REJECT
DOMAIN-SUFFIX,game.pps.tv,REJECT
DOMAIN-SUFFIX,gamecenter.iqiyi.com,REJECT
-DOMAIN-SUFFIX,hotchat-im.iqiyi.com,REJECT
DOMAIN-SUFFIX,mbdlog.iqiyi.com,REJECT
DOMAIN-SUFFIX,msg.iqiyi.com,REJECT
DOMAIN-SUFFIX,msg.video.qiyi.com,REJECT
@@ -136,7 +135,6 @@ DOMAIN-SUFFIX,m-78.jp,REJECT
DOMAIN-SUFFIX,nichibenren.or.jp,REJECT
DOMAIN-SUFFIX,nicorette.co.kr,REJECT
DOMAIN-SUFFIX,adnet.sohu.com,REJECT
-DOMAIN-SUFFIX,data.vod.itc.cn,REJECT
DOMAIN-SUFFIX,epro.sogou.com,REJECT
DOMAIN-SUFFIX,go.sohu.com,REJECT
DOMAIN-SUFFIX,golden1.sogou.com,REJECT
@@ -168,7 +166,6 @@ DOMAIN-SUFFIX,ad.video.51togic.com,REJECT
DOMAIN-SUFFIX,biz5.kankan.com,REJECT
DOMAIN-SUFFIX,c.algovid.com,REJECT
DOMAIN-SUFFIX,cms.laifeng.com,REJECT
-DOMAIN-SUFFIX,da.mmarket.com,REJECT
DOMAIN-SUFFIX,dotcounter.douyutv.com,REJECT
DOMAIN-SUFFIX,g.uusee.com,REJECT
DOMAIN-SUFFIX,gcdn.2mdn.net,REJECT
@@ -1296,7 +1293,6 @@ DOMAIN-SUFFIX,alertserver.ushaqi.com,REJECT
DOMAIN-SUFFIX,alipay.dajiadou6.com,REJECT
DOMAIN-SUFFIX,aliqqjd.cn,REJECT
DOMAIN-SUFFIX,alisinak.com,REJECT
-DOMAIN-SUFFIX,alissl.ucdl.pp.uc.cn,REJECT
DOMAIN-SUFFIX,alistatic.cn,REJECT
DOMAIN-SUFFIX,alitianxia168.com,REJECT
DOMAIN-SUFFIX,alitui.weibo.com,REJECT
@@ -1413,7 +1409,6 @@ DOMAIN-SUFFIX,api-flow.flyme.cn,REJECT
DOMAIN-SUFFIX,api-game.meizu.com,REJECT
DOMAIN-SUFFIX,apihk.growingio.com,REJECT
DOMAIN-SUFFIX,api-push.meizu.com,REJECT
-DOMAIN-SUFFIX,api-shoulei-ssl.xunlei.com,REJECT
DOMAIN-SUFFIX,apisoft.df0535.com,REJECT
DOMAIN-SUFFIX,apk.idate520.com,REJECT
DOMAIN-SUFFIX,apk.supfast.net,REJECT
@@ -2015,7 +2010,6 @@ DOMAIN-SUFFIX,cc.yac8.com,REJECT
DOMAIN-SUFFIX,cca.mob.com,REJECT
DOMAIN-SUFFIX,ccb.uncle-ad.com,REJECT
DOMAIN-SUFFIX,ccbaihehq.com,REJECT
-DOMAIN-SUFFIX,ccclub.cmbchina.com,REJECT
DOMAIN-SUFFIX,cccrir.com,REJECT
DOMAIN-SUFFIX,ccr.yxdown.com,REJECT
DOMAIN-SUFFIX,cctyly.com,REJECT
@@ -2055,7 +2049,6 @@ DOMAIN-SUFFIX,cdn.mdotm.com,REJECT
DOMAIN-SUFFIX,cdn.media.innity.net,REJECT
DOMAIN-SUFFIX,cdn.millennialmedia.com,REJECT
DOMAIN-SUFFIX,cdn.mingmingtehui.com,REJECT
-DOMAIN-SUFFIX,cdn.moji.com,REJECT
DOMAIN-SUFFIX,cdn.moji002.com,REJECT
DOMAIN-SUFFIX,cdn.moogos.com,REJECT
DOMAIN-SUFFIX,cdn.ndapp.com,REJECT
@@ -2187,7 +2180,6 @@ DOMAIN-SUFFIX,clkservice.union.youdao.com,REJECT
DOMAIN-SUFFIX,clkservice.youdao.com,REJECT
DOMAIN-SUFFIX,clkservice2.dict.youdao.com,REJECT
DOMAIN-SUFFIX,cloud.codenow.cn,REJECT
-DOMAIN-SUFFIX,cloud.rovio.com,REJECT
DOMAIN-SUFFIX,cloud.zyiis.net,REJECT
DOMAIN-SUFFIX,cloudad.asia,REJECT
DOMAIN-SUFFIX,cloudcdn.yousee.com,REJECT
@@ -2240,7 +2232,6 @@ DOMAIN-SUFFIX,co.dtech.baofeng.com,REJECT
DOMAIN-SUFFIX,cocounion.com,REJECT
DOMAIN-SUFFIX,cod.southmoney.com,REJECT
DOMAIN-SUFFIX,code.3shangyou.com,REJECT
-DOMAIN-SUFFIX,code.createjs.com,REJECT
DOMAIN-SUFFIX,code.fastclick.net,REJECT
DOMAIN-SUFFIX,code.hajuwang.cn,REJECT
DOMAIN-SUFFIX,code.hot-mob.com,REJECT
@@ -2528,7 +2519,6 @@ DOMAIN-SUFFIX,daima.youbian.com,REJECT
DOMAIN-SUFFIX,daima123.cc,REJECT
DOMAIN-SUFFIX,dairuqi.com,REJECT
DOMAIN-SUFFIX,dajean.com,REJECT
-DOMAIN-SUFFIX,dajiyuan.com,REJECT
DOMAIN-SUFFIX,dajiyuan.org,REJECT
DOMAIN-SUFFIX,dalianhengtai.com,REJECT
DOMAIN-SUFFIX,dandan11.top,REJECT
@@ -3159,8 +3149,6 @@ DOMAIN-SUFFIX,ent1.12584.cn,REJECT
DOMAIN-SUFFIX,entry.baidu.com,REJECT
DOMAIN-SUFFIX,e-p4p.163.com,REJECT
DOMAIN-SUFFIX,epernn.cn,REJECT
-DOMAIN-SUFFIX,epochtimes.org,REJECT
-DOMAIN-SUFFIX,epochweekly.com,REJECT
DOMAIN-SUFFIX,epowernetworktrackerimages.s3.amazonaws.com,REJECT
DOMAIN-SUFFIX,er.dlhygj.com,REJECT
DOMAIN-SUFFIX,erebor.douban.com,REJECT
@@ -3302,7 +3290,6 @@ DOMAIN-SUFFIX,fge9vbrzwt.bid,REJECT
DOMAIN-SUFFIX,fghm.ga25.com,REJECT
DOMAIN-SUFFIX,fghmc.ga25.com,REJECT
DOMAIN-SUFFIX,fghmimg.ga25.com,REJECT
-DOMAIN-SUFFIX,fgmtv.org,REJECT
DOMAIN-SUFFIX,file.bmob.cn,REJECT
DOMAIN-SUFFIX,files2.sogou.com,REJECT
DOMAIN-SUFFIX,fimserve.ign.com,REJECT
@@ -3766,7 +3753,6 @@ DOMAIN-SUFFIX,huimee.net,REJECT
DOMAIN-SUFFIX,huishenghuiying.com,REJECT
DOMAIN-SUFFIX,humanding.com,REJECT
DOMAIN-SUFFIX,hunpingou.com,REJECT
-DOMAIN-SUFFIX,huoying666.com,REJECT
DOMAIN-SUFFIX,hv.code.tanwanyx.com,REJECT
DOMAIN-SUFFIX,hw6.com,REJECT
DOMAIN-SUFFIX,hwt.player888.cn,REJECT
@@ -3796,7 +3782,6 @@ DOMAIN-SUFFIX,i.bigmir.net,REJECT
DOMAIN-SUFFIX,i.clkservice.youdao.com,REJECT
DOMAIN-SUFFIX,i.dreamfull.cn,REJECT
DOMAIN-SUFFIX,i.flow.browser.oppomobile.com,REJECT
-DOMAIN-SUFFIX,i.gdt.qq.com,REJECT
DOMAIN-SUFFIX,i.go.sohu.com,REJECT
DOMAIN-SUFFIX,i.haloapps.com,REJECT
DOMAIN-SUFFIX,i.hao61.net,REJECT
@@ -4566,7 +4551,6 @@ DOMAIN-SUFFIX,liangao.com,REJECT
DOMAIN-SUFFIX,liangziweixg.com,REJECT
DOMAIN-SUFFIX,lib.haotv8.com,REJECT
DOMAIN-SUFFIX,liba.haotv8.com,REJECT
-DOMAIN-SUFFIX,libs.baidu.com,REJECT
DOMAIN-SUFFIX,libs.tvmao.cn,REJECT
DOMAIN-SUFFIX,license.lumion3d.com,REJECT
DOMAIN-SUFFIX,license.lumion3d.net,REJECT
@@ -5091,7 +5075,6 @@ DOMAIN-SUFFIX,maw.wnbfw.com,REJECT
DOMAIN-SUFFIX,maxwebsearch.com,REJECT
DOMAIN-SUFFIX,maysunmedia.com,REJECT
DOMAIN-SUFFIX,mb.hockeybuzz.com,REJECT
-DOMAIN-SUFFIX,mb.yidianzixun.com,REJECT
DOMAIN-SUFFIX,mb.zam.com,REJECT
DOMAIN-SUFFIX,mbai.cn,REJECT
DOMAIN-SUFFIX,mbd.weathercn.com,REJECT
@@ -5831,7 +5814,6 @@ DOMAIN-SUFFIX,promos.fling.com,REJECT
DOMAIN-SUFFIX,promote.biz.weibo.cn,REJECT
DOMAIN-SUFFIX,promote.caixin.com,REJECT
DOMAIN-SUFFIX,promote.pair.com,REJECT
-DOMAIN-SUFFIX,promotion.aliyun.com,REJECT
DOMAIN-SUFFIX,promotion.gomlab.com,REJECT
DOMAIN-SUFFIX,promotions.iasbet.com,REJECT
DOMAIN-SUFFIX,propellerads.com,REJECT
@@ -6130,7 +6112,6 @@ DOMAIN-SUFFIX,rotate.ymtracking.com,REJECT
DOMAIN-SUFFIX,rotator.tradetracker.net,REJECT
DOMAIN-SUFFIX,router.bittorrent.com,REJECT
DOMAIN-SUFFIX,router.gwdang.com,REJECT
-DOMAIN-SUFFIX,rovio-news-app.angrybirdsgame.com,REJECT
DOMAIN-SUFFIX,rp.crasheye.cn,REJECT
DOMAIN-SUFFIX,rp.gwallet.com,REJECT
DOMAIN-SUFFIX,rpaulfrank.com,REJECT
@@ -6382,7 +6363,6 @@ DOMAIN-SUFFIX,searchignited.com,REJECT
DOMAIN-SUFFIX,searchswapper.com,REJECT
DOMAIN-SUFFIX,seavideo-ak.espn.go.com,REJECT
DOMAIN-SUFFIX,sebar.thand.info,REJECT
-DOMAIN-SUFFIX,sec.resource.xiaomi.net,REJECT
DOMAIN-SUFFIX,secpay.wostore.cn,REJECT
DOMAIN-SUFFIX,secretmedia.s3.amazonaws.com,REJECT
DOMAIN-SUFFIX,secure.dsp.com,REJECT
@@ -6443,9 +6423,7 @@ DOMAIN-SUFFIX,shbywsd.cn,REJECT
DOMAIN-SUFFIX,shenghuo.xiaomi.com,REJECT
DOMAIN-SUFFIX,shenleyuni.com,REJECT
DOMAIN-SUFFIX,shenyian.net,REJECT
-DOMAIN-SUFFIX,shenyun.com,REJECT
DOMAIN-SUFFIX,shenyun.org,REJECT
-DOMAIN-SUFFIX,shenyunperformingarts.org,REJECT
DOMAIN-SUFFIX,shglegle.com,REJECT
DOMAIN-SUFFIX,shibeiou.com,REJECT
DOMAIN-SUFFIX,shiftrro.com,REJECT
@@ -6973,8 +6951,6 @@ DOMAIN-SUFFIX,tuanxue360.net,REJECT
DOMAIN-SUFFIX,tui.gtimg.com,REJECT
DOMAIN-SUFFIX,tui1999.com,REJECT
DOMAIN-SUFFIX,tui98.cn,REJECT
-DOMAIN-SUFFIX,tuidang.epochtimes.org,REJECT
-DOMAIN-SUFFIX,tuidang.org,REJECT
DOMAIN-SUFFIX,tuigoo.com,REJECT
DOMAIN-SUFFIX,tuiguang.178.com,REJECT
DOMAIN-SUFFIX,tuiguang.meitu.com,REJECT
@@ -7616,7 +7592,6 @@ DOMAIN-SUFFIX,xingjuhe.com,REJECT
DOMAIN-SUFFIX,xiniuz.com,REJECT
DOMAIN-SUFFIX,xinju.cc,REJECT
DOMAIN-SUFFIX,xinray.com,REJECT
-DOMAIN-SUFFIX,xinsheng.net,REJECT
DOMAIN-SUFFIX,xiongdong.com,REJECT
DOMAIN-SUFFIX,xiuxiu.android.dl.meitu.com,REJECT
DOMAIN-SUFFIX,xiuxiu.mobile.meitudata.com,REJECT
@@ -7894,7 +7869,6 @@ DOMAIN-SUFFIX,zhaoshang8.com,REJECT
DOMAIN-SUFFIX,zh-cn.shenyun.com,REJECT
DOMAIN-SUFFIX,zh-cn.shenyun.org,REJECT
DOMAIN-SUFFIX,zheng.cs12d.com,REJECT
-DOMAIN-SUFFIX,zhengjian.org,REJECT
DOMAIN-SUFFIX,zhichi08.com,REJECT
DOMAIN-SUFFIX,zhidian3g.cn,REJECT
DOMAIN-SUFFIX,zhifenjie.com,REJECT
@@ -7909,7 +7883,6 @@ DOMAIN-SUFFIX,zhtjdl.com,REJECT
DOMAIN-SUFFIX,zhuanfakong.com,REJECT
DOMAIN-SUFFIX,zhuba8.com,REJECT
DOMAIN-SUFFIX,zhudiaosz.com,REJECT
-DOMAIN-SUFFIX,zhuichaguoji.org,REJECT
DOMAIN-SUFFIX,zhushou.2345.com,REJECT
DOMAIN-SUFFIX,zhuuv.maoyumao.net,REJECT
DOMAIN-SUFFIX,zhwnlapi.etouch.cn,REJECT
@@ -7978,4 +7951,8 @@ DOMAIN-SUFFIX,zzy1.quyaoya.com,REJECT
DOMAIN-SUFFIX,zzz7.52896368.com,REJECT
DOMAIN-SUFFIX,zzzzz4.52896368.com,REJECT
DOMAIN-SUFFIX,analytics.query.yahoo.com,REJECT
-DOMAIN-SUFFIX,is.snssdk.com,REJECT
\ No newline at end of file
+DOMAIN-SUFFIX,ap.dongqiudi.com,REJECT
+DOMAIN-SUFFIX,adx.open-adx.com,REJECT
+DOMAIN-SUFFIX,adservice.sigmob.cn,REJECT
+DOMAIN-SUFFIX,unidesk.alicdn.com,REJECT
+DOMAIN-SUFFIX,mcupdate.gstarcad.com,REJECT
\ No newline at end of file
diff --git a/QuantumultX/AdRuleTest.list b/QuantumultX/AdRuleTest.list
index 861fc9b1f8..48b0903ea1 100644
--- a/QuantumultX/AdRuleTest.list
+++ b/QuantumultX/AdRuleTest.list
@@ -1,4 +1,4 @@
-#Update 2019.11.21 Self-use for testing only, there may be a lot of manslaughter.
+#Update 2021.1.30 Self-use for testing only
DOMAIN-SUFFIX,admaster.com,REJECT
DOMAIN-SUFFIX,0z5jn.cn,REJECT
DOMAIN-SUFFIX,114so.cn,REJECT
@@ -93,7 +93,6 @@ DOMAIN-SUFFIX,xiazai.mathtype.cn,REJECT
DOMAIN-SUFFIX,xiazai.ntfsformac.cn,REJECT
DOMAIN-SUFFIX,xiazai.xmindchina.cn,REJECT
DOMAIN-SUFFIX,yunpifu.cn,REJECT
-DOMAIN-SUFFIX,uczzd.cn,REJECT
DOMAIN-SUFFIX,testin.cn,REJECT
DOMAIN-SUFFIX,cccwwwr.com,REJECT
DOMAIN-SUFFIX,mmkkiivv.com,REJECT
@@ -137,7 +136,6 @@ DOMAIN-SUFFIX,adfilter.imtt.qq.com,REJECT
DOMAIN-SUFFIX,adsrich.qq.com,REJECT
DOMAIN-SUFFIX,aexception.bugly.qq.com,REJECT
DOMAIN-SUFFIX,android.bugly.qq.com,REJECT
-DOMAIN-SUFFIX,appsupport.qq.com,REJECT
DOMAIN-SUFFIX,astat.bugly.qq.com,REJECT
DOMAIN-SUFFIX,beacon.qq.com,REJECT
DOMAIN-SUFFIX,bs.l.qq.com,REJECT
@@ -146,15 +144,12 @@ DOMAIN-SUFFIX,bugreportv2.qq.com,REJECT
DOMAIN-SUFFIX,c.l.qq.com,REJECT
DOMAIN-SUFFIX,c2.l.qq.com,REJECT
DOMAIN-SUFFIX,cb.l.qq.com,REJECT
-DOMAIN-SUFFIX,cdn.ark.qq.com,REJECT
DOMAIN-SUFFIX,cfg.imtt.qq.com,REJECT
-DOMAIN-SUFFIX,cgi.connect.qq.com,REJECT
DOMAIN-SUFFIX,client.show.qq.com,REJECT
DOMAIN-SUFFIX,cm.e.qq.com,REJECT
DOMAIN-SUFFIX,cm.l.qq.com,REJECT
DOMAIN-SUFFIX,dir.minigame.qq.com,REJECT
DOMAIN-SUFFIX,etg.qq.com,REJECT
-DOMAIN-SUFFIX,ex.qq.com,REJECT
DOMAIN-SUFFIX,fm.qzone.qq.com,REJECT
DOMAIN-SUFFIX,fodder.qq.com,REJECT
DOMAIN-SUFFIX,fodder.tc.qq.com,REJECT
@@ -362,7 +357,6 @@ DOMAIN-SUFFIX,cpro.baidustatic.com,REJECT
DOMAIN-SUFFIX,cpro.tieba.baidu.com,REJECT
DOMAIN-SUFFIX,cpro2.baidustatic.com,REJECT
DOMAIN-SUFFIX,dup.baidustatic.com,REJECT
-DOMAIN-SUFFIX,f10.baidu.com,REJECT
DOMAIN-SUFFIX,hm.baidu.com,REJECT
DOMAIN-SUFFIX,hmma.baidu.com,REJECT
DOMAIN-SUFFIX,idm.bce.baidu.com,REJECT
@@ -443,7 +437,6 @@ DOMAIN-SUFFIX,a.tanx.com,REJECT
DOMAIN-SUFFIX,a1.img.static.youmi.net,REJECT
DOMAIN-SUFFIX,a2.img.static.youmi.net,REJECT
DOMAIN-SUFFIX,a3.img.static.youmi.net,REJECT
-DOMAIN-SUFFIX,aboluowang.com,REJECT
DOMAIN-SUFFIX,acceptable.a-ads.com,REJECT
DOMAIN-SUFFIX,acookie.linezing.com,REJECT
DOMAIN-SUFFIX,activity.tuipear.com,REJECT
@@ -607,8 +600,6 @@ DOMAIN-SUFFIX,diagnostics.support.microsoft.com,REJECT
DOMAIN-SUFFIX,digg.analytics.live.com,REJECT
DOMAIN-SUFFIX,distf.stat.kankan.com,REJECT
DOMAIN-SUFFIX,dmm.aizhan.com,REJECT
-DOMAIN-SUFFIX,dongtaiwang.com,REJECT
-DOMAIN-SUFFIX,dongtaiwang.org,REJECT
DOMAIN-SUFFIX,dualstack.adsame-1421766300.ap-southeast-1.elb.amazonaws.com,REJECT
DOMAIN-SUFFIX,duomai.com,REJECT
DOMAIN-SUFFIX,dw-collect.ksosoft.com,REJECT
@@ -631,7 +622,6 @@ DOMAIN-SUFFIX,ecpm.tanx.com,REJECT
DOMAIN-SUFFIX,ef-dongfeng.tanx.com,REJECT
DOMAIN-SUFFIX,ef.opendsp.tanx.com,REJECT
DOMAIN-SUFFIX,ef.tanx.com,REJECT
-DOMAIN-SUFFIX,epochtimes.com,REJECT
DOMAIN-SUFFIX,eso999.com,REJECT
DOMAIN-SUFFIX,et.tanx.com,REJECT
DOMAIN-SUFFIX,et.w.inmobi.com,REJECT
@@ -753,9 +743,7 @@ DOMAIN-SUFFIX,m.nbhaosheng168.com,REJECT
DOMAIN-SUFFIX,m.rpaulfrank.com,REJECT
DOMAIN-SUFFIX,m.tixing51.net,REJECT
DOMAIN-SUFFIX,match.adsrvr.org,REJECT
-DOMAIN-SUFFIX,mhradio.org,REJECT
DOMAIN-SUFFIX,minghui.com,REJECT
-DOMAIN-SUFFIX,minghui.org,REJECT
DOMAIN-SUFFIX,mixpanel.com,REJECT
DOMAIN-SUFFIX,mobaders.com,REJECT
DOMAIN-SUFFIX,mobile.log.hunantv.com,REJECT
@@ -767,7 +755,6 @@ DOMAIN-SUFFIX,new.taobc.com,REJECT
DOMAIN-SUFFIX,news.766ba.net,REJECT
DOMAIN-SUFFIX,news.qhstatic.com,REJECT
DOMAIN-SUFFIX,ns8.adk2x.com,REJECT
-DOMAIN-SUFFIX,ntdtv.com,REJECT
DOMAIN-SUFFIX,ntdtv.org,REJECT
DOMAIN-SUFFIX,ntjacb.com,REJECT
DOMAIN-SUFFIX,ntpddq.com,REJECT
@@ -813,7 +800,6 @@ DOMAIN-SUFFIX,rc.mxmrt.com,REJECT
DOMAIN-SUFFIX,rc.nxrxt.com,REJECT
DOMAIN-SUFFIX,rdstat.tanx.com,REJECT
DOMAIN-SUFFIX,redir.metaservices.microsoft.com,REJECT
-DOMAIN-SUFFIX,renminbao.com,REJECT
DOMAIN-SUFFIX,report.qcloud.com,REJECT
DOMAIN-SUFFIX,rl.go2yd.com,REJECT
DOMAIN-SUFFIX,rs.haohaowan8.com,REJECT
@@ -844,11 +830,9 @@ DOMAIN-SUFFIX,sec-cdn.static.xiaomi.net,REJECT
DOMAIN-SUFFIX,settings-sandbox.data.microsoft.com,REJECT
DOMAIN-SUFFIX,sg.keytui.com,REJECT
DOMAIN-SUFFIX,shentus.com,REJECT
-DOMAIN-SUFFIX,shenzhoufilm.com,REJECT
DOMAIN-SUFFIX,shifen.com,REJECT
DOMAIN-SUFFIX,shooter.m.jd.com,REJECT
DOMAIN-SUFFIX,shouji.sougou.com,REJECT
-DOMAIN-SUFFIX,soundofhope.org,REJECT
DOMAIN-SUFFIX,spcdnsp.i-mobile.co.jp,REJECT
DOMAIN-SUFFIX,sqm.telemetry.microsoft.com.nsatc.net,REJECT
DOMAIN-SUFFIX,srv.buysellads.com,REJECT
@@ -926,7 +910,6 @@ DOMAIN-SUFFIX,track.eyeviewads.com,REJECT
DOMAIN-SUFFIX,tracker.yhd.com,REJECT
DOMAIN-SUFFIX,tracklog.58.com,REJECT
DOMAIN-SUFFIX,trc.taboola.com,REJECT
-DOMAIN-SUFFIX,tuidang.epochtimes.com,REJECT
DOMAIN-SUFFIX,tvupgrade.yunos.com,REJECT
DOMAIN-SUFFIX,u-x.jd.com,REJECT
DOMAIN-SUFFIX,u.123hala.com,REJECT
@@ -937,7 +920,6 @@ DOMAIN-SUFFIX,uimg.123hala.com,REJECT
DOMAIN-SUFFIX,uma.gtags.net,REJECT
DOMAIN-SUFFIX,ums.adtechjp.com,REJECT
DOMAIN-SUFFIX,ums.adtechus.com,REJECT
-DOMAIN-SUFFIX,umtrack.com,REJECT
DOMAIN-SUFFIX,union2.50bang.org,REJECT
DOMAIN-SUFFIX,up1.tj.u2.ucweb.com,REJECT
DOMAIN-SUFFIX,update.123juzi.net,REJECT
@@ -971,7 +953,6 @@ DOMAIN-SUFFIX,whzhi.com,REJECT
DOMAIN-SUFFIX,wmedia.adk2x.com,REJECT
DOMAIN-SUFFIX,wn.x.jd.com,REJECT
DOMAIN-SUFFIX,wrating.com,REJECT
-DOMAIN-SUFFIX,wujieliulan.com,REJECT
DOMAIN-SUFFIX,wvver.com,REJECT
DOMAIN-SUFFIX,ww6.adm-cnzz.net,REJECT
DOMAIN-SUFFIX,wwetjy.com,REJECT
@@ -1021,23 +1002,15 @@ DOMAIN-SUFFIX,zhugeio.com,REJECT
DOMAIN-SUFFIX,zjuwjdc.com,REJECT
DOMAIN-SUFFIX,zszrb.com,REJECT
DOMAIN-SUFFIX,zz2.hslyqs.com,REJECT
-DOMAIN,ad.10010.com,REJECT
-DOMAIN,log.b612kaji.com,REJECT
-DOMAIN,log.snssdk.com,REJECT
-DOMAIN,log.star.ele.me,REJECT
-DOMAIN,log.umsns.com,REJECT
-DOMAIN,log.voicecloud.cn,REJECT
-DOMAIN,log.ys7.com,REJECT
-DOMAIN,pagead2.googlesyndication.com,REJECT
-DOMAIN,report.jpush.cn,REJECT
-DOMAIN,s0.2mdn.net,REJECT
-DOMAIN,sp0.baidu.com,REJECT
-DOMAIN,static.jpush.cn,REJECT
-DOMAIN,static.vuevideo.net,REJECT
-DOMAIN,stats.jpush.cn,REJECT
-DOMAIN,stats.umsns.com,REJECT
-DOMAIN,wgo.mmstat.com,REJECT
-DOMAIN,zz.bdstatic.com,REJECT
+DOMAIN-SUFFIX,ad.10010.com,REJECT
+DOMAIN-SUFFIX,log.b612kaji.com,REJECT
+DOMAIN-SUFFIX,log.snssdk.com,REJECT
+DOMAIN-SUFFIX,log.star.ele.me,REJECT
+DOMAIN-SUFFIX,log.ys7.com,REJECT
+DOMAIN-SUFFIX,report.jpush.cn,REJECT
+DOMAIN-SUFFIX,static.jpush.cn,REJECT
+DOMAIN-SUFFIX,static.vuevideo.net,REJECT
+DOMAIN-SUFFIX,stats.jpush.cn,REJECT
DOMAIN-SUFFIX,3lift.com,REJECT
DOMAIN-SUFFIX,56txs4.com,REJECT
DOMAIN-SUFFIX,ad373.com,REJECT
@@ -1114,20 +1087,8 @@ DOMAIN-SUFFIX,webspectator.com,REJECT
DOMAIN-SUFFIX,xadchina.cn,REJECT
DOMAIN-SUFFIX,yldbt.com,REJECT
DOMAIN-SUFFIX,ymtracking.com,REJECT
-DOMAIN,apoll.m.taobao.com,REJECT
-DOMAIN,wn.pos.baidu.com,REJECT
-DOMAIN,ps.map.baidu.com,REJECT
-DOMAIN,sv.map.baidu.com,REJECT
-DOMAIN,offnavi.map.baidu.com,REJECT
-DOMAIN,newvector.map.baidu.com,REJECT
-DOMAIN,ulog.imap.baidu.com,REJECT
-DOMAIN,newloc.map.n.shifen.com,REJECT
-DOMAIN,thirdparty.biliapi.com,REJECT
-DOMAIN,cm.bilibili.com,REJECT
-DOMAIN,mbdlog.iqiyi.com,REJECT
-DOMAIN,mi.gdt.qq.com,REJECT
-DOMAIN,o2o.api.xiaomi.com,REJECT
-DOMAIN,mqtt.zhihu.com,REJECT
+DOMAIN-SUFFIX,thirdparty.biliapi.com,REJECT
+DOMAIN-SUFFIX,mqtt.zhihu.com,REJECT
DOMAIN-SUFFIX,linktech.cn,REJECT
DOMAIN-SUFFIX,t7z.cupid.iqiyi.com,REJECT
DOMAIN-SUFFIX,n.mark.letv.com,REJECT
@@ -1157,69 +1118,17 @@ DOMAIN-SUFFIX,catch.gift,REJECT
DOMAIN-SUFFIX,dfp.suning.com,REJECT
DOMAIN-SUFFIX,ggs.myzaker.com,REJECT
DOMAIN-SUFFIX,huodonghezi.com,REJECT
-DOMAIN-SUFFIX,iadmat.nosdn.127.net,REJECT
DOMAIN-SUFFIX,iadmusicmat.music.126.net,REJECT
DOMAIN-SUFFIX,imgad0.pconline.com.cn,REJECT
DOMAIN-SUFFIX,imgadpai.thepaper.cn,REJECT
DOMAIN-SUFFIX,impservice.dictapp.youdao.com,REJECT
-DOMAIN-SUFFIX,lbs.map.qq.com,REJECT
DOMAIN-SUFFIX,miniapp.bilibili.com,REJECT
DOMAIN-SUFFIX,mmstat.com,REJECT
DOMAIN-SUFFIX,mobilead.kuwo.cn,REJECT
-DOMAIN-SUFFIX,mtalk.google.com,REJECT
DOMAIN-SUFFIX,pv.sohu.com,REJECT
DOMAIN-SUFFIX,rd.autohome.com.cn,REJECT
DOMAIN-SUFFIX,rich.kuwo.cn,REJECT
-DOMAIN-SUFFIX,thirdparty.biliapi.com,REJECT
DOMAIN-SUFFIX,yt-adp.nosdn.127.net,REJECT
-DOMAIN-KEYWORD,admaster,REJECT
-DOMAIN-KEYWORD,admdfs,REJECT
-DOMAIN-KEYWORD,adnewnc,REJECT
-DOMAIN-KEYWORD,adsage,REJECT
-DOMAIN-KEYWORD,adsame,REJECT
-DOMAIN-KEYWORD,adsensor,REJECT
-DOMAIN-KEYWORD,adserver,REJECT
-DOMAIN-KEYWORD,adsmogo,REJECT
-DOMAIN-KEYWORD,adsrvmedia,REJECT
-DOMAIN-KEYWORD,adsserving,REJECT
-DOMAIN-KEYWORD,adsystem,REJECT
-DOMAIN-KEYWORD,advert,REJECT
-DOMAIN-KEYWORD,adwords,REJECT
-DOMAIN-KEYWORD,allyes,REJECT
-DOMAIN-KEYWORD,analysys,REJECT
-DOMAIN-KEYWORD,applovin,REJECT
-DOMAIN-KEYWORD,appsflyer,REJECT
-DOMAIN-KEYWORD,dnserror,REJECT
-DOMAIN-KEYWORD,domob,REJECT
-DOMAIN-KEYWORD,duomeng,REJECT
-DOMAIN-KEYWORD,dwtrack,REJECT
-DOMAIN-KEYWORD,fenxi,REJECT
-DOMAIN-KEYWORD,googleads,REJECT
-DOMAIN-KEYWORD,guanggao,REJECT
-DOMAIN-KEYWORD,inmobi,REJECT
-DOMAIN-KEYWORD,lianmeng,REJECT
-DOMAIN-KEYWORD,mobaders,REJECT
-DOMAIN-KEYWORD,omgmta,REJECT
-DOMAIN-KEYWORD,omniture,REJECT
-DOMAIN-KEYWORD,openx,REJECT
-DOMAIN-KEYWORD,partnerad,REJECT
-DOMAIN-KEYWORD,securepubads,REJECT
-DOMAIN-KEYWORD,socdm,REJECT
-DOMAIN-KEYWORD,supersonicads,REJECT
-DOMAIN-KEYWORD,taboola,REJECT
-DOMAIN-KEYWORD,traffic,REJECT
-DOMAIN-KEYWORD,uedas,REJECT
-DOMAIN-KEYWORD,umtrack,REJECT
-DOMAIN-KEYWORD,uploadMobileData,REJECT
-DOMAIN-KEYWORD,wlmonitor,REJECT
-DOMAIN-KEYWORD,zjtoolbar,REJECT
-DOMAIN-KEYWORD,admarvel,REJECT
-DOMAIN-KEYWORD,adservice,REJECT
-DOMAIN-KEYWORD,crashlytics,REJECT
-DOMAIN-KEYWORD,pingfore,REJECT
-DOMAIN-KEYWORD,tracking,REJECT
-DOMAIN-KEYWORD,umeng,REJECT
-DOMAIN-KEYWORD,usage,REJECT
DOMAIN-SUFFIX,e.xroun.com,REJECT
DOMAIN-SUFFIX,dflooring.com,REJECT
DOMAIN-SUFFIX,www.googleadservices.com,REJECT
@@ -1233,13 +1142,9 @@ DOMAIN-SUFFIX,gss0.bdstatic.com,REJECT
DOMAIN-SUFFIX,alogs.umengcloud.com,REJECT
DOMAIN-SUFFIX,sss.bxmns.com,REJECT
DOMAIN-SUFFIX,extlog.snssdk.com,REJECT
-DOMAIN-SUFFIX,play.googleapis.com,REJECT
DOMAIN-SUFFIX,dcps.nuomi.com,REJECT
DOMAIN-SUFFIX,focusbaiduafp.allyes.com,REJECT
-DOMAIN,em.baidu.com,REJECT
DOMAIN-SUFFIX,m.simaba.taobao.com,REJECT
-DOMAIN,sbeacon.sina.com.cn,REJECT
-DOMAIN,log.sina.cn,REJECT
DOMAIN-SUFFIX,ltsdl.qq.com,REJECT
DOMAIN-SUFFIX,yhzbjz.com,REJECT
DOMAIN-SUFFIX,ordidc.com,REJECT
@@ -1275,38 +1180,72 @@ DOMAIN-SUFFIX,go-mpulse,REJECT
DOMAIN-SUFFIX,optimizely.com,REJECT
DOMAIN-SUFFIX,umsns.com,REJECT
DOMAIN-SUFFIX,x.jd.com,REJECT
-DOMAIN,log.tu.baixing.com,REJECT
-DOMAIN-SUFFIX,sf3-ttcdn-tos.pstatp.com,REJECT
DOMAIN-SUFFIX,ads.api.vungle.com,REJECT
DOMAIN-SUFFIX,ads.wakamoment.tk,REJECT
-DOMAIN,wa.gtimg.com,REJECT
-DOMAIN,dsp.edm.weibo.cn,REJECT
-DOMAIN,e.crashlytics.com,REJECT
-DOMAIN,unidesk.alicdn.com,REJECT
-DOMAIN,cdn-adphone.wenhua.com.cn,REJECT
-DOMAIN,api.e.qq.com,REJECT
-DOMAIN,net.rayjump.com,REJECT
-DOMAIN,report.adview.cn,REJECT
+DOMAIN-SUFFIX,dsp.edm.weibo.cn,REJECT
+DOMAIN-SUFFIX,cdn-adphone.wenhua.com.cn,REJECT
+DOMAIN-SUFFIX,api.e.qq.com,REJECT
DOMAIN-SUFFIX,doubleclick.net,REJECT
-DOMAIN,gorgon.youdao.com,REJECT
-DOMAIN,video.c-ctrip.com,REJECT
-DOMAIN,agn.aty.sohu.com,REJECT
-DOMAIN,map-mobile-opnimg.cdn.bcebos.com,REJECT
-DOMAIN,mf.atm.youku.com,REJECT
+DOMAIN-SUFFIX,video.c-ctrip.com,REJECT
+DOMAIN-SUFFIX,agn.aty.sohu.com,REJECT
+DOMAIN-SUFFIX,map-mobile-opnimg.cdn.bcebos.com,REJECT
DOMAIN-SUFFIX,app.adjust.com,REJECT
-DOMAIN-SUFFIX,mob.com,REJECT
DOMAIN-SUFFIX,adthor.com,REJECT
DOMAIN-SUFFIX,pubnative.net,REJECT
DOMAIN-SUFFIX,flurry.com,REJECT
-DOMAIN-SUFFIX,igexin.com,REJECT
DOMAIN-SUFFIX,ios.bugly.qq.com,REJECT
DOMAIN-SUFFIX,iadsdk.apple.com,REJECT
-DOMAIN-KEYWORD,adashx,REJECT
-DOMAIN-KEYWORD,track,REJECT
-DOMAIN-KEYWORD,talkingdata,REJECT
DOMAIN-SUFFIX,www.jinshanju.com,REJECT
-DOMAIN-SUFFIX,iesdouyin.com,REJECT
DOMAIN-SUFFIX,test-www.douyin.com,REJECT
DOMAIN-SUFFIX,safebrowsing.urlsec.qq.com,REJECT
DOMAIN-SUFFIX,adserver-ad.321mh.com,REJECT
-DOMAIN-SUFFIX,lelefenxi.com,REJECT
\ No newline at end of file
+DOMAIN-SUFFIX,lelefenxi.com,REJECT
+DOMAIN-KEYWORD,admaster,REJECT
+DOMAIN-KEYWORD,admdfs,REJECT
+DOMAIN-KEYWORD,adnewnc,REJECT
+DOMAIN-KEYWORD,adsage,REJECT
+DOMAIN-KEYWORD,adsame,REJECT
+DOMAIN-KEYWORD,adsensor,REJECT
+DOMAIN-KEYWORD,adserver,REJECT
+DOMAIN-KEYWORD,adsmogo,REJECT
+DOMAIN-KEYWORD,adsrvmedia,REJECT
+DOMAIN-KEYWORD,adsserving,REJECT
+DOMAIN-KEYWORD,adsystem,REJECT
+DOMAIN-KEYWORD,advert,REJECT
+DOMAIN-KEYWORD,adwords,REJECT
+DOMAIN-KEYWORD,allyes,REJECT
+DOMAIN-KEYWORD,analysys,REJECT
+DOMAIN-KEYWORD,applovin,REJECT
+DOMAIN-KEYWORD,appsflyer,REJECT
+DOMAIN-KEYWORD,dnserror,REJECT
+DOMAIN-KEYWORD,domob,REJECT
+DOMAIN-KEYWORD,duomeng,REJECT
+DOMAIN-KEYWORD,dwtrack,REJECT
+DOMAIN-KEYWORD,fenxi,REJECT
+DOMAIN-KEYWORD,googleads,REJECT
+DOMAIN-KEYWORD,guanggao,REJECT
+DOMAIN-KEYWORD,inmobi,REJECT
+DOMAIN-KEYWORD,lianmeng,REJECT
+DOMAIN-KEYWORD,mobaders,REJECT
+DOMAIN-KEYWORD,omgmta,REJECT
+DOMAIN-KEYWORD,omniture,REJECT
+DOMAIN-KEYWORD,openx,REJECT
+DOMAIN-KEYWORD,partnerad,REJECT
+DOMAIN-KEYWORD,securepubads,REJECT
+DOMAIN-KEYWORD,socdm,REJECT
+DOMAIN-KEYWORD,supersonicads,REJECT
+DOMAIN-KEYWORD,taboola,REJECT
+DOMAIN-KEYWORD,traffic,REJECT
+DOMAIN-KEYWORD,uedas,REJECT
+DOMAIN-KEYWORD,uploadMobileData,REJECT
+DOMAIN-KEYWORD,wlmonitor,REJECT
+DOMAIN-KEYWORD,zjtoolbar,REJECT
+DOMAIN-KEYWORD,admarvel,REJECT
+DOMAIN-KEYWORD,adservice,REJECT
+DOMAIN-KEYWORD,crashlytics,REJECT
+DOMAIN-KEYWORD,pingfore,REJECT
+DOMAIN-KEYWORD,tracking,REJECT
+DOMAIN-KEYWORD,umeng,REJECT
+DOMAIN-KEYWORD,usage,REJECT
+DOMAIN-KEYWORD,adashx,REJECT
+DOMAIN-KEYWORD,talkingdata,REJECT
\ No newline at end of file
diff --git a/QuantumultX/Bilibili.list b/QuantumultX/Bilibili.list
new file mode 100644
index 0000000000..fee8848e83
--- /dev/null
+++ b/QuantumultX/Bilibili.list
@@ -0,0 +1,13 @@
+# 该规则集用于配合bilibili自动地区脚本使用。
+host,api.biliapi.com,Bilibili
+host,api.biliapi.net,Bilibili
+host,api.bilibili.com,Bilibili
+host,app.biliapi.com,Bilibili
+host,app.biliapi.net,Bilibili
+host,app.bilibili.com,Bilibili
+host,grpc.biliapi.net,Bilibili
+host,m.bilibili.com,Bilibili
+host,upos-hz-mirrorakam.akamaized.net,Bilibili
+host,www.bilibili.com,Bilibili
+host-keyword,cn-hk-eq-bcache-,Bilibili
+ip-cidr,121.11.192.0/24,Bilibili
\ No newline at end of file
diff --git a/QuantumultX/DisneyRating.snippet b/QuantumultX/DisneyRating.snippet
new file mode 100644
index 0000000000..5ae613e3d9
--- /dev/null
+++ b/QuantumultX/DisneyRating.snippet
@@ -0,0 +1,7 @@
+# Disney+剧集页显示IMDb / 烂番茄 / 豆瓣评分
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/DisneyRating.snippet
+
+
+^https:\/\/disney\.api\.edge\.bamgrid\.com\/explore\/v\d\.\d+\/page\/entity- url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Disney/DisneyRating.js
+
+hostname = disney.api.edge.bamgrid.com
\ No newline at end of file
diff --git a/QuantumultX/File/91.js b/QuantumultX/File/91.js
index 07b72bdf8d..4fcbe4c743 100644
--- a/QuantumultX/File/91.js
+++ b/QuantumultX/File/91.js
@@ -1,20 +1,29 @@
/*
-91 short video unlock vip
-app download link : http://i91.porn
+91短视频 解锁部分限制
+http://download.91porn.love/
-QX1.0.0:
-^https?:\/\/.+\.(my10api|(.*91.*))\.(com|tips|app|xyz)(:\d{2,5})?\/api.php$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/91.js
+***************************
+QuantumultX:
-Surge4.0:
-http-request ^https?:\/\/.+\.(my10api|(.*91.*))\.(com|tips|app|xyz)(:\d{2,5})?\/api.php$ script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/91ShortVideo.js
-*/
+[rewrite_local]
+^https?:\/\/.+?\.(my10api|(.*91.*))\.(com|tips|app|xyz)(:\d{2,5}|)\/api.php$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/91.js
-var body = $response.body;
-var obj = JSON.parse(body);
-var headers = $request.headers;
-let length = headers['Content-Length'];
-if(length == 462 || length == 464 || length == 466 || length == 570 || length == 572 || length == 574) {
- obj['data'] = "FCA27C420C9BC230C86627D052F62E5E04CC1B51BF986A7C60673DC92F82697E9EB8C7BFB5AA267AC87399CDF8DBD1B1B25FEA57E27F38D0FCFB0CA5CFD8ED7B809FBCF3372C4DBB22083C4BC85A039512735A83834D7450EFD24EA2712FF841050BE99B7A4A31BBFCBE28BD3522227838BABE6E372874533E51A59A81CBFCB9C943C5C9646091E408D3B68BF6122DA929D558290D186EFBA2BE8019B86E35CB174626952650A959CA1A116ADCF1B14773DB033A8055E56F673682219629775138CDF3C653A0179232C8B653FDEB45D704140F8CA0C7716A02E5F7ED7CB41A68A247E9ECC0B744318534B0501865FBDF68AA1E7167663B59EDD8C56114E4A52B52A2020CA89B0F06F9D626BE3446ED5BF64E2FEE7AEA815CC047DBF3AE0F07DF1B4856070430ECF72AA542E22AF59861F2E48099C6E2CF2C1E3DD938196CB40FEE135A61AC76AAE6011C5A126CF9477AA0FDB76BE94279B66063E93E0FC8CFD802D0E2326B462EE26BF073E22B19A60F8BAF74C891DC57B18C8EFA091C9C66B6E94468E9A7165403A0CD2A3D45B23B2A0A43CEEF16FAF704866B6AC10686C8B6C65FB43DFDA9F531576815E7337E640C22870D8E9E4F1AEB6B5386BA48B264FBE302B2D0724C8D8FE9A147397BF8046114C06A99DF953E43ADBBBD3EBC538AEFC02091156B2782C482F17792D4D9FADBA46FB1BA8491146EC2393AB5C26C33CF0B61854D5492D2171A09AA147ACD9FD75798F43154E70624740A08F49507EF296B9B6FC54680C4A8AC265CF7717C8FA646207BF97A0B8241736FAA61EFB1F828545F515940F7873B20E6A1ABE055746F72F03EF49AAACA30A9C2EEF8E5CDE41BE80B1E5B66F485062F70B36A3ACE30116E062B06F95B404291398337E9449C919C096DE09DDF772CBC7373678AE532AB190C02414F2E0777C62679E5B6790D40FB17D832B4A27308D48D53B2A2302F0616BA6ECDD78947205456B0C063EF1EFE54125131F6755971C4DC84087135A89AFBC9BEC74C530BE9A22067A503DC535F0BF9DA16EE2BE41AF891C1A1A55F7B8522A6CA3D7044740316CAA2A25DE5DE1E67DA72E60FE46B5E49029852C859F2ACDDC57233F47AB3C4290E67B851A55B7C834D4A5DFE3E0E16344D0AF027E70ED05E269DBC955AAC496F0A9F794DD8E5059FA73D6A1A249B9E91921A48FE2CC639B29D97073FD936993E9B4634EAE4F805E1F5F65001FA81EE94FF142FE48C6D25CCE206F8731FFE321611ED0C9D95511B3AD30E43F668409A32742C0383A6B3B43663FAEF31F334C83EC641CC451D2FCBA2287E825206A7A2E980E53C2B6D3F39D4581E96719632425518F8CF04FEA775F6F828B75E7EF3C0F36D952DCA728955DADB3D501FFEA09E21D272912DFA4C5DE82B02A459E94100B522A86BA27D841B26754179606DC9C3A25968A915EB070431DA31E76C8C3F8F689957ECE7CB4644EAA545A8EBC151466554120767BC4353B0D252C566A535182AF6B53247A2C024DAA12E9EEDE31F6988804444E40157429F832BA8A959B9A62449ED822D1532BD52870B46BDA1509C1C9619F1EFDF4EA5BC9C1A49B3EF91B0FF3548C78905D248FD5195843A447F4BAFF13965303A0B9B719327698E2D679B43D4D25A8F4CDB316CD21E6C88E21A98187930C82EB616ABE917E1C2B5C045D97CDD41FA65E999F9B7FFEDAAE0F9B735A9BAC94533A2A14B3D4413E4723D947D23CA48E52A67A6506B647810F45B92AB1703C068E67EF1ECA8C3D3BF2149AEC9C0CD623850338445088C3AFA3CC08D30BF12CFA448A10C4E3C4AA5108F9DC1C7D223A0E1A89B01B1C64DB2DFEFBABC32C4F3EAEA6EA39587D44512E9A3F579844974974EEDDC125EA3A56F3821C9FE387CEA62C37160633E14E99A33FC0CB68D19F58EB6A93380476C01A7A0E9631412BEAD87FDCE17DECA4E475A47B0D6DD82D7EDBCC677D487220B172FED1E26AAA00A1771B11A281F6CC3E9582862331765E162033025DBCD8FC9CC3E50A27C72940A5E0C7692E5B474D132FB11D017706D9D653E1731E5EFC1337A964EB9F0C1865FE475421816ADC7ADACE6FAFA6BA0D8B7FECF766B640D5944254BC9DD638BAB91313DF77C91A8FB74012873AFCB3EACF18CA8D1C67EE16F6F83CA22D59F5D577F5B0844D4FFBC1A6D9C37F5848CB672E32AA48445A1B6D6837CCF98E4D4FE49B5F62186940F868473BA71F2C68C62687D9E5BB4B01E5E079A040275D86E66559025E6253D1759559B1FA60F48B7AC130F0070D21C0E38CDCF63DD755CD790FD3990109A3B856422E8118C5075D6EDFB58EFF8AA4401871036ADB9F766F9FC895F317A9D9DF38BD6E0D3E671BBE79F2C4BC8811F5E94A878D0E922FBAC4C86";
-}
-body = JSON.stringify(obj);
-$done(body);
+***************************
+Surge4:
+
+[Script]
+http-response ^https?:\/\/.+?\.(my10api|(.*91.*))\.(com|tips|app|xyz)(:\d{2,5}|)\/api.php$ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/91.js
+
+[General]
+force-http-engine-hosts = *91*:8080, *my10api*:8080
+
+**************************/
+
+let body = $response.body;
+let obj = JSON.parse(body && /^\{/.test(body) ? body : '{}');
+if (obj.data && obj.data.match(/^[A-Z0-9]{1000,40000}$/)) {
+ obj.data = "FCA27C420C9BC230C86627D052F62E5E04CC1B51BF986A7C60673DC92F82697E9EB8C7BFB5AA267AC87399CDF8DBD1B1B25FEA57E27F38D0FCFB0CA5CFD8ED7B809FBCF3372C4DBB22083C4BC85A039512735A83834D7450EFD24EA2712FF841050BE99B7A4A31BBFCBE28BD3522227838BABE6E372874533E51A59A81CBFCB9C943C5C9646091E408D3B68BF6122DA929D558290D186EFBA2BE8019B86E35CB174626952650A959CA1A116ADCF1B14773DB033A8055E56F673682219629775138CDF3C653A0179232C8B653FDEB45D704140F8CA0C7716A02E5F7ED7CB41A68A247E9ECC0B744318534B0501865FBDF68AA1E7167663B59EDD8C56114E4A52B52A2020CA89B0F06F9D626BE3446ED5BF64E2FEE7AEA815CC047DBF3AE0F07DF1B4856070430ECF72AA542E22AF59861F2E48099C6E2CF2C1E3DD938196CB40FEE135A61AC76AAE6011C5A126CF9477AA0FDB76BE94279B66063E93E0FC8CFD802D0E2326B462EE26BF073E22B19A60F8BAF74C891DC57B18C8EFA091C9C66B6E94468E9A7165403A0CD2A3D45B23B2A0A43CEEF16FAF704866B6AC10686C8B6C65FB43DFDA9F531576815E7337E640C22870D8E9E4F1AEB6B5386BA48B264FBE302B2D0724C8D8FE9A147397BF8046114C06A99DF953E43ADBBBD3EBC538AEFC02091156B2782C482F17792D4D9FADBA46FB1BA8491146EC2393AB5C26C33CF0B61854D5492D2171A09AA147ACD9FD75798F43154E70624740A08F49507EF296B9B6FC54680C4A8AC265CF7717C8FA646207BF97A0B8241736FAA61EFB1F828545F515940F7873B20E6A1ABE055746F72F03EF49AAACA30A9C2EEF8E5CDE41BE80B1E5B66F485062F70B36A3ACE30116E062B06F95B404291398337E9449C919C096DE09DDF772CBC7373678AE532AB190C02414F2E0777C62679E5B6790D40FB17D832B4A27308D48D53B2A2302F0616BA6ECDD78947205456B0C063EF1EFE54125131F6755971C4DC84087135A89AFBC9BEC74C530BE9A22067A503DC535F0BF9DA16EE2BE41AF891C1A1A55F7B8522A6CA3D7044740316CAA2A25DE5DE1E67DA72E60FE46B5E49029852C859F2ACDDC57233F47AB3C4290E67B851A55B7C834D4A5DFE3E0E16344D0AF027E70ED05E269DBC955AAC496F0A9F794DD8E5059FA73D6A1A249B9E91921A48FE2CC639B29D97073FD936993E9B4634EAE4F805E1F5F65001FA81EE94FF142FE48C6D25CCE206F8731FFE321611ED0C9D95511B3AD30E43F668409A32742C0383A6B3B43663FAEF31F334C83EC641CC451D2FCBA2287E825206A7A2E980E53C2B6D3F39D4581E96719632425518F8CF04FEA775F6F828B75E7EF3C0F36D952DCA728955DADB3D501FFEA09E21D272912DFA4C5DE82B02A459E94100B522A86BA27D841B26754179606DC9C3A25968A915EB070431DA31E76C8C3F8F689957ECE7CB4644EAA545A8EBC151466554120767BC4353B0D252C566A535182AF6B53247A2C024DAA12E9EEDE31F6988804444E40157429F832BA8A959B9A62449ED822D1532BD52870B46BDA1509C1C9619F1EFDF4EA5BC9C1A49B3EF91B0FF3548C78905D248FD5195843A447F4BAFF13965303A0B9B719327698E2D679B43D4D25A8F4CDB316CD21E6C88E21A98187930C82EB616ABE917E1C2B5C045D97CDD41FA65E999F9B7FFEDAAE0F9B735A9BAC94533A2A14B3D4413E4723D947D23CA48E52A67A6506B647810F45B92AB1703C068E67EF1ECA8C3D3BF2149AEC9C0CD623850338445088C3AFA3CC08D30BF12CFA448A10C4E3C4AA5108F9DC1C7D223A0E1A89B01B1C64DB2DFEFBABC32C4F3EAEA6EA39587D44512E9A3F579844974974EEDDC125EA3A56F3821C9FE387CEA62C37160633E14E99A33FC0CB68D19F58EB6A93380476C01A7A0E9631412BEAD87FDCE17DECA4E475A47B0D6DD82D7EDBCC677D487220B172FED1E26AAA00A1771B11A281F6CC3E9582862331765E162033025DBCD8FC9CC3E50A27C72940A5E0C7692E5B474D132FB11D017706D9D653E1731E5EFC1337A964EB9F0C1865FE475421816ADC7ADACE6FAFA6BA0D8B7FECF766B640D5944254BC9DD638BAB91313DF77C91A8FB74012873AFCB3EACF18CA8D1C67EE16F6F83CA22D59F5D577F5B0844D4FFBC1A6D9C37F5848CB672E32AA48445A1B6D6837CCF98E4D4FE49B5F62186940F868473BA71F2C68C62687D9E5BB4B01E5E079A040275D86E66559025E6253D1759559B1FA60F48B7AC130F0070D21C0E38CDCF63DD755CD790FD3990109A3B856422E8118C5075D6EDFB58EFF8AA4401871036ADB9F766F9FC895F317A9D9DF38BD6E0D3E671BBE79F2C4BC8811F5E94A878D0E922FBAC4C86";
+ $done({body: JSON.stringify(obj)});
+ } else {
+ $done({})
+ }
\ No newline at end of file
diff --git a/QuantumultX/File/ColorWeather.js b/QuantumultX/File/ColorWeather.js
deleted file mode 100644
index 156b700d0b..0000000000
--- a/QuantumultX/File/ColorWeather.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-CaiYun Weather (ColorWeather) unlock Vip
-
-QX 1.0.0:
-^https:\/\/biz\.caiyunapp\.com\/v2\/user\?app_name\=weather url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/ColorWeather.js
-
-MitM = biz.caiyunapp.com
-*/
-
-var _0xe0e0=["\x62\x6F\x64\x79","\x70\x61\x72\x73\x65","\x78\x79\x5F\x76\x69\x70\x5F\x65\x78\x70\x69\x72\x65","\x72\x65\x73\x75\x6C\x74","\x69\x73\x5F\x76\x69\x70","\x76\x69\x70\x5F\x65\x78\x70\x69\x72\x65\x64\x5F\x61\x74","\x69\x73\x5F\x78\x79\x5F\x76\x69\x70","\x73\x74\x72\x69\x6E\x67\x69\x66\x79"];var body=$response[_0xe0e0[0]];var obj=JSON[_0xe0e0[1]](body);obj[_0xe0e0[3]][_0xe0e0[2]]= 4096483190;obj[_0xe0e0[3]][_0xe0e0[4]]= true;obj[_0xe0e0[3]][_0xe0e0[5]]= 4096483190;obj[_0xe0e0[3]][_0xe0e0[6]]= true;body= JSON[_0xe0e0[7]](obj);$done(body)
\ No newline at end of file
diff --git a/QuantumultX/File/DiDaQingDan.js b/QuantumultX/File/DiDaQingDan.js
deleted file mode 100644
index 62c4c95f52..0000000000
--- a/QuantumultX/File/DiDaQingDan.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
-TickTick (Tick list) unlock pro
-QX:
-^https:\/\/(ticktick|dida365)\.com\/api\/v2\/user\/status url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/DiDaQingDan.js
-
-hostname = dida365.com, ticktick.com
-*/
-
-var _0xf36b=["\x62\x6F\x64\x79","\x70\x61\x72\x73\x65","\x70\x72\x6F\x45\x6E\x64\x44\x61\x74\x65","\x32\x30\x39\x39\x2D\x30\x31\x2D\x30\x31\x54\x30\x30\x3A\x30\x30\x3A\x30\x30\x2E\x30\x30\x30\x2B\x30\x30\x30\x30","\x6E\x65\x65\x64\x53\x75\x62\x73\x63\x72\x69\x62\x65","\x70\x72\x6F","\x73\x74\x72\x69\x6E\x67\x69\x66\x79"];var body=$response[_0xf36b[0]];var obj=JSON[_0xf36b[1]](body);obj[_0xf36b[2]]= _0xf36b[3];obj[_0xf36b[4]]= false;obj[_0xf36b[5]]= true;body= JSON[_0xf36b[6]](obj);$done(body)
diff --git a/QuantumultX/File/VSCO b/QuantumultX/File/VSCO
deleted file mode 100644
index d361d4ff3f..0000000000
--- a/QuantumultX/File/VSCO
+++ /dev/null
@@ -1 +0,0 @@
-{"user_subscription":{"expires_on_sec":1655536094,"is_intro_period":false,"expired":false,"payment_type":2,"user_id":54624336,"source":1,"is_trial_period":true,"starts_on_sec":1560831070,"intro_offer_consumed":true,"is_active":true,"canceled_at_sec":null,"auto_renew":true,"is_in_grace_period":false,"last_verified_sec":1560831070,"invalid_reason":null,"subscription_code":"VSCOANNUAL"}}
\ No newline at end of file
diff --git a/QuantumultX/File/Wechat.js b/QuantumultX/File/Wechat.js
index f3ab4c7dd5..4300424b44 100644
--- a/QuantumultX/File/Wechat.js
+++ b/QuantumultX/File/Wechat.js
@@ -1,18 +1,28 @@
/*
-Remove the WeChat public account bottom ad
+微信 去除公众号文章底部广告
-QX:
+***************************
+QuantumultX:
+
+[rewrite_local]
^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js
-Surge4:
+[mitm]
+hostname = mp.weixin.qq.com
+
+***************************
+Surge4 or Loon:
+
+[Script]
http-response ^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js
-Surge & QX MITM = mp.weixin.qq.com,
-*/
+[MITM]
+hostname = mp.weixin.qq.com
+
+**************************/
var obj = JSON.parse($response.body);
obj.advertisement_num = 0;
obj.advertisement_info = [];
+delete obj.appid;
$done({body: JSON.stringify(obj)});
-
-//by Choler
\ No newline at end of file
diff --git a/QuantumultX/File/Zymh.js b/QuantumultX/File/Zymh.js
index 47c1b4c5d7..ea44395072 100644
--- a/QuantumultX/File/Zymh.js
+++ b/QuantumultX/File/Zymh.js
@@ -1,45 +1,28 @@
/*
-知音漫客 unlock vip
+解锁知音漫客付费章节 (需登录)
-QX:
-^https://getuserinfo-globalapi.zymk.cn/app_api/v5/(getuserinfo|coin_account|getuserinfo_ticket|getcomicinfo)/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
+***************************
+QuantumultX:
-Surge4:
-http-response ^https://getuserinfo-globalapi.zymk.cn/app_api/v5/(getuserinfo|coin_account|getuserinfo_ticket|getcomicinfo)/ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
+[rewrite_local]
+^https:\/\/apigate\.kaimanhua\.com\/(zymk-getuserinfo-api\/v1\/getuserinfo|zymk-userpurchased-api\/v1\/userpurchased\/paychapters)\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
-Surge & QX MITM = getuserinfo-globalapi.zymk.cn
-*/
+[mitm]
+hostname = apigate.kaimanhua.com
-let url = $request.url;
-let body = JSON.parse($response.body);
+***************************
+Surge4 or Loon:
-let user = '/app_api/v5/getuserinfo/';
-let coin = '/app_api/v5/coin_account/';
-let ticket = '/app_api/v5/getuserinfo_ticket/';
-let free = '/app_api/v5/getcomicinfo/';
+[Script]
+http-response ^https:\/\/apigate\.kaimanhua\.com\/(zymk-getuserinfo-api\/v1\/getuserinfo|zymk-userpurchased-api\/v1\/userpurchased\/paychapters)\/ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
-if (url.indexOf(user) != -1) {
- body.data.coins = 6666;
- body.data.isvip = 1;
- body.data.recommend = 6666;
- body.data.Cticket = 6666;
- body.data.Cgold = 6666;
-}
-else if (url.indexOf(coin) != -1) {
- body.data.coins = 6666;
- body.data.golds = 6666;
-}
-else if (url.indexOf(ticket) != -1) {
- body.data.Cticket = 6666;
-}
+[MITM]
+hostname = apigate.kaimanhua.com
+**************************/
-else if (url.indexOf(free) != -1) {
- body.data.price = 0;
- body.data.download_price = 0;
-}
-
- body = JSON.stringify(body);
-
-$done({body});
-
-//by mieqq
\ No newline at end of file
+var obj = JSON.parse($response.body);
+obj.status = 0;
+obj.data.isvip = 1;
+obj.data.coins = 6666;
+obj.data.Cgold = 6666;
+$done({body: JSON.stringify(obj)});
diff --git a/QuantumultX/File/aimeiju.js b/QuantumultX/File/aimeiju.js
deleted file mode 100644
index eedcf1fda5..0000000000
--- a/QuantumultX/File/aimeiju.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-爱美剧 unlock vip
-app download link : app.meiju2018.com
-
-QX :
-^https?:\/\/mjapp\.\w{1,9}\.com\/index\.php\/app\/ios\/(vod\/show|user\/index) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/aimeiju.js
-
-Surge4:
-http-response ^https?:\/\/mjapp\.\w{1,9}\.com\/index\.php\/app\/ios\/(vod\/show|user\/index) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/aimeiju.js
-*/
-
-var body = $response.body;
-var url = $request.url;
-const path1 = "/index.php/app/ios/user/index";
-const path2 = "/index.php/app/ios/vod/show";
-
-if (url.indexOf(path1) != -1){
- let obj = JSON.parse(body);
- obj.data.user["viptime"] = "2066-01-01 08:00:00";
- obj.data.user["cion"] = "66666";
- obj.data.user["vip"] = "1";
- body = JSON.stringify(obj);
-}
-
-if (url.indexOf(path2) != -1){
- let obj = JSON.parse(body);
- obj.data["looktime"] = -1;
- obj.data["vip"] = "4";
- body = JSON.stringify(obj);
-}
-
-$done({body});
-
-
-// Made by Meeta
\ No newline at end of file
diff --git a/QuantumultX/File/bdmh.js b/QuantumultX/File/bdmh.js
deleted file mode 100644
index 4cc4f9ea2b..0000000000
--- a/QuantumultX/File/bdmh.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-蜜桃漫画 unlock vip
-
-QX:
-^https?:\/\/(bd|bdapp|mitaoapp)\.(4008109966|yeduapp)\.(net|com)\/\/index\.php\/api\/User\/userLogin url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bdmh.js
-
-Surge4:
-http-response ^https?:\/\/(bd|bdapp|mitaoapp)\.(4008109966|yeduapp)\.(net|com)\/\/index\.php\/api\/User\/userLogin requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bdmh.js
-*/
-
-var body = $response.body;
-var obj = JSON.parse(body);
-
-obj.data.user_info.isvip = "1";
-obj.data.user_info.is_pay = "1";
-obj.data.user_info.egold = "66666";
-obj.data.user_info.vip_days = "66666";
-obj.data.user_info.vip_start_time = "1502969604";
-obj.data.user_info.vip_overtime = "2066-06-06 06:00:00";
-obj.data.user_info.name = "脚本禁止牟利,TG频道@NobyDa";
-obj.data.user_info.avatar = "https://avatars3.githubusercontent.com/u/53217160?s=400&v=4";
-
-body = JSON.stringify(obj);
-$done({body});
\ No newline at end of file
diff --git a/QuantumultX/File/bilibiliAccount.js b/QuantumultX/File/bilibiliAccount.js
deleted file mode 100644
index 3a9158fa01..0000000000
--- a/QuantumultX/File/bilibiliAccount.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-bilibili remove some account modules. by onewayticket255
-
-QX:
-^https://app.bilibili.com/x/v2/account/mine\?access_key url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliAccount.js
-
-Surge4:
-http-response ^https://app.bilibili.com/x/v2/account/mine\?access_key requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliAccount.js
-
-Surge & QX MITM = app.bilibili.com
-*/
-
-let body = $response.body
-body=JSON.parse(body)
-body['data']['sections'].splice(2,1)
-body=JSON.stringify(body)
-$done({body})
\ No newline at end of file
diff --git a/QuantumultX/File/bilibiliTab.js b/QuantumultX/File/bilibiliTab.js
deleted file mode 100644
index 23a4fc91d1..0000000000
--- a/QuantumultX/File/bilibiliTab.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-bilibili home page module customization whitelist. by onewayticket255
-
-QX:
-^https://app.bilibili.com/x/resource/show/tab\?access_key url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliTab.js
-
-Surge4:
-http-response ^https://app.bilibili.com/x/resource/show/tab\?access_key requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliTab.js
-
-Surge & QX MITM = app.bilibili.com
-*/
-
-let whitelist=['追番','推荐','直播','热门','影视']
-
-let body = $response.body
-body=JSON.parse(body)
-
-body['data']['tab'].forEach((element, index) => {
-if(!(whitelist.includes(element['name']))) body['data']['tab'].splice(index,1)
-});
-
-body['data']['bottom'].forEach((element, index)=> {
- if(element['pos']==4){
- body['data']['bottom'].splice(index,1)
- }
-})
-
-body=JSON.stringify(body)
-$done({body})
\ No newline at end of file
diff --git a/QuantumultX/File/bilifj.js b/QuantumultX/File/bilifj.js
deleted file mode 100644
index 909d2e9332..0000000000
--- a/QuantumultX/File/bilifj.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-bilibili fan drama open 1080P+
-
-QX:
-^https?:\/\/api\.bilibili\.com\/pgc\/player\/api\/playurl url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilifj.js
-
-Surge4:
-http-response ^https?:\/\/api\.bilibili\.com\/pgc\/player\/api\/playurl requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilifj.js
-
-Surge & QX MITM = api.bilibili.com
-*/
-
-var body = $response.body;
-var url = $request.url;
-
-const path1 = '/pgc/player/api/playurl';
-
-if (url.indexOf(path1) != -1) {
- let obj = JSON.parse(body);
- obj["quality"] = obj["accept_quality"][0];
- body = JSON.stringify(obj);
- }
-
-$done({body});
\ No newline at end of file
diff --git a/QuantumultX/File/dapian.js b/QuantumultX/File/dapian.js
deleted file mode 100644
index 0c8e1c0d1c..0000000000
--- a/QuantumultX/File/dapian.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-大片 unlock vip
-
-QX:
-^https?:\/\/api\.vnision\.com\/v1\/(users\/|banners) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/dapian.js
-
-Surge4:
-http-response ^https?:\/\/api\.vnision\.com\/v1\/(users\/|banners) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/dapian.js
-
-Surge & QX MITM = api.vnision.com
-*/
-
-var body = $response.body;
-var url = $request.url;
-
-const vip = '/v1/users/';
-const ad = '/v1/banners';
-
-if (url.indexOf(vip) != -1) {
- let obj = JSON.parse(body);
- obj.user.is_member = 1;
- body = JSON.stringify(obj);
- }
-
-if (url.indexOf(ad) != -1) {
- let obj = JSON.parse(body);
- delete obj.banners
- body = JSON.stringify(obj);
- }
-
-$done({body});
\ No newline at end of file
diff --git a/QuantumultX/File/kmh.js b/QuantumultX/File/kmh.js
deleted file mode 100644
index c86dc5e14b..0000000000
--- a/QuantumultX/File/kmh.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-看漫画极速版 unlock vip, currently off the shelf
-
-QX:
-^https?:\/\/getuserinfo\.321mh\.com\/app_api\/v5\/getuserinfo\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/kmh.js
-
-Surge4:
-http-response ^https?:\/\/getuserinfo\.321mh\.com\/app_api\/v5\/getuserinfo\/ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/kmh.js
-
-Surge & QX MITM = getuserinfo.321mh.com
-*/
-
-var body = $response.body;
-var url = $request.url;
-const path = "/app_api/v5/getuserinfo/";
-let obj = JSON.parse(body);
-if (url.indexOf(path) != -1) {
- obj["isvip"] = "1";
- body = JSON.stringify(obj);
- }
-$done({body});
-
-// From HoGer
diff --git a/QuantumultX/File/vsco.js b/QuantumultX/File/vsco.js
index b295b9861d..c308e1dd1e 100644
--- a/QuantumultX/File/vsco.js
+++ b/QuantumultX/File/vsco.js
@@ -1,38 +1,53 @@
-/*
-VSCO unlock vip
-
-QX:
-^https?:\/\/vsco\.co\/api\/subscriptions\/2.1\/user-subscriptions\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
-
-Surge4:
-http-response ^https?:\/\/vsco\.co\/api\/subscriptions\/2.1\/user-subscriptions\/ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
-
-Surge & QX MITM = vsco.co
-*/
-
-var body = $response.body;
-var url = $request.url;
-
-const path1 = '/api/subscriptions/2.1/user-subscriptions/';
-
-let obj = JSON.parse(body);
-
-if (url.indexOf(path1) != -1) {
- obj.user_subscription["expires_on_sec"] = 1655536094;
- obj.user_subscription["expired"] = false;
- obj.user_subscription["payment_type"] = 2;
- obj.user_subscription["is_trial_period"] = true;
- obj.user_subscription["starts_on_sec"] = 1560831070;
- obj.user_subscription["is_active"] = true;
- obj.user_subscription["auto_renew"] = true;
- obj.user_subscription["last_verified_sec"] = 1560831070;
- obj.user_subscription["subscription_code"] = "VSCOANNUAL";
- obj.user_subscription["user_id"] = 54624336;
- obj.user_subscription["source"] = 1;
- body = JSON.stringify(obj);
- }
-
-$done({body});
-
-// 自用 转载需注明出处
-// TG频道: https://t.me/NobyDa
\ No newline at end of file
+/********************************
+Membership unlock for VSCO & 1Blocker & HTTPBot
+Please note that you may need to reinstall app for script to work.
+
+QuantumultX rewrite link:
+https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
+
+Please note that the above rewrite link requires open KOP-XIAO's resource parser
+
+*********************************
+Surge4, Loon and Shadowrocket configuration:
+
+[Script]
+http-request ^https?:\/\/api\.revenuecat\.com\/v\d\/subscribers\/ script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
+http-response ^https?:\/\/api\.revenuecat\.com\/v\d\/subscribers\/ requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
+
+[MITM]
+hostname = api.revenuecat.com
+********************************/
+
+const resp = {};
+const obj = JSON.parse(typeof $response != "undefined" && $response.body || null);
+const ua = $request.headers['User-Agent'] || $request.headers['user-agent'];
+const list = {
+ 'HTTPBot': { name: 'rc_lifetime', id: 'com.behindtechlines.HTTPBot.prounlock' },
+ 'VSCO': { name: 'membership', id: 'com.circles.fin.premium.yearly' },
+ '1Blocker': { name: 'premium', id: 'blocker.ios.subscription.yearly' }
+};
+const data = {
+ "expires_date": "2030-02-18T07:52:54Z",
+ "original_purchase_date": "2020-02-11T07:52:55Z",
+ "purchase_date": "2020-02-11T07:52:54Z"
+};
+
+if (typeof $response == "undefined") {
+ delete $request.headers["x-revenuecat-etag"]; // prevent 304 issues
+ delete $request.headers["X-RevenueCat-ETag"];
+ resp.headers = $request.headers;
+} else if (obj && obj.subscriber) {
+ obj.subscriber.subscriptions = obj.subscriber.subscriptions || {};
+ obj.subscriber.entitlement = obj.subscriber.entitlement || {};
+ for (const i in list) {
+ if (new RegExp(`^${i}`, `i`).test(ua)) {
+ obj.subscriber.subscriptions[list[i].id] = data;
+ obj.subscriber.entitlements[list[i].name] = JSON.parse(JSON.stringify(data));
+ obj.subscriber.entitlements[list[i].name].product_identifier = list[i].id;
+ break;
+ }
+ }
+ resp.body = JSON.stringify(obj);
+}
+
+$done(resp);
diff --git a/QuantumultX/File/wnyd.js b/QuantumultX/File/wnyd.js
index 17ed0c62b7..c0f0673276 100644
--- a/QuantumultX/File/wnyd.js
+++ b/QuantumultX/File/wnyd.js
@@ -1,20 +1,29 @@
/*
-Netease snail reading unlock vip
+网易蜗牛读书 解锁特权
+原作者: yxiaocai & JO2EY
-QX:
+***************************
+QuantumultX:
+
+[rewrite_local]
^https?:\/\/p\.du\.163\.com\/gain\/readtime\/info\.json url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js
-Surge4:
+[mitm]
+hostname = p.du.163.com
+
+***************************
+Surge4 or Loon:
+
+[Script]
http-response ^https?:\/\/p\.du\.163\.com\/gain\/readtime\/info\.json requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js
-Surge & QX MITM = p.du.163.com
-*/
+[MITM]
+hostname = p.du.163.com
+**************************/
var body = $response.body;
var obj = JSON.parse(body);
-obj.tradeEndTime = 1679685290000;
+obj.tradeEndTime = 1879685290000;
body = JSON.stringify(obj);
$done({body});
-
-//By yxiaocai & JO2EY
diff --git a/QuantumultX/File/wykaola.js b/QuantumultX/File/wykaola.js
deleted file mode 100644
index b5953d4bbc..0000000000
--- a/QuantumultX/File/wykaola.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Netease koala removes ads
-
-QX:
-^https://sp\.kaola\.com/api/openad$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wykaola.js
-
-Surge4:
-http-response ^https://sp\.kaola\.com/api/openad$ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wykaola.js
-
-Surge & QX MITM = sp.kaola.com
-*/
-
-var obj = JSON.parse($response.body);
-obj = null;
-$done({body: JSON.stringify(obj)});
-
-//by Choler
\ No newline at end of file
diff --git a/QuantumultX/File/xjsp.js b/QuantumultX/File/xjsp.js
index 85843fab6b..b5c8f35a40 100644
--- a/QuantumultX/File/xjsp.js
+++ b/QuantumultX/File/xjsp.js
@@ -1,50 +1,55 @@
/*
-Banana video unlock vip
-app download link : http://tinyurl.com/y57j6hjg
+香蕉视频 解锁部分观看限制
+官网: https://www.aa2.app
-QX:
-^https?:\/\/(ios|apple)\.fuliapps\.com\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
+***************************
+QuantumultX:
-Surge4:
-http-response ^https?:\/\/(ios|apple)\.fuliapps\.com\/ requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
+[rewrite_local]
+^https?:\/\/.+?\.(pipi|fuli|xiang(jiao|xiang))apps\.com\/(ucp\/index|getGlobalData|(\/|)vod\/reqplay\/) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
-Surge & QX MITM = *.fuliapps.com
-*/
+[mitm]
+hostname = ios.fuliapps.com, apple.fuliapps.com, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, *.pipiapps.com
+
+***************************
+Surge4 or Loon:
+
+[Script]
+http-response https?:\/\/.+?\.(pipi|fuli|xiang(jiao|xiang))apps\.com\/(ucp\/index|getGlobalData|(\/|)vod\/reqplay\/) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
+
+[MITM]
+hostname = ios.fuliapps.com, apple.fuliapps.com, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, *.pipiapps.com
+
+**************************/
var body = $response.body;
var url = $request.url;
-const path1 = "/ucp/index";
-const path2 = "/getGlobalData";
-const path3 = "/vod/reqplay/"
-if (url.indexOf(path1) != -1){
- let obj = JSON.parse(body);
- obj.data.uinfo.down_daily_remainders = "666";
- obj.data.uinfo.play_daily_remainders = "666";
- obj.data.uinfo["next_upgrade_need"] = "0";
- obj.data.user.isvip = "1";
- obj.data.user.nickname = "Meeta_share";
- obj.data.user.gicon = "V5";
- obj.data.user.gid = "5";
- obj.data.user.avatar = "https://s2.ax1x.com/2019/07/11/ZRNrbq.th.jpg";
- body = JSON.stringify(obj);
-}
-
-if (url.indexOf(path2) != -1){
- let obj = JSON.parse(body);
- obj.data.app_launch_times_adshow = "0";
- obj.data.adgroups = "";
- obj.data.iOS_adgroups ="";
- body = JSON.stringify(obj);
-}
-if (url.indexOf(path3) != -1){
- let obj = JSON.parse(body);
- obj.retcode = "0";
- if(obj.data.hasOwnProperty("httpurl_preview")){
- var playurl = obj.data["httpurl_preview"];
- obj.data["httpurl"] = playurl;
- };
- body = JSON.stringify(obj);
-}
-$done({body});
-
-//(Made by Meeta)
+
+if (body) {
+ var obj = JSON.parse($response.body);
+ if (/\/ucp\/index/.test(url) && obj.data) {
+ obj.data.uinfo.minivod_play_daily_remainders = "666";
+ obj.data.uinfo.minivod_down_daily_remainders = "666";
+ obj.data.uinfo.down_daily_remainders = "666";
+ obj.data.uinfo.play_daily_remainders = "666";
+ obj.data.uinfo["next_upgrade_need"] = "0";
+ obj.data.user.isvip = "1";
+ obj.data.user.gicon = "V5";
+ obj.data.user.gid = "5";
+ }
+ if (/\/getGlobalData/.test(url) && obj.data) {
+ obj.data.app_launch_times_adshow = "0";
+ obj.data.adgroups = "";
+ obj.data.iOS_adgroups = "";
+ }
+ if (/\/reqplay\//.test(url) && obj.data) {
+ obj.retcode = "0";
+ if (obj.data.hasOwnProperty("httpurl_preview")) {
+ var playurl = obj.data["httpurl_preview"];
+ obj.data["httpurl"] = playurl;
+ };
+ }
+ $done({ body: JSON.stringify(obj) });
+} else {
+ $done({})
+}
\ No newline at end of file
diff --git a/QuantumultX/File/xxys.js b/QuantumultX/File/xxys.js
deleted file mode 100644
index de9dea9b12..0000000000
--- a/QuantumultX/File/xxys.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-XiaoXiaoYingShi unlock Vip
-QX:
-https:\/\/ios\.xiaoxiaoapps\.com\/(vod\/reqplay\/|ucp/index) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xxys.js
-Surge:
-http-response https:\/\/ios\.xiaoxiaoapps\.com\/(vod\/reqplay\/|ucp/index) requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xxys.js
-
-MITM = ios.xiaoxiaoapps.com
-*/
-
-const path1 = "/ucp/index";
-const path2 = "/vod/reqplay/";
-var body = $response.body;
-var url = $request.url;
-if (url.indexOf(path1) != -1){
- let obj = JSON.parse(body);
- obj.data.uinfo["down_daily_remainders"] = "666";
- obj.data.uinfo["play_daily_remainders"] = "666";
- obj.data.user["goldcoin"] = "999";
- obj.data.uinfo["next_upgrade_need"] = "0";
- obj.data.uinfo["curr_group"] = "5";
- obj.data.user["isvip"] = "1";
- obj.data.user["goldcoin"] = "666";
- obj.data.user["gicon"] = "V5";
- obj.data.user["gid"] = "5";
- body = JSON.stringify(obj);
-}
-if (url.indexOf(path2) != -1){
- let obj = JSON.parse(body);
- obj.retcode = "0";
- obj.data.lastplayindex = "1";
- if(obj.data.hasOwnProperty("httpurl_preview")){
- var playurl = obj.data["httpurl_preview"];
- obj.data["httpurl"] = playurl;
- };
- body = JSON.stringify(obj);
-}
-
-$done({body});
-
-//by meeta
\ No newline at end of file
diff --git a/QuantumultX/IPA-Installer.snippet b/QuantumultX/IPA-Installer.snippet
new file mode 100644
index 0000000000..d8a3b125a3
--- /dev/null
+++ b/QuantumultX/IPA-Installer.snippet
@@ -0,0 +1,6 @@
+# 该文件为 "IPA应用辅助安装脚本" QuantumultX远端重写资源.
+# 该资源可在iOS端辅助安装商店版或已签名IPA(需使用快捷指令 + Shu/Jsbox/pythonista), 查看脚本注释以了解具体方法; 安装演示可查看TG频道 @NobyDa
+
+^https:\/\/nobyda.app/(install|download) url script-analyze-echo-response https://raw.githubusercontent.com/NobyDa/Script/master/IPA-Installer/IPA-Installer.js
+
+hostname = nobyda.app
\ No newline at end of file
diff --git a/QuantumultX/Js.conf b/QuantumultX/Js.conf
index 3de6be56fc..d998a771f9 100644
--- a/QuantumultX/Js.conf
+++ b/QuantumultX/Js.conf
@@ -1,136 +1,59 @@
-hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, mp.weixin.qq.com, api.bilibili.com, app.bilibili.com, *.zhihu.com, aweme*.snssdk.com, *.kuwo.cn, ios.xiaoxiaoapps.com, api*.tiktokv.com, *.musical.ly, *.amemv.com, mjappaz.yefu365.com, p.du.163.com, getuserinfo.321mh.com, getuserinfo-globalapi.zymk.cn, api-163.biliapi.net, ios.fuliapps.com, vsco.co, api.vnision.com, *.my10api.com, bd.4008109966.net, sp.kaola.com, r.inews.qq.com, apple.fuliapps.com, newdrugs.dxy.cn, bdapp.4008109966.net, app101.avictown.cc, api.hlo.xyz, api.ijo.xyz, www.luqijianggushi.com, account.wps.cn, u.kanghuayun.com, api.gyrosco.pe, api1.dobenge.cn, api.mvmtv.com, mitaoapp.yeduapp.com, origin-prod-phoenix.jibjab.com, www.3ivf.com, pay.guoing.com, p.doras.api.vcinema.cn, api.termius.com, mjappaz.yefu365.com, viva.v21xy.com, dida365.com, ticktick.com, biz.caiyunapp.com, api.gotokeep.com, ap*.intsig.net, mp.bybutter.com, api.vuevideo.net, api.picsart.c*, api.meiease.c*
-
-
-# 去微博应用内广告 (By yichahucha)
-^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|\!/photos/pic_recommend_status) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js
-^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js
+hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, mp.weixin.qq.com, api.zhihu.com, p.du.163.com, apigate.zymk.cn, www.luqijianggushi.com, origin-prod-phoenix.jibjab.com, xy-viva.kakalili.com, ap*.intsig.net, ios.fuliapps.com, apple.fuliapps.com, *.pipiapps.com, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, api.m.jd.com, ios*.prod.ftl.netflix.com, api.revenuecat.com, pan.baidu.com, bmall.camera360.com, api-chn.rthdo.com
# 去微信公众号广告 (By Choler)
^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js
-# 知乎去广告 (By onewayticket255)
-^https://api.zhihu.com/moments\?(action|feed_type) url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20feed.js
-^https://api.zhihu.com/topstory/recommend url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20recommend.js
-^https://api.zhihu.com/.*/questions url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Zhihu-ad-answer.js
-^https://api.zhihu.com/market/header url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20market.js
-
-# 哔哩哔哩动画去广告 (By onewayticket255)
-^https://app.bilibili.com/x/resource/show/tab\?access_key url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliTab.js
-^https://app.bilibili.com/x/v2/feed/index\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20feed.js
-^https://app.bilibili.com/x/v2/account/mine\?access_key url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilibiliAccount.js
-^https://app.bilibili.com/x/v2/view\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20view%20relate.js
-^https://app.bilibili.com/x/v2/rank url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20rank.js
-^https://api.bilibili.com/x/v2/reply/main\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20reply.js
-^https://app.bilibili.com/x/v2/show/popular/index\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20hot.js
-
-# 抖音去广告去水印 (By Choler)
-^https://aweme-eagle(.*)\.snssdk\.com\/aweme/.+/(feed|aweme/post|follow/feed)/ url script-response-body https://Choler.github.io/Surge/Script/Aweme.js
-
-# 酷我音乐SVIP (By yxiaocai)
-^https?:\/\/vip1\.kuwo\.cn\/(vip\/v2\/user\/vip|vip\/spi/mservice) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Kuwo.js
-
-# 小小影视Vip (By Meeta)
-https:\/\/ios\.xiaoxiaoapps\.com\/(vod\/reqplay\/|ucp/index) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xxys.js
-# 启动广告
-https:\/\/ios\.xiaoxiaoapps\.com\/getGlobalData url reject
-
-# tiktok封区解锁
-(.*video_id=\w{32})(.*watermark=)(.*) url 302 $1
-(?<=(carrier|account|sys)_region=)CN url 307 JP
-
-# 爱美剧Vip (原作 Meeta)(官网下载:app.meiju2018.com)
-^https?:\/\/mjapp\.\w{1,9}\.com\/index\.php\/app\/ios\/(vod\/show|user\/index) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/aimeiju.js
-# 广告
-^https:\/\/www.3ivf\.com\/index\.php\/app\/android\/ads\/index url reject
-^https:\/\/mjappaz\.yefu365\.com\/index\.php\/app\/ios\/ver\/index_ios url reject
-
# 网易蜗牛读书VIP (By yxiaocai and JO2EY)
^https?://p\.du\.163\.com/readtime/info.json url reject
^https?:\/\/p\.du\.163\.com\/gain\/readtime\/info\.json url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js
-# 看漫画极速版vip (By HoGer)
-^https?:\/\/getuserinfo\.321mh\.com\/app_api\/v5\/getuserinfo\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/kmh.js
-
-# 知音漫客VIP (By mieqq)
-^https://getuserinfo-globalapi.zymk.cn/app_api/v5/(getuserinfo|coin_account|getuserinfo_ticket|getcomicinfo)/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
-
-# 网易漫画去开屏广告
-^https://api-163.biliapi.net/cover url reject-img
-
-# 哔哩哔哩番剧开启1080P+
-^https?:\/\/api\.bilibili\.com\/pgc\/player\/api\/playurl url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bilifj.js
-
-# VSCO滤镜VIP
-^https?:\/\/vsco\.co\/api\/subscriptions\/2.1\/user-subscriptions\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
-
-# 大片-视频编辑器 VIP
-^https?:\/\/api\.vnision\.com\/v1\/(users\/|banners) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/dapian.js
-
-# 91短视频
-^https?:\/\/.+\.(my10api|(.*91.*))\.(com|tips|app|xyz)(:\d{2,5})?\/api.php$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/91.js
-
-# 布丁漫畫(蜜桃漫画)VIP (app已黄)
-#^https?:\/\/(bd|bdapp|mitaoapp)\.(4008109966|yeduapp)\.(net|com)\/\/index\.php\/api\/User\/userLogin url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/bdmh.js
-
-# 网易考拉 去广告 (By Choler)
-^https://sp\.kaola\.com/api/openad$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wykaola.js
+# 知音漫客VIP
+^https:\/\/apigate\.zymk\.cn\/(zymk-getuserinfo-api\/v1\/getuserinfo|zymk-userpurchased-api\/v1\/userpurchased\/paychapters)\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js
-# 腾讯新闻 去广告 (By Choler)
-^https://r\.inews\.qq.com\/get(QQNewsUnreadList|RecommendList) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/QQNews.js
+# VSCO & 1Blocker
+^https?:\/\/api\.revenuecat\.com\/v\d\/subscribers\/ url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
+^https?:\/\/api\.revenuecat\.com\/v\d\/subscribers\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js
-# 香蕉视频VIP (By Meeta)
-^https?:\/\/(apple|ios)\.fuliapps\.com url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
-
-# 用药助手解锁专业版 (By Primovist)
-^https?:\/\/(i|newdrugs)\.dxy\.cn\/(snsapi\/username\/|app\/user\/(pro\/stat\?|init\?timestamp=)) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/yyzs.js
-
-# 优乐美, 小米粒, 彩色直播三合一 解锁收费房
-^https?:\/\/(.+)\.(\w{2,3})(:?\d*)\/(api\/public\/\?service=Live\.checkLive$|public\/\/\?service=Live\.roomCharge$|lg\/video\/loadVideoFees\.do$) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/zhibo.js
+# 香蕉视频VIP
+^https?:\/\/.+?\.(pipi|fuli|xiang(jiao|xiang))apps\.com\/(ucp\/index|getGlobalData|(\/|)vod\/reqplay\/) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js
# 陆琪讲故事
^https:\/\/www\.luqijianggushi\.com\/api\/v2\/user\/get url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/luqi.js
-# WPS (By eHpo)
-^https://account.wps.cn/api/users/ url script-response-body https://raw.githubusercontent.com/eHpo1/Surge/master/Script/wps.js
-
-# Gyroscope 解锁 pro (By Maasea)
-^https:\/\/api\.gyrosco\.pe\/v1\/account\/$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/gyroscope.js
-
-# 水印精灵 vip (By Alex0510)
-^https:\/\/api1\.dobenge\.cn\/api\/user\/getuserinfo url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/syjl.js
-
-# 大千视界
-^https:\/\/api\.mvmtv\.com\/index\.php.*(c=user.*a=info|a=addr.*vid=.*) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/dqsj.js
-
# JibJab解锁pro
^https:\/\/origin-prod-phoenix\.jibjab\.com\/v1\/user url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/jibjab.js
-# 南瓜电影4.7.3版 解锁VIP
-^https:\/\/(p\.doras\.api\.vcinema\.cn|pay\.guoing\.com)\/(v5\.0\/user\/\d+$|d\/user\/get_user_info) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/ngdy.js
+# 小影 解锁Vip
+^https:\/\/(xy-viva\.kakalili|api-chn.rthdo)\.com\/api\/rest\/u\/vipVerifyReceipt url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/vivavideo.js
-# Termius 解锁本地pro (By Maasea)
-https:\/\/api\.termius\.com\/api\/v3\/bulk\/account\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Termius.js
+# 扫描全能王 pro
+^https:\/\/(api|api-cs)\.intsig\.net\/purchase\/cs\/query_property\? url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js
+
+# 百度网盘 解除在线视频倍率/清晰度
+^https:\/\/pan\.baidu\.com\/rest\/\d\.\d\/membership\/user url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js
-# 小影 解锁Vip (By @hiepkimcdtk55)
-^https:\/\/viva\.v21xy\.com\/api\/rest\/u\/vip url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/vivavideo.js
+# MIX 解锁高级特权 (需恢复购买)
+^https?:\/\/bmall\.camera360\.com\/api\/mix\/recovery url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/MIX.js
-# 滴答清单 pro
-^https:\/\/(ticktick|dida365)\.com\/api\/v2\/user\/status url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/DiDaQingDan.js
+#################################
+###########其他仓库引用###########
+#################################
-# 彩云天气 Vip
-^https:\/\/biz\.caiyunapp\.com\/v2\/user\?app_name\=weather url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/ColorWeather.js
+# 去微博应用内广告 (yichahucha)
+^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js
+^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/(photos/pic_recommend_status|live/media_homelist)|video/tiny_stream_video_list|photo/info|remind/unread_count) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js
-# Keep 解锁私人课程和动作库 (QX存在bug 该脚本可能无法生效)
-^https:\/\/api\.gotokeep\.com\/(.+\/subject|.+\/dynamic) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Keep.js
+# 知乎去广告 (onewayticket255)
+https://api.zhihu.com/(ad|drama|fringe|commercial|market/popover|search/(top|preset|tab)|.*featured-comment-ad) url reject-200
-# 扫描全能王 pro
-^https:\/\/(api|api-cs)\.intsig\.net\/purchase\/cs\/query_property\? url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js
+# 京东比价
+^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig|basicConfig) url script-response-body https://service.2ti.st/QuanX/Script/jd_tb_price/main.js
-# VUE pro
-^https:\/\/api\.vuevideo\.net\/api\/v1\/(users\/.+\/profile|subtitle\/prepare) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/VUE.js
+# Netflix评分 (yichahucha)
+^https?://ios[-\w]*\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-request-header https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js
+^https?://ios[-\w]*\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js
-# NiChi 解锁素材
-^https?:\/\/mp\.bybutter\.com\/mood\/(official-templates|privileges) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/NiChi.js
+#################################
+#################################
+#################################
-# PicsArt美易 pro
-^https:\/\/api\.(picsart|meiease)\.c(n|om)\/users\/show\/me\.json url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/PicsArt.js
\ No newline at end of file
diff --git a/QuantumultX/README.md b/QuantumultX/README.md
deleted file mode 100644
index 942d2e3ef6..0000000000
--- a/QuantumultX/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Rule description:
-## [中文版说明点击此处](https://github.com/NobyDa/Script/blob/master/QuantumultX/README_CN.md)
-* **[AdRule.list](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRule.list) (More than 7000 ad rules, This rule is modified from [lhie1](https://github.com/lhie1/Rules),and delete [ConnersHua](https://github.com/ConnersHua/Profiles) duplicate)**
-
-* **[AdRuleTest.list](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRuleTest.list)(More than 1300 ad rules,This rule is modified from [Scomper](https://github.com/scomper/Surge). Because the original author stopped maintenance, so take over the optimization and delete some normal rules, only for testing**)
-
-* **[Rewrite_lhie1.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Rewrite_lhie1.conf)(More than 400 ad rewrite rules, integrate [lhie1](https://github.com/lhie1/Rules)、[onewayticket255](https://github.com/onewayticket255/Surge-Script)、[Choler](https://github.com/Choler/Surge/tree/master/Ruleset), and delete [ConnersHua](https://github.com/ConnersHua/Profiles) duplicate,you need to open MITM and trust the certificate)**
-
-* **[Js.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js.conf) (Script subscription of QuantumultX)**
-
-## Remarks:
-
-* **Most of these are Chinese advertising rules. overseas users may not applicable**
-* **compatible to QuantumultX, These rules only include ads. Please choose REJECT for the policy**
-* **Script usage please see TG channel [@NobyDa](https://t.me/NobyDa)**
-* **Subscribe to all QuantumultX scripts**: [Click here to copy the link](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js.conf)
-* **Self-use only, Update depend on mood, if you have any questions, please submit a Issues or pull request.**
-
-
-### Special thanks:
-
-* [@lhie1](https://github.com/lhie1)
-* [@Scomper](https://github.com/scomper)
-* [@onewayticket255](https://github.com/onewayticket255)
-* [@Choler](https://github.com/Choler)
-* [@ConnersHua](https://github.com/ConnersHua)
\ No newline at end of file
diff --git a/QuantumultX/README_CN.md b/QuantumultX/README_CN.md
deleted file mode 100644
index 84f4547b71..0000000000
--- a/QuantumultX/README_CN.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# 规则说明:
-## [English version description click here](https://github.com/NobyDa/Script/blob/master/QuantumultX/README_EN.md)
-* **[AdRule.list](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRule.list) (超过7000条广告规则,该规则是从[lhie1](https://github.com/lhie1/Rules)修改而来 并添加了自用的一些去广告规则,并且去除了[ConnersHua](https://github.com/ConnersHua/Profiles) 的重复项。注:此规则内不包括[ConnersHua](https://github.com/ConnersHua/Profiles)(神机规则))**
-
-* **[AdRuleTest.list](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRuleTest.list)(超过1300条广告规则,该规则是从 [Scomper](https://github.com/scomper/Surge) 修改而来,因原作者停止维护,所以接手优化和删除一些正常规则,仅供测试**)
-
-* **[Rewrite_lhie1.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Rewrite_lhie1.conf)(超过400条广告重写(Rewrite)规则, 整合了 [lhie1](https://github.com/lhie1/Rules)、[onewayticket255](https://github.com/onewayticket255/Surge-Script)、[Choler](https://github.com/Choler/Surge/tree/master/Ruleset), 并且删除了 [ConnersHua](https://github.com/ConnersHua/Profiles) 的重复项。注:需要打开MITM并信任证书,此规则不包括[ConnersHua](https://github.com/ConnersHua/Profiles)(神机规则))**
-
-* **[Js.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js.conf) (QuantumultX的脚本订阅)**
-
-## 备注:
-
-* **其中大多数是中国的广告规则。海外用户可能不适用**
-* **与QuantumultX兼容,这些规则仅包含广告。 请为策略选择REJECT**
-* **脚本用法请参见TG频道 [@NobyDa](https://t.me/NobyDa)**
-* **订阅所有QuantumultX脚本**: [点击这里查看链接](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js.conf)
-* **纯自用,佛系维护,规则如果有任何问题,请提交Issues或pull request**
-
-
-### 鸣谢:
-
-* [@lhie1](https://github.com/lhie1)
-* [@Scomper](https://github.com/scomper)
-* [@onewayticket255](https://github.com/onewayticket255)
-* [@Choler](https://github.com/Choler)
-* [@ConnersHua](https://github.com/ConnersHua)
\ No newline at end of file
diff --git a/QuantumultX/Rewrite_lhie1.conf b/QuantumultX/Rewrite_lhie1.conf
index a7e274be7e..cdd0a39d5b 100644
--- a/QuantumultX/Rewrite_lhie1.conf
+++ b/QuantumultX/Rewrite_lhie1.conf
@@ -1,22 +1,24 @@
-# Update-2019.11.11 Self-use rewrite rule, Remove versus shenji duplicates and optimizations
-# This rewrite rule does not include shenji
-hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,alogs.umeng.co,*.byteoversea.com,*.cnbetacdn.com,*.doubanio.com,101.201.62.22,113.105.222.132,113.96.109.*,118.178.214.118,121.14.89.216,121.9.212.178,14.21.76.30,183.232.237.194,183.232.246.225,183.60.159.227,59.37.96.220,789.kakamobi.cn,aarkissltrial.secure2.footprint.net,activity2.api.ofo.com,adm.10jqka.com.cn,adproxy.autohome.com.cn,afd.baidu.com,api.app.vhall.com,api.fengshows.com,api.k.sohu.com,api.laifeng.com,api.m.mi.com,api.mddcloud.com.cn,api-mifit.huami.com,api-mifit-cn.huami.com,app.10086.cn,app.m.zj.chinamobile.com,app2.autoimg.cn,appsdk.soku.com,atrace.chelaile.net.cn,capi.douyucdn.cn,cdn.kuaidi100.com,classbox2.kechenggezi.com,connect.facebook.net,creatives.ftimg.net,d.1qianbao.com,dapis.mting.info,dl.app.gtja.com,dongfeng.alicdn.com,dsp-impr2.youdao.com,erebor.douban.com,fm.fenqile.com,fuss10.elemecdn.com,g1.163.com,gorgon.youdao.com,hm.xiaomi.com,hui.sohu.com,i1.hoopchina.com.cn,iface2.iqiyi.com,img.zuoyebang.cc,img1.126.net,img1.doubanio.com,img3.doubanio.com,impservice.dictapp.youdao.com,impservice.youdao.com,kano.guahao.cn,lf.snssdk.com,lives.l.qq.com,m.aty.sohu.com,m5.amap.com,ma.ofo.com,mage.if.qidian.com,mapi.appvipshop.com,mbl.56.com,mimg.127.net,mmg.aty.sohu.com,mmgr.gtimg.com,nex.163.com,oimagea4.ydstatic.com,oimagec2.ydstatic.com,p.kuaidi100.com,p1.music.126.net,pic.k.sohu.com,pic1.chelaile.net.cn,pic2.zhimg.com,resource.cmbchina.com,ress.dxpmedia.com,rm.aarki.net,sso.ifanr.com,static.api.m.panda.tv,staticlive.douyucdn.cn,storage.wax.weibo.com,supportda.ofo.com,ups.youku.com,wapwenku.baidu.com,wenku.baidu.com,www.facebook.com,www.ft.com,www.oschina.net,api-mifit.huami.com,api-163.biliapi.net,pan-api.bitqiu.com,api.feng.com,m.tuniu.com,img.meituan.net,sdkapp.uve.weibo.com,ptmpcap.caocaokeji.cn,creditcardapp.bankcomm.com,newapp.szsmk.com,client.qunar.com,mpcs.suning.com,api2.helper.qq.com,cdnfile1.msstatic.com,res.xiaojukeji.com,cube.elemecdn.com,dimg04.c-ctrip.com,prom.mobile.gome.com.cn,y.gtimg.cn,du.hupucdn.com,interfac*.music.163.com,yxyapi2.drcuiyutao.com,api.vistopia.com.cn,capis-clb.didapinche.com,api.waitwaitpay.com,api.jxedt.com,mi.gdt.qq.com,richmanapi.jxedt.com,nfmovies.com,app-api.smzdm.com,
+# Update-2021.8.26
+# This rewrite rule does not include ConnersHua
+hostname = api.cognitive.microsofttranslator.com,offline.microsofttranslator.com,sf*ttcdn-tos.pstatp.com,oset-api.open-adx.com,qidian.qpic.cn,www.icourse163.org,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,alogs.umeng.co,*.byteoversea.com,*.cnbetacdn.com,101.201.62.22,113.105.222.132,113.96.109.*,118.178.214.118,121.14.89.216,121.9.212.178,14.21.76.30,183.232.237.194,183.232.246.225,183.60.159.227,59.37.96.220,789.kakamobi.cn,aarkissltrial.secure2.footprint.net,activity2.api.ofo.com,adm.10jqka.com.cn,adproxy.autohome.com.cn,afd.baidu.com,api.app.vhall.com,api.fengshows.com,api.k.sohu.com,api.laifeng.com,api.m.mi.com,api.mddcloud.com.cn,api-mifit.huami.com,api-mifit-cn.huami.com,app.10086.cn,app.m.zj.chinamobile.com,app2.autoimg.cn,appsdk.soku.com,atrace.chelaile.net.cn,capi.douyucdn.cn,cdn.kuaidi100.com,classbox2.kechenggezi.com,connect.facebook.net,creatives.ftimg.net,d.1qianbao.com,dapis.mting.info,dl.app.gtja.com,dongfeng.alicdn.com,dsp-impr2.youdao.com,erebor.douban.com,fm.fenqile.com,fuss10.elemecdn.com,g1.163.com,gorgon.youdao.com,hm.xiaomi.com,hui.sohu.com,i1.hoopchina.com.cn,iface2.iqiyi.com,img.zuoyebang.cc,img1.126.net,impservice.dictapp.youdao.com,impservice.youdao.com,kano.guahao.cn,lf.snssdk.com,lives.l.qq.com,m.aty.sohu.com,m5.amap.com,ma.ofo.com,mage.if.qidian.com,mapi.appvipshop.com,mbl.56.com,mimg.127.net,mmg.aty.sohu.com,mmgr.gtimg.com,nex.163.com,oimagea4.ydstatic.com,oimagec2.ydstatic.com,p.kuaidi100.com,p1.music.126.net,pic.k.sohu.com,pic1.chelaile.net.cn,ress.dxpmedia.com,rm.aarki.net,sso.ifanr.com,static.api.m.panda.tv,staticlive.douyucdn.cn,storage.wax.weibo.com,supportda.ofo.com,ups.youku.com,wapwenku.baidu.com,wenku.baidu.com,www.facebook.com,www.ft.com,www.oschina.net,api-mifit.huami.com,api-163.biliapi.net,pan-api.bitqiu.com,api.feng.com,m.tuniu.com,img.meituan.net,sdkapp.uve.weibo.com,ptmpcap.caocaokeji.cn,creditcardapp.bankcomm.com,newapp.szsmk.com,client.qunar.com,mpcs.suning.com,api2.helper.qq.com,cdnfile1.msstatic.com,res.xiaojukeji.com,dimg04.c-ctrip.com,prom.mobile.gome.com.cn,y.gtimg.cn,du.hupucdn.com,interfac*.music.163.com,yxyapi2.drcuiyutao.com,api.vistopia.com.cn,capis-clb.didapinche.com,api.jxedt.com,mi.gdt.qq.com,richmanapi.jxedt.com,nfmovies.com,app-api.smzdm.com,emdcadvertise.eastmoney.com,101.201.175.228,182.92.251.113
-^https?://(www.)?g.cn url 302 https://www.google.com
-^https?://(www.)?google.cn url 302 https://www.google.com
-^https?://(www.)?google.cn/search url 302 https://www.google.com/search
-^https?://coupon.m.jd.com/ url 302 https://coupon.m.jd.com/
-^https?://h5.m.jd.com/ url 302 https://h5.m.jd.com/
-^https?://item.m.jd.com/ url 302 https://item.m.jd.com/
-^https?://m.jd.com url 302 https://m.jd.com
-^https?://newcz.m.jd.com/ url 302 https://newcz.m.jd.com/
-^https?://p.m.jd.com/ url 302 https://p.m.jd.com/
-^https?://so.m.jd.com/ url 302 https://so.m.jd.com/
+^https?://(www\.)?g\.cn url 302 https://www.google.com
+^https?://(www\.)?google\.cn url 302 https://www.google.com
+^https?://(www\.)?google\.cn/search url 302 https://www.google.com/search
+^http://coupon.m.jd.com/ url 302 https://coupon.m.jd.com/
+^http://h5.m.jd.com/ url 302 https://h5.m.jd.com/
+^http://item.m.jd.com/ url 302 https://item.m.jd.com/
+^http://m.jd.com url 302 https://m.jd.com
+^http://newcz.m.jd.com/ url 302 https://newcz.m.jd.com/
+^http://p.m.jd.com/ url 302 https://p.m.jd.com/
+^http://so.m.jd.com/ url 302 https://so.m.jd.com/
^https?://union.click.jd.com/jda? url request-header ^(.+?\s).+?(\s[\s\S]+?Host:).+?(\r\n) request-header $1/jda?adblock=$2union.click.jd.com$3
^https?://union.click.jd.com/sem.php? url request-header ^(.+?\s).+?(\s[\s\S]+?Host:).+?(\r\n) request-header $1/sem.php?adblock=$2union.click.jd.com$3
^https?://www.jd.com/ url 302 https://www.jd.com/
^https?://m.taobao.com/ url 302 https://m.taobao.com/
+^https?:\/\/api\.cognitive\.microsofttranslator\.com\/languages\?scope=compact,transliteration&api-version= url request-header (\r\n)If-None-Match:.+(\r\n) request-header $1
+^https?:\/\/offline\.microsofttranslator\.com\/translatorresources\.svc\/GetMetadata\?platform=ios&version= url request-header (\r\n)If-None-Match:.+(\r\n) request-header $1
^https?://cfg.m.ttkvod.com/mobile/ttk_mobile_1.8.txt url request-header ^(.+?\s).+?(\s[\s\S]+?Host:).+?(\r\n) request-header $1/Static/TXT/ttk_mobile_1.8.txt$2ogtre5vp0.bkt.clouddn.com$3
^https?://cnzz.com/ url request-header ^(.+?\s).+?(\s[\s\S]+?Host:).+?(\r\n) request-header $1/background.png?$2ogtre5vp0.bkt.clouddn.com$3
^https?://m.qu.la/stylewap/js/wap.js url 302 http://ogtre5vp0.bkt.clouddn.com/qu_la_wap.js
@@ -28,17 +30,16 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?://www.iqshw.com/d/js/m url request-header ^(.+?\s).+?(\s[\s\S]+?Host:).+?(\r\n) request-header $1/Other/Static/JS/Package.js?$2rewrite.websocket.site:10$3
^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/player\/ad_ url reject
^https?:\/\/vali\.cp31\.ott\.cibntv\.net\/youku url reject
-^https?://.+ccode=0902 url reject-img
+^https?:\/\/.+?ccode=0902 url reject-img
^https?:\/\/ulogs\.umeng\.com url reject-img
^https?:\/\/ulogs\.umengcloud\.com url reject-img
^https?:\/\/alogs\.umeng\.co url reject-img
^https?:\/\/alogs\.umeng\.com url reject-img
^https?:\/\/(\w\.)?up\.qingdaonews\.com url reject-img
-^https?:\/\/(e|m)\..+/((uu|oo)\.php.+|\d+\.x?html\?$) url reject-img
-^https?:\/\/.+\.beacon\.qq\.com url reject-img
-^https?:\/\/.+\.gdt\.qq\.com url reject-img
-^https?:\/\/.+\.kingsoft-office-service\.com url reject-img
-^https?:\/\/.+\.l\.qq\.com url reject-img
+^https?:\/\/.+?\.beacon\.qq\.com url reject-img
+^https?:\/\/.+?\.gdt\.qq\.com url reject-img
+^https?:\/\/.+?\.kingsoft-office-service\.com url reject-img
+^https?:\/\/.+?\.l\.qq\.com url reject-img
^https?:\/\/[^(apple|10010)]+\.(com|cn)\/(a|A)d(s|v)?(\/|\.js) url reject-img
^https?:\/\/[^bbs]\.tianya\.cn url reject-img
^https?:\/\/\w{6}\.com1\.z0\.glb\.clouddn\.com url reject-img
@@ -51,18 +52,16 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/api\d\.tuisong\.baidu\.com url reject-img
^https?:\/\/d\d\.sina\.com\.cn url reject-img
^https?:\/\/d\d\.sinaimg\.cn url reject-img
-^https?:\/\/dl\.app\.gtja\.com/.+\d+\.jpg$ url reject-img
-^https?:\/\/impservice.+?\.(.+\.)?youdao\.com url reject-img
-^https?:\/\/log\..+\.baidu\.com url reject-img
+^https?:\/\/dl\.app\.gtja\.com/.+?\.jpg$ url reject-img
+^https?:\/\/log\..+?\.baidu\.com url reject-img
^https?:\/\/notice\.send-anywhere\.com\/banner url reject-img
-^https?:\/\/pic\d\.zhimg\.com\/v2.+ url reject-img
^https?:\/\/sa\d\.tuisong\.baidu\.com url reject-img
^https?:\/\/sax\d\.sina\.com\.cn url reject-img
^https?:\/\/sax\w?\.sina\.cn url reject-img
^https?:\/\/sax\w?\.sina\.com\.cn url reject-img
^https?:\/\/server-\w+\.imrworldwide\.com url reject-img
^https?:\/\/t\d{2}\.baidu\.com url reject-img
-^https?:\/\/www\.bldimg\.com\/(background|splash)\/.+\.png$ url reject-img
+^https?:\/\/www\.bldimg\.com\/(background|splash)\/.+?\.png$ url reject-img
^https?:\/\/c\.minisplat\.cn url reject-img
^https?:\/\/c1\.minisplat\.cn url reject-img
^https?:\/\/cache\.changjingyi\.cn url reject-img
@@ -74,16 +73,14 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/211\.98\.70\.226:8080\/ url reject-img
^https?:\/\/211\.98\.71\.195:8080\/ url reject-img
^https?:\/\/211\.98\.71\.196:8080\/ url reject-img
-^https?:\/\/.+\/variety.tc.qq.com\/ url reject
-^https?:\/\/.+\/vlive.qqvideo.tc.qq.com\/ url reject
-^https?:\/\/.+\/hls.cache.p4p\/ url reject
-^https?:\/\/.+\/omts.tc.qq.com\/ url reject
-^https?:\/\/.+\/variety.tc.qq.com\/ url reject-img
-^https?:\/\/.+\/vlive.qqvideo.tc.qq.com\/ url reject-img
-^https?:\/\/.+\/hls.cache.p4p\/ url reject-img
-^https?:\/\/.+\/music\/common\/upload\/t_splash_info url reject-img
-^https?:\/\/.+\/tips\/fcgi-bin\/fcg_get_advert url reject-img
-^https?:\/\/bla\.gtimg\.com\/qqlive\/\d{6}.+\.png url reject-img
+^https?:\/\/.+?\/variety.tc.qq.com\/ url reject
+^https?:\/\/.+?\/hls.cache.p4p\/ url reject
+^https?:\/\/.+?\/omts.tc.qq.com\/ url reject
+^https?:\/\/.+?\/variety.tc.qq.com\/ url reject-img
+^https?:\/\/.+?\/hls.cache.p4p\/ url reject-img
+^https?:\/\/.+?\/music\/common\/upload\/t_splash_info url reject-img
+^https?:\/\/.+?\/tips\/fcgi-bin\/fcg_get_advert url reject-img
+^https?:\/\/bla\.gtimg\.com\/qqlive\/\d{6}.+?\.png url reject-img
^https?:\/\/imgcache\.qq\.com\/qqlive\/ url reject-img
^https?:\/\/lives\.l\.qq\.com\/livemsg\?sdtfrom= url reject-img
^https?:\/\/mmgr\.gtimg\.com\/gjsmall\/qiantu\/upload\/ url reject-img
@@ -98,9 +95,9 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/splashqqlive\.gtimg\.com\/website\/\d{6} url reject-img
^https?:\/\/szextshort\.weixin\.qq\.com\/cgi-bin\/mmoc-bin\/ad\/ url reject-img
^https?:\/\/y\.gtimg\.cn\/music\/common\/upload\/targeted_ads url reject-img
-^https?:\/\/simg\.s\.weibo\.com\/.+_ios\d{2}\.gif url reject-img
+^https?:\/\/simg\.s\.weibo\.com\/.+?_ios\d{2}\.gif url reject-img
^https?:\/\/storage\.wax\.weibo\.com\/\w+\.(png|jpg|mp4) url reject-img
-^https?:\/\/u1\.img\.mobile\.sina\.cn\/public\/files\/image\/\d{3}x\d{2,4}.+(png|jpg|mp4) url reject-img
+^https?:\/\/u1\.img\.mobile\.sina\.cn\/public\/files\/image\/\d{3}x\d{2,4}.+?(png|jpg|mp4) url reject-img
^https?:\/\/(iyes|(api|hd)\.mobile)\.youku\.com\/(adv|common\/v3\/hudong\/new) url reject-img
^https?:\/\/ad\.api\.3g\.youku\.com url reject-img
^https?:\/\/api\.appsdk\.soku\.com\/bg\/r url reject-img
@@ -110,14 +107,11 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/m\.youku\.com\/video\/libs\/iwt\.js url reject-img
^https?:\/\/r\.l\.youku\.com\/rec_at_click url reject-img
^https?:\/\/r1\.ykimg\.com\/\w{30,35}\.jpg url reject-img
-^https?:\/\/r1\.ykimg\.com\/material\/.+\/\d{3,4}-\d{4} url reject-img
-^https?:\/\/r1\.ykimg\.com\/material\/.+\/\d{6}\/\d{4}\/ url reject-img
+^https?:\/\/r1\.ykimg\.com\/material\/.+?\/\d{3,4}-\d{4} url reject-img
+^https?:\/\/r1\.ykimg\.com\/material\/.+?\/\d{6}\/\d{4}\/ url reject-img
^https?:\/\/api\.zhuishushenqi\.com\/advert url reject-img
^https?:\/\/api\.zhuishushenqi\.com\/recommend url reject-img
^https?:\/\/mi\.gdt\.qq\.com\/gdt_mview\.fcg url reject-img
-^https?:\/\/.+\/cdn\/qiyiapp\/\d{8}\/.+&dis_dz= url reject-img
-^https?:\/\/.+\/cdn\/qiyiapp\/\d{8}\/.+&z=\w url reject-img
-^https?:\/\/.+\/videos\/other\/ url reject
^https?:\/\/iface2\.iqiyi\.com\/fusion\/3\.0\/fusion_switch url reject-img
^https?:\/\/agn\.aty\.sohu\.com\/m? url reject-img
^https?:\/\/hui\.sohu\.com\/predownload2\/? url reject-img
@@ -133,8 +127,8 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/bj\.bcebos\.com\/fc-feed\/0\/pic\/ url reject-img
^https?:\/\/c\.tieba\.baidu\.com\/c\/p\/img\?src= url reject-img
^https?:\/\/c\.tieba\.baidu\.com\/c\/s\/logtogether\?cmd= url reject-img
-^https?:\/\/fcvbjbcebos\.baidu\.com\/.+\.mp4 url reject-img
-^https?:\/\/gss0\.bdstatic\.com\/.+\/static\/wiseindex\/img\/bd_red_packet\.png url reject-img
+^https?:\/\/fcvbjbcebos\.baidu\.com\/.+?\.mp4 url reject-img
+^https?:\/\/gss0\.bdstatic\.com\/.+?\/static\/wiseindex\/img\/bd_red_packet\.png url reject-img
^https?:\/\/sm\.domobcdn\.com\/ugc\/\w\/ url reject-img
^https?:\/\/tb1\.bdstatic\.com\/tb\/cms\/ngmis\/adsense\/*\.jpg url reject-img
^https?:\/\/tb2\.bdstatic\.com\/tb\/mobile\/spb\/widget\/jump url reject-img
@@ -153,55 +147,50 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/stat\.moji\.com url reject-img
^https?:\/\/storage\.360buyimg\.com\/kepler-app url reject-img
^https?:\/\/ugc\.moji001\.com\/sns\/json\/profile\/get_unread url reject-img
-^https?:\/\/image1\.chinatelecom-ec\.com\/images\/.+\/\d{13}\.jpg url reject-img
+^https?:\/\/image1\.chinatelecom-ec\.com\/images\/.+?\/\d{13}\.jpg url reject-img
^https?:\/\/m\.client\.10010\.com\/mobileService\/(activity|customer)\/(accountListData|get_client_adv|get_startadv) url reject-img
^https?:\/\/m\.client\.10010\.com\/uniAdmsInterface\/(getHomePageAd|getWelcomeAd) url reject-img
^https?:\/\/m1\.ad\.10010\.com\/noticeMag\/images\/imageUpload\/2\d{3} url reject-img
^https?:\/\/res\.mall\.10010\.cn\/mall\/common\/js\/fa\.js?referer= url reject-img
^https?:\/\/api\.newad\.ifeng\.com\/ClientAdversApi1508\?adids= url reject-img
-^https?:\/\/c1\.ifengimg\.com\/.+_w1080_h1410\.jpg url reject-img
+^https?:\/\/c1\.ifengimg\.com\/.+?_w1080_h1410\.jpg url reject-img
^https?:\/\/exp\.3g\.ifeng\.com\/coverAdversApi\?gv=\. url reject-img
^https?:\/\/ifengad\.3g\.ifeng\.com\/ad\/pv\.php\?stat= url reject-img
^https?:\/\/iis1\.deliver\.ifeng\.com\/getmcode\?adid= url reject-img
-^https?:\/\/.+\/eapi\/[ad|event]\/ url reject-img
-^https?:\/\/.+\.127\.net\/ad url reject-img
-^https?:\/\/.+\/eapi\/ad\/ url reject-img
+^https?:\/\/.+?\/eapi\/[ad|event]\/ url reject-img
+^https?:\/\/.+?\.127\.net\/ad url reject-img
+^https?:\/\/.+?\/eapi\/ad\/ url reject-img
^https?:\/\/g1\.163\.com\/madfeedback url reject-img
-^https?:\/\/img1\.126\.net\/.+dpi=\w{7,8} url reject-img
+^https?:\/\/img1\.126\.net\/.+?dpi=\w{7,8} url reject-img
^https?:\/\/img1\.126\.net\/channel14\/ url reject-img
^https?:\/\/mimg\.127\.net\/external\/smartpop-manger\.min\.js url reject-img
^https?:\/\/nex\.163\.com\/q url reject-img
^https?:\/\/oimage([a-z])([0-9])\.ydstatic\.com\/.+?&product=adpublish url reject-img
^https?:\/\/p[^4](c)?\.music\.126\.net\/\w+==\/10995\d{13}\.jpg$ url reject-img
^https?:\/\/interface\.music\.163\.com\/eapi\/ad\/ url reject-img
-^https?:\/\/.+\/client?functionId=lauch\/lauchConfig&appName=paidaojia url reject-img
+^https?:\/\/.+?\/client?functionId=lauch\/lauchConfig&appName=paidaojia url reject-img
^https?:\/\/111\.13\.29\.201\/client\.action\?functionId=start url reject-img
^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=start url reject-img
^https?:\/\/bdsp-x\.jd\.com\/adx\/ url reject-img
^https?:\/\/m\.360buyimg\.com\/mobilecms\/s640x1136_jfs\/ url reject-img
-^https?:\/\/gw\.alicdn\.com\/tfs\/.+-1125-1602 url reject-img
^https?:\/\/(\d{1,3}\.){1,3}\d{1,3}\/view\/dale-online\/dale_ad\/ url reject-img
^https?:\/\/api\.douban\.com\/v2\/app_ads\/common_ads url reject-img
-^https?:\/\/img\d\.doubanio\.com\/view\/dale-online\/dale_ad\/ url reject-img
^https?:\/\/capi\.douyucdn\.cn\/lapi\/sign\/app(api)?\/getinfo\?client_sys=ios url reject-img
^https?:\/\/capi\.douyucdn\.cn\/api\/ios_app\/check_update url reject-img
^https?:\/\/capi\.douyucdn\.cn\/api\/v1\/getStartSend?client_sys=ios url reject-img
-^https?:\/\/douyucdn\.cn\/.+\/appapi\/getinfo url reject-img
+^https?:\/\/douyucdn\.cn\/.+?\/appapi\/getinfo url reject-img
^https?:\/\/rtbapi.douyucdn.cn\/japi\/sign\/app\/getinfo url reject-img
-^https?:\/\/staticlive\.douyucdn\.cn\/.+\/getStartSend url reject-img
+^https?:\/\/staticlive\.douyucdn\.cn\/.+?\/getStartSend url reject-img
^https?:\/\/staticlive\.douyucdn\.cn\/upload\/signs\/ url reject-img
-^https?:\/\/elemecdn\.com\/.+\/sitemap url reject-img
-^https?:\/\/fuss10\.elemecdn\.com\/.+\/w\/640\/h\/\d{3,4} url reject-img
-^https?:\/\/fuss10\.elemecdn\.com\/.+\/w\/750\/h\/\d{3,4} url reject-img
-^https?:\/\/fuss10\.elemecdn\.com\/.+\.mp4 url reject-img
+^https?:\/\/elemecdn\.com\/.+?\/sitemap url reject-img
+^https?:\/\/fuss10\.elemecdn\.com\/.+?\/w\/640\/h\/\d{3,4} url reject-img
+^https?:\/\/fuss10\.elemecdn\.com\/.+?\/w\/750\/h\/\d{3,4} url reject-img
+^https?:\/\/fuss10\.elemecdn\.com\/.+?\.mp4 url reject-img
^https?:\/\/m\.elecfans\.com\/static\/js\/ad\.js url reject-img
^https?:\/\/www1\.elecfans\.com\/www\/delivery\/ url reject-img
^https?:\/\/p\d\.pstatp\.com\/origin url reject-img
^https?:\/\/pb\d\.pstatp\.com\/origin url reject-img
-^https?:\/\/gw\.alicdn\.com\/mt\/ url reject-img
-^https?:\/\/gw\.alicdn\.com\/tfs\/.+\d{3,4}-\d{4} url reject-img
-^https?:\/\/gw\.alicdn\.com\/tps\/.+\d{3,4}-\d{4} url reject-img
-^https?:\/\/adse.+\.com\/[a-z]{4}\/loading\?appid= url reject-img
+^https?:\/\/adse.+?\.com\/[a-z]{4}\/loading\?appid= url reject-img
^https?:\/\/adse\.ximalaya\.com\/ting\/feed\?appid= url reject-img
^https?:\/\/adse\.ximalaya\.com\/ting\/loading\?appid= url reject-img
^https?:\/\/adse\.ximalaya\.com\/ting\?appid= url reject-img
@@ -222,34 +211,33 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/api\.ycapp\.yiche\.com\/yicheapp\/getadlist url reject-img
^https?:\/\/api\.ycapp\.yiche\.com\/yicheapp\/getappads\/ url reject-img
^https?:\/\/cheyouapi\.ycapp\.yiche\.com\/appforum\/getusermessagecount url reject-img
-^https?:\/\/.+\.googlevideo\.com\/ptracking\?pltype=adhost url reject-img
-^https?:\/\/.+\.youtube\.com\/get_midroll url reject-img
-^https?:\/\/.+\.youtube\.com\/ptracking\? url reject-img
+^https?:\/\/.+?\.googlevideo\.com\/ptracking\?pltype=adhost url reject-img
+^https?:\/\/.+?\.youtube\.com\/get_midroll url reject-img
+^https?:\/\/.+?\.youtube\.com\/ptracking\? url reject-img
^https?:\/\/m\.youtube\.com\/_get_ads url reject-img
^https?:\/\/pagead2\.googlesyndication\.com\/pagead\/ url reject-img
^https?:\/\/s\.youtube\.com\/api\/stats\/watchtime?adformat url reject-img
^https?:\/\/s0\.2mdn\.net\/ads\/ url reject-img
^https?:\/\/stats\.tubemogul\.com\/stats\/ url reject-img
-^https?:\/\/.+0013.+\/upload\/activity\/app_flash_screen_ url reject-img
^http?:\/\/www\.tsytv\.com\.cn\/api\/app\/ios\/ads url reject-img
^https?:\/\/res\.kfc\.com\.cn\/advertisement\/ url reject-img
-^https?:\/\/img\.yun\.01zhuanche\.com\/statics\/app\/advertisement\/.+-750-1334 url reject-img
+^https?:\/\/img\.yun\.01zhuanche\.com\/statics\/app\/advertisement\/.+?-750-1334 url reject-img
^https?:\/\/img01\.10101111cdn\.com\/adpos\/share\/ url reject-img
^https?:\/\/bank\.wo\.cn\/v9\/getstartpage url reject-img
^https?:\/\/img\.ihytv\.com\/material\/adv\/img\/ url reject-img
^https?:\/\/p\d\.meituan\.net\/(mmc|wmbanner)\/ url reject-img
-^https?:\/\/mmgr\.gtimg\.com\/gjsmall\/qqpim\/public\/ios\/splash\/.+\/\d{4}_\d{4} url reject-img
+^https?:\/\/mmgr\.gtimg\.com\/gjsmall\/qqpim\/public\/ios\/splash\/.+?\/\d{4}_\d{4} url reject-img
^https?:\/\/adproxy\.autohome\.com\.cn\/AdvertiseService\/ url reject-img
^https?:\/\/app2\.autoimg\.cn\/appdfs\/ url reject-img
^https?:\/\/mage\.if\.qidian\.com\/Atom\.axd\/Api\/Client\/GetConfIOS url reject-img
^https?:\/\/qidian\.qpic\.cn\/qidian_common url reject-img
-^https?:\/\/img\d{2}\.ddimg\.cn\/upload_img\/.+\/670x900 url reject-img
-^https?:\/\/img\d{2}\.ddimg\.cn\/upload_img\/.+\/750x1064 url reject-img
+^https?:\/\/img\d{2}\.ddimg\.cn\/upload_img\/.+?\/670x900 url reject-img
+^https?:\/\/img\d{2}\.ddimg\.cn\/upload_img\/.+?\/750x1064 url reject-img
^https?:\/\/mapi\.dangdang\.com\/index\.php\?action=init&user_client=iphone url reject-img
^https?:\/\/dl\.app\.gtja\.com\/dzswem\/kvController\/ url reject-img
^https?:\/\/dl\.app\.gtja\.com\/operation\/config\/startupConfig\.json url reject-img
^https?:\/\/api\.laifeng\.com\/v1\/start\/ads url reject-img
-^https?:\/\/.+\.snssdk\.com\/api\/ad\/ url reject-img
+^https?:\/\/.+?\.(snssdk|amemv)\.com\/api\/ad\/ url reject-img
^https?:\/\/aweme\.snssdk\.com\/aweme\/v1\/aweme\/stats\/ url reject-img
^https?:\/\/aweme\.snssdk\.com\/aweme\/v1\/device\/update\/ url reject-img
^https?:\/\/aweme\.snssdk\.com\/aweme\/v1\/screen\/ad\/ url reject-img
@@ -262,7 +250,7 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/qzonestyle\.gtimg\.cn\/qzone\/biz\/gdt\/mob\/sdk\/ios\/v2\/ url reject-img
^https?:\/\/cdn\.kuaidi100\.com\/images\/open\/appads url reject-img
^https?:\/\/p\.kuaidi100\.com\/mobile\/mainapi\.do url reject-img
-^https?:\/\/api\.m\.mi\.com\/.+\/app\/start url reject-img
+^https?:\/\/api\.m\.mi\.com\/.+?\/app\/start url reject-img
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/homepage_ad\? url reject-img
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/sleep_ad\? url reject-img
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/sport_ad\? url reject-img
@@ -270,71 +258,70 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/sport_training_ad\? url reject-img
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/step_detail_ad\? url reject-img
^https?:\/\/api-mifit\.huami\.com\/discovery\/mi\/discovery\/training_video_ad\? url reject-img
-^https?:\/\/.+\/portal\.php\?a=get_ads url reject-img
-^https?:\/\/.+\/portal\.php\?c=duiba url reject-img
-^https?:\/\/.+\/portal\.php\?a=get_coopen_ads url reject-img
+^https?:\/\/.+?\/portal\.php\?a=get_ads url reject-img
+^https?:\/\/.+?\/portal\.php\?c=duiba url reject-img
+^https?:\/\/.+?\/portal\.php\?a=get_coopen_ads url reject-img
^https?:\/\/weicoapi\.weico\.cc\/img\/ad\/ url reject-img
-^https?:\/\/.+\/weico4ad\/ad\/ url reject-img
+^https?:\/\/.+?\/weico4ad\/ad\/ url reject-img
^https?:\/\/g\.cdn\.pengpengla\.com\/starfantuan\/boot-screen-info\/ url reject-img
^https?:\/\/discuz\.gtimg\.cn\/cloud\/scripts\/discuz_tips\.js url reject-img
^https?:\/\/sapi\.guopan\.cn\/get_buildin_ad url reject-img
-^https?:\/\/789\.kakamobi\.cn\/.+adver url reject-img
+^https?:\/\/789\.kakamobi\.cn\/.+?adver url reject-img
^https?:\/\/smart\.789\.image\.mucang\.cn\/advert url reject-img
-^https?:\/\/resource\.cmbchina\.com\/fsp\/File\/ClientFacePublic\/.+\.gif url reject-img
^http?:\/\/123\.59\.30\.10\/adv\/advInfos url reject-img
-^https?:\/\/bbs\.airav\.cc\/data\/.+\.jpg url reject-img
-^https?:\/\/image\.airav\.cc\/AirADPic\/.+\.gif url reject-img
+^https?:\/\/bbs\.airav\.cc\/data\/.+?\.jpg url reject-img
+^https?:\/\/image\.airav\.cc\/AirADPic\/.+?\.gif url reject-img
^https?:\/\/m\.airav\.cc\/images\/Mobile_popout_cn\.gif url reject-img
^https?:\/\/cmsapi\.wifi8\.com\/v1\/emptyAd\/info url reject-img
^https?:\/\/cmsapi\.wifi8\.com\/v2\/adNew\/config url reject-img
^https?:\/\/cmsfile\.wifi8\.com\/uploads\/png\/ url reject-img
^https?:\/\/sso\.ifanr\.com\/jiong\/IOS\/appso\/splash\/ url reject-img
-^https?:\/\/oimage\w\d\.ydstatic\.com\/image\?.+=adpublish url reject-img
+^https?:\/\/oimage\w\d\.ydstatic\.com\/image\?.+?=adpublish url reject-img
^https?:\/\/118\.178\.214\.118\/yyting\/advertclient\/ClientAdvertList\.action url reject-img
^https?:\/\/dapis\.mting\.info\/yyting\/advertclient\/ClientAdvertList\.action url reject-img
-^https?:\/\/192\.133.+\.mp4$ url reject-img
-^https:\/\/static\.api\.m\.panda\.tv\/index\.php\?method=clientconf\.firstscreen&__version=(play_cnmb|(\d+\.){0,3}\d+)&__plat=ios&__channel=appstore url reject-img
+^https?:\/\/192\.133.+?\.mp4$ url reject-img
+^https?:\/\/static\.api\.m\.panda\.tv\/index\.php\?method=clientconf\.firstscreen&__version=(play_cnmb|(\d+\.){0,3}\d+)&__plat=ios&__channel=appstore url reject-img
^https?:\/\/api\.app\.vhall\.com\/v5\/000\/webinar\/launch url reject-img
^https?:\/\/img\.53site\.com\/Werewolf\/AD\/ url reject-img
-^https?:\/\/werewolf\.53site\.com\/Werewolf\/.+\/getAdvertise\.php url reject-img
-^https?:\/\/werewolf\.53site\.com\/Werewolf\/.+\/getShareVideodb\.php url reject-img
-^https?:\/\/a\.applovin\.com\/.+\/ad url reject-img
-^https?:\/\/kano\.guahao\.cn\/.+\?resize=\d{3}-\d{4} url reject-img
+^https?:\/\/werewolf\.53site\.com\/Werewolf\/.+?\/getAdvertise\.php url reject-img
+^https?:\/\/werewolf\.53site\.com\/Werewolf\/.+?\/getShareVideodb\.php url reject-img
+^https?:\/\/a\.applovin\.com\/.+?\/ad url reject-img
+^https?:\/\/kano\.guahao\.cn\/.+?\?resize=\d{3}-\d{4} url reject-img
^https?:\/\/atrace\.chelaile\.net\.cn\/adpub\/ url reject-img
^https?:\/\/atrace\.chelaile\.net\.cn\/exhibit\?&adv_image url reject-img
^https?:\/\/pic1\.chelaile\.net\.cn\/adv\/ url reject-img
^https?:\/\/images\.91160\.com\/primary\/ url reject-img
^https?:\/\/d\.1qianbao\.com\/youqian\/ads\/ url reject-img
^https?:\/\/api\.kkmh\.com\/v\d\/(ad|advertisement)\/ url reject-img
-^https?:\/\/i1\.hoopchina\.com\.cn\/blogfile\/.+_\d{3}x\d{4} url reject-img
+^https?:\/\/i1\.hoopchina\.com\.cn\/blogfile\/.+?_\d{3}x\d{4} url reject-img
^https?:\/\/pcvideoyd\.titan\.mgtv\.com\/pb\/ url reject-img
^https?:\/\/classbox2\.kechenggezi\.com\/api\/v1\/sponge\/pull\?request_time= url reject-img
-^https?:\/\/e\.dangdang\.com\/media\/api.+\?action=getDeviceStartPage url reject-img
+^https?:\/\/e\.dangdang\.com\/media\/api.+?\?action=getDeviceStartPage url reject-img
^https?:\/\/api\.smzdm\.com\/v2\/util\/banner url reject-img
^https?:\/\/app\.veryzhun\.com\/ad\/admob url reject-img
^https?:\/\/api\.fengshows\.com\/api\/launchAD url reject-img
-^https?:\/\/img\.rr\.tv\/banner\/.+\.jpg url reject-img
+^https?:\/\/img\.rr\.tv\/banner\/.+?\.jpg url reject-img
^https?:\/\/ctrl\.zmzapi\.net\/app\/ads url reject-img
^https?:\/\/ctrl\.zmzapi\.net\/app\/init url reject-img
^https?:\/\/api\.laosiji\.com\/user\/startpage\/ url reject-img
^https?:\/\/adm\.10jqka\.com\.cn\/interface\/getads\.php url reject-img
-^https?:\/\/smkmp\.96225\.com\/smkcenter\/ad\/.+\/adBanner url reject-img
+^https?:\/\/smkmp\.96225\.com\/smkcenter\/ad\/.+?\/adBanner url reject-img
^https?:\/\/api\.mddcloud\.com\.cn\/api\/ad\/getClassAd\.action url reject-img
^https?:\/\/api\.mddcloud\.com\.cn\/api\/advert\/getHomepage\.action url reject-img
-^https?:\/\/static1\.keepcdn\.com\/.+\d{3}x\d{4} url reject-img
+^https?:\/\/static1\.keepcdn\.com\/.+?\d{3}x\d{4} url reject-img
^https?:\/\/aarkissltrial\.secure2\.footprint\.net\/v1\/ads url reject-img
^https?:\/\/rm\.aarki\.net\/v1\/ads url reject-img
^https?:\/\/182\.92\.244\.70\/d\/json\/ url reject-img
-^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.trip\.activity\.querytmsresources\/1\.0\?type=originaljson url reject-img
-^https?:\/\/.+\/videos\/KnifeHit_4\/gear3\/ url reject-img
-^https?:\/\/images\.kartor\.cn\/.+\.html url reject-img
+^https?:\/\/.+?\/videos\/KnifeHit_4\/gear3\/ url reject-img
+^https?:\/\/images\.kartor\.cn\/.+?\.html url reject-img
^https?:\/\/m\.creditcard\.ecitic\.com\/citiccard\/mbk\/appspace-client\/cr\/sys\/popAdv url reject-img
^https?:\/\/fm\.fenqile\.com\/routev2\/other\/getfloatAd\.json url reject-img
^https?:\/\/fm\.fenqile\.com\/routev2\/other\/startImg\.json url reject-img
-^https?:\/\/.+\/vips-mobile\/router\.do\?api_key= url reject-img
+^https?:\/\/.+?\/vips-mobile\/router\.do\?api_key= url reject-img
^https?:\/\/consumer\.fcbox\.com\/v1\/ad\/OpeningAdInfo\/ url reject-img
-^https?:\/\/fengplus\.feng\.com\/index\.php\?r=api\/slide\/.+Ads url reject-img
-^https?:\/\/.+\/img\/ad\.union\.api\/ url reject-img
+^https?:\/\/fengplus\.feng\.com\/index\.php\?r=api\/slide\/.+?Ads url reject-img
+^https?:\/\/.+?\/img\/ad\.union\.api\/ url reject-img
+^https?:\/\/.+?\/img\/web\.business\.image\/ url reject-img
^https?:\/\/ggv\.cmvideo\.cn\/v1\/iflyad\/ url reject-img
^https?:\/\/ivy\.pchouse\.com\.cn\/adpuba\/ url reject-img
^https?:\/\/www\.oschina\.net\/action\/apiv2\/get_launcher url reject-img
@@ -349,24 +336,22 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/b-api\.ins\.miaopai\.com\/1\/ad/ url reject-img
^https?:\/\/cdn\.tiku\.zhan\.com\/banner url reject-img
^https?:\/\/capi\.mwee\.cn/app-api/V12/app/getstartad url reject-img
-^https?:\/\/.+\/api\/app\/member\/ver2\/user\/login\/ url reject-img
+^https?:\/\/.+?\/api\/app\/member\/ver2\/user\/login\/ url reject-img
^https?:\/\/api\.gaoqingdianshi\.com\/api\/v2\/ad url reject-img
-^https?:\/\/i\d\.hoopchina\.com\.cn/blogfile\//d+\//d+\/BbsImg\.(?<=(big.(png|jpg)))$ url reject-img
-^https?:\/\/games\.mobileapi\.hupu\.com\/.+\/(search|interfaceAdMonitor|status|hupuBbsPm)/(hotkey|init|hupuBbsPm)\. url reject-img
+^https?:\/\/i\d\.hoopchina\.com\.cn/blogfile\/\d+\/\d+\/BbsImg\.(?<=(big.(png|jpg)))$ url reject-img
+^https?:\/\/games\.mobileapi\.hupu\.com\/.+?\/(search|interfaceAdMonitor|status|hupuBbsPm)/(hotkey|init|hupuBbsPm)\. url reject-img
^https?:\/\/games\.mobileapi\.hupu\.com\/interfaceAdMonitor url reject-img
^https?:\/\/img\.zuoyebang\.cc\/zyb-image[\s\S]*?\.jpg url reject-img
-^https?:\/\/.+allOne\.php\?ad_name=main_splash_ios url reject-img
-^https?:\/\/.+nga\.cn.+\bhome.+\b=ad url reject-img
-^https?:\/\/.+resource=article\/recommend\&accessToken= url reject-img
-^https?:\/\/113\.200\.76\.*:16420\/sxtd\.bike2\.01\/getkey\.do url reject-img
+^https?:\/\/.+?allOne\.php\?ad_name=main_splash_ios url reject-img
+^https?:\/\/.+?resource=article\/recommend\&accessToken= url reject-img
+^https?:\/\/113\.200\.76\.*?:16420\/sxtd\.bike2\.01\/getkey\.do url reject-img
^https?:\/\/creatives\.ftimg\.net\/ads url reject-img
^https?:\/\/dd\.iask\.cn\/ddd\/adAudit url reject-img
^https?:\/\/g\.tbcdn\.cn\/mtb\/ url reject-img
^https?:\/\/iphone265g\.com\/templates\/iphone\/bottomAd\.js url reject-img
-^https?:\/\/m.+\.china\.com\.cn\/statics\/sdmobile\/js\/ad url reject-img
-^https?:\/\/m.+\.china\.com\.cn\/statics\/sdmobile\/js\/mobile\.advert\.js url reject-img
-^https?:\/\/m.+\.china\.com\.cn\/statics\/sdmobile\/js\/mobileshare\.js url reject-img
-^https?:\/\/nga\.cn.+\bhome.+\b=ad url reject-img
+^https?:\/\/m.+?\.china\.com\.cn\/statics\/sdmobile\/js\/ad url reject-img
+^https?:\/\/m.+?\.china\.com\.cn\/statics\/sdmobile\/js\/mobile\.advert\.js url reject-img
+^https?:\/\/m.+?\.china\.com\.cn\/statics\/sdmobile\/js\/mobileshare\.js url reject-img
^https?:\/\/overseas\.weico\.cc\/portal\.php\?a=get_coopen_ads url reject-img
^https?:\/\/player\.hoge\.cn\/advertisement\.swf url reject-img
^https?:\/\/ress\.dxpmedia\.com\/appicast\/ url reject-img
@@ -383,37 +368,35 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/api-163\.biliapi\.net\/cover url reject-img
^https?:\/\/pan-api\.bitqiu\.com\/activity\/(getPromoteGuide|getUrlList) url reject-img
^https?:\/\/dssp\.stnts\.com url reject-img
-^https?:\/\/image1\.chinatelecom-ec\.com\/images\/.*\/client\w+\.jpg url reject-img
+^https?:\/\/image1\.chinatelecom-ec\.com\/images\/.*?\/client\w+\.jpg url reject-img
^https?:\/\/mps\.95508\.com\/mps\/club\/cardPortals\/adv\/\d+\.(jpg|png) url reject-img
-^https?:\/\/m\.creditcard\.ecitic\.com\/.*\/appStartAdv url reject-img
+^https?:\/\/m\.creditcard\.ecitic\.com\/.*?\/appStartAdv url reject-img
^https?:\/\/mlife\.jf365\.boc\.cn\/AppPrj\/FirstPic\.do url reject-img
-^https?:\/\/mlife\.cmbchina\.com\/ClientFaceService\/preCacheAdvertise\.json url reject-img
^https?:\/\/creditcardapp\.bankcomm\.com\/mapp\/common\/queryGuidePageAds\.do url reject-img
-^https?:\/\/[\s\S]*\/.+\.tc\.qq\.com/.*p201.1\.mp4 url reject-img
-^https?:\/\/[\s\S]*\/website\/.*\.jpg url reject-img
+^https?:\/\/[\s\S]*\/.+?\.tc\.qq\.com/.*?p201.1\.mp4 url reject-img
+^https?:\/\/[\s\S]*\/website\/.*?\.jpg url reject-img
^https?:\/\/[\s\S]*\/music\/photo_new\/T017R url reject-img
-^https?:\/\/y\.gtimg\.cn\/music\/.*_Ad/\d+\.png url reject-img
-^https?:\/\/shp\.qpic\.cn\/pggamehead\/.*h=\d{4} url reject-img
+^https?:\/\/y\.gtimg\.cn\/music\/.*?_Ad/\d+\.png url reject-img
+^https?:\/\/shp\.qpic\.cn\/pggamehead\/.*?h=\d{4} url reject-img
^https?:\/\/api2\.helper\.qq\.com\/game\/buttons url reject-img
-^https?:\/\/[\s\S]*\.baidu\.com/.*ad[xs]\.php url reject-img
+^https?:\/\/[\s\S]*\.baidu\.com/.*?ad[xs]\.php url reject-img
^https?:\/\/pan\.baidu\.com\/rest\/2.0\/pcs\/adx url reject-img
^https?:\/\/pan\.baidu\.com\/act\/api\/activityentry url reject-img
-^https?:\/\/[\s\S]*\/youku\/.*\.mp4 url reject-img
+^https?:\/\/[\s\S]*\/youku\/.*?\.mp4 url reject-img
^https?:\/\/optimus-ads\.amap\.com\/uploadimg\/ url reject-img
-^https?:\/\/cube\.elemecdn\.com\/.*\.mp4\? url reject-img
-^https?:\/\/p\d.meituan.net\/movie\/.*\?may_covertWebp url reject-img
+^https?:\/\/p\d.meituan.net\/movie\/.*?\?may_covertWebp url reject-img
^https?:\/\/p\d\.meituan\.net\/wmbanner\/ url reject-img
^https?:\/\/s3plus\.meituan\.net\/v1\/mss_a002 url reject-img
-^https?:\/\/img\.meituan\.net\/midas\/.*@\d{4}h url reject-img
+^https?:\/\/img\.meituan\.net\/midas\/.*?@\d{4}h url reject-img
^https?:\/\/img\.meituan\.net\/display\/\w+\.jpg\.webp url reject-img
^https?:\/\/[\s\S]*\/eapi\/ad\/ url reject-img
-^https?:\/\/iad.*mat\.[a-z]*\.12[67]\.net/\w+\.(jpg|mp4) url reject-img
-^https?:\/\/zt-app\.go189\.cn\/zt-app\/welcome\/.*Animation url reject-img
+^https?:\/\/iad.*?mat\.music\.12[67]\.net/\w+\.(jpg|mp4) url reject-img
+^https?:\/\/zt-app\.go189\.cn\/zt-app\/welcome\/.*?Animation url reject-img
^https?:\/\/[\s\S]*\/ting\/[a-z]*\/ts-\d+ url reject-img
^https?:\/\/res\.xiaojukeji\.com\/resapi\/activity\/get(Ruled|Preload) url reject-img
^https?:\/\/rich\.kuwo\.cn\/AdService\/kaiping\/adinfo url reject-img
^https?:\/\/[\s\S]*\.snssdk\.com\/api\/ad\/ url reject-img
-^https?:\/\/api\.feng\.com\/v1\/advertisement\/.*Claunch url reject-img
+^https?:\/\/api\.feng\.com\/v1\/advertisement\/.*?Claunch url reject-img
^https?:\/\/business\.msstatic\.com\/advertiser\/ url reject-img
^https?:\/\/cdnfile1\.msstatic\.com\/cdnfile\/appad\/ url reject-img
^https?:\/\/ms\.jr\.jd\.com\/gw\/generic\/aladdin\/na\/m\/getLoadingPicture url reject-img
@@ -422,32 +405,35 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/app\.yinxiang\.com\/ads\/getAdsInfo url reject-img
^https?:\/\/api\.douban\.com\/v2\/app_ads\/splash url reject-img
^https?:\/\/ptmpcap\.caocaokeji\.cn\/advert-bss\/ url reject-img
-^https?:\/\/newapp\.szsmk\.com\/app\/config\/.*Ad url reject-img
-^https?:\/\/api\.rr\.tv\/.*(getAll|Version) url reject-img
+^https?:\/\/newapp\.szsmk\.com\/app\/config\/.*?Ad url reject-img
^https?:\/\/client\.qunar\.com\/pitcher-proxy\?qrt=p_splashAd url reject-img
^https?:\/\/m\.tuniu\.com\/api\/operation\/splash\/ url reject-img
-^https?:\/\/y\.gtimg\.cn\/music\/common\/\/upload\/kg_ad/.*\d{4}\.jpg url reject-img
+^https?:\/\/y\.gtimg\.cn\/music\/common\/\/upload\/kg_ad/.*?\d{4}\.jpg url reject-img
^https?:\/\/dimg04\.c-ctrip\.com\/images\/\w+(_\d{4}){2} url reject-img
-^https?:\/\/adm\.10jqka\.com\.cn\/img\/ad\/.*(1\d{2}|\d{4})\.jpg url reject-img
+^https?:\/\/adm\.10jqka\.com\.cn\/img\/ad\/.*?(1\d{2}|\d{4})\.jpg url reject-img
^https?:\/\/api\.gotokeep\.com\/ads\/ url reject-img
^https?:\/\/ggx\.cmvideo\.cn\/request\/ url reject-img
^https?:\/\/oral\.youdao\.com\/oral\/adInfo url reject-img
^https?:\/\/impservice\.dictapp\.youdao\.com\/imp\/request url reject-img
-^https?://du\.hupucdn\.com\/\w+h\d{4} url reject-img
+^https?:\/\/du\.hupucdn\.com\/\w+h\d{4} url reject-img
^https?:\/\/api\.yangkeduo\.com\/api\/cappuccino\/splash url reject-img
-^https?:\/\/mp\.weixin\.qq\.com\/(s|mp)\/(ad_|advertisement|getappmsgad|author|report|appmsgreport|appmsgpicreport) url reject-img
-^https?:\/\/ap(i|p)\.bilibili\.com\/((x\/v2|pgc)\/(search\/defaultword|season\/rank\/cn|splash\/)|(pgc/season/rank/cn|x/v2/(rank.*rid=(168|5)|search/(defaultword|hot|recommend|resource)))) url reject-img
-^https?:\/\/(api|www)\.zhihu\.com\/((terms\/privacy\/confirm|app_config|banner|commercial_api\/(launch|real_time))|(fringe|zst|drama|adx|commercial|real_time|ad-style-service|banners|market/popover|mqtt|.*(launch|featured-comment-ad|guide|recommendations|community-ad)|search/(top|tab|preset)|ab)) url reject-img
-^https?:\/\/interface3?.music.163.com/eapi/(ad|abtest|sp|hot|store|mlog|search/(specialkeyword|defaultkeyword|hot)) url reject-img
-^https?:\/\/weibointl.api.weibo.cn/portal.php\?a=get_coopen_ads url reject-img
+^https?:\/\/mp\.weixin\.qq\.com\/(s|mp)\/(ad_|advertisement|getappmsgad|report|appmsgreport|appmsgpicreport) url reject-img
+^https?:\/\/ap(i|p)\.bilibili\.com\/((x\/v2|pgc)\/(season\/rank\/cn|splash\/)|(pgc/season/rank/cn|x/v2/(rank.*?rid=(168|5)|search/(hot|recommend|resource)))) url reject-img
+^https?:\/\/www\.zhihu\.com\/terms\/privacy\/confirm url reject-img
+^https?:\/\/api\.zhihu\.com\/market\/popover url reject-img
+^https?:\/\/api\.zhihu\.com\/search\/(top|tab|preset) url reject-img
+^https?:\/\/api\.zhihu\.com\/(launch|ad-style-service|app_config|real_time|ab\/api) url reject-img
+^https?:\/\/api\.zhihu\.com\/commercial_api\/(launch|real_time) url reject-img
+^https?:\/\/(api|www)\.zhihu\.com\/.*?(featured-comment-ad|recommendations|community-ad) url reject-img
+^https?:\/\/(api|www)\.zhihu\.com\/(fringe|adx|commercial|ad-style-service|banners|mqtt) url reject-img
+^https?:\/\/interface3?\.music\.163\.com/eapi/(ad|abtest|sp|hot|store|search/(specialkeyword|defaultkeyword|hot)) url reject-img
+^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=get_coopen_ads url reject-img
^https?:\/\/yxyapi2\.drcuiyutao\.com\/yxy-api-gateway\/api\/json\/advert\/getsAd url reject-dict
^https?:\/\/capis-clb\.didapinche\.com\/ad\/ url reject-dict
^https?:\/\/api\.vistopia\.com\.cn\/api\/v1\/home\/advertisement url reject
^https?:\/\/www\.didapinche\.com\/app\/adstat\/ url reject-img
^https?:\/\/capis\.didapinche\.com\/ad\/ url reject-img
^https?:\/\/api-163\.biliapi\.net/cover url reject-img
-^https:\/\/api\.waitwaitpay\.com\/\/api\/splash$ url reject-img
-^https:\/\/api\.waitwaitpay\.com\/\/api\/ad_banners$ url reject-img
^https?:\/\/mi\.gdt\.qq\.com\/gdt_mview.\fcg url reject-img
^https?:\/\/api\.jxedt\.com\/jump\/EMiCcDNp url reject-img
^https?:\/\/richmanapi\.jxedt\.com\/api\/banadplus url reject-img
@@ -463,4 +449,9 @@ hostname = qidian.qpic.cn,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,a
^https?:\/\/ddrk\.me\/wp-content\/plugins\/advanced-floating-content-lite\/public\/images\/close\.png url reject-img
^https?:\/\/img\.ddrk\.me\/cover\.png url reject-img
^https?:\/\/app-api\.smzdm\.com\/util\/loading url reject-img
-^https?:\/\/acs\.m\.taobao\.com\/gw\/mtop\.common\.fetTimestamp url reject-img
\ No newline at end of file
+^https?:\/\/emdcadvertise\.eastmoney\.com\/infoService url reject-img
+^https?:\/\/www.icourse163.org\/.*?(Advertisement) url reject-img
+^https?:\/\/sf.*?-ttcdn-tos\.pstatp\.com\/obj\/ad url reject-img
+^https?:\/\/oset-api\.open-adx\.com\/ad\/ url reject-img
+# XueQiu
+^https?:\/\/(101\.201\.175\.228|182\.92\.251\.113)\/brand\/search\/v1\.json url reject-dict
\ No newline at end of file
diff --git a/QuantumultX/Snippet/BiliComicCookie.snippet b/QuantumultX/Snippet/BiliComicCookie.snippet
new file mode 100644
index 0000000000..d3d5bdb494
--- /dev/null
+++ b/QuantumultX/Snippet/BiliComicCookie.snippet
@@ -0,0 +1,8 @@
+# 该 QuantumultX 远程重写配置片段用于获取"哔哩哔哩漫画签到"账号Cookie
+# 配置脚本后打开哔哩哔哩漫画(AppStore中国区),点击"我的"可完成获取
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/BiliComicCookie.snippet
+
+
+^https:\/\/app\.bilibili\.com\/x\/v2\/account\/myinfo url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
+
+hostname = app.bilibili.com
\ No newline at end of file
diff --git a/QuantumultX/Snippet/CtripAuth.snippet b/QuantumultX/Snippet/CtripAuth.snippet
new file mode 100644
index 0000000000..78327113a7
--- /dev/null
+++ b/QuantumultX/Snippet/CtripAuth.snippet
@@ -0,0 +1,8 @@
+# 该 QuantumultX 远程重写配置片段用于获取"携程签到"账号授权
+# 配置脚本后登陆"携程旅行"微信小程序或"携程网页版"(https://m.ctrip.com/)即可完成获取
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/CtripAuth.snippet
+
+
+^https:\/\/m\.ctrip\.com\/restapi\/soa2\/\d+\/[a-zA-Z]+Login(?:$|\?) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Ctrip-DailyBonus/Ctrip.js
+
+hostname = m.ctrip.com
\ No newline at end of file
diff --git a/QuantumultX/Snippet/GoogleCAPTCHA.snippet b/QuantumultX/Snippet/GoogleCAPTCHA.snippet
new file mode 100644
index 0000000000..0f7e985912
--- /dev/null
+++ b/QuantumultX/Snippet/GoogleCAPTCHA.snippet
@@ -0,0 +1,12 @@
+# QuantumultX 远程重写配置片段
+
+# Google搜索人机验证解决方案
+# Google搜索内容时并发使用多个代理策略、策略组尝试搜索内容,并返回最优结果。具体细节可查看脚本注释。
+
+# 脚本:https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Google_CAPTCHA.js
+# 片段:https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/GoogleCAPTCHA.snippet
+
+
+^https:\/\/www\.google\.com(?:\.[a-z]+|)\/(?:search\?(?:|.+?&)q=|$) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Google_CAPTCHA.js
+
+hostname = www.google.com*
\ No newline at end of file
diff --git a/QuantumultX/Snippet/KuaiKanCookie.snippet b/QuantumultX/Snippet/KuaiKanCookie.snippet
new file mode 100644
index 0000000000..2cd8e0eaa4
--- /dev/null
+++ b/QuantumultX/Snippet/KuaiKanCookie.snippet
@@ -0,0 +1,8 @@
+# 该 QuantumultX 远程重写配置片段用于获取"快看漫画签到"账号Cookie
+# 配置脚本后打开快看漫画(AppStore中国区),点击"我的"可完成获取
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/KuaiKanCookie.snippet
+
+
+^https:\/\/api\.kkmh\.com\/v\d\/passport\/user url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/KuaiKan-DailyBonus/KKMH.js
+
+hostname = api.kkmh.com
\ No newline at end of file
diff --git a/QuantumultX/Snippet/TieBaCookie.snippet b/QuantumultX/Snippet/TieBaCookie.snippet
new file mode 100644
index 0000000000..1a5e923ce0
--- /dev/null
+++ b/QuantumultX/Snippet/TieBaCookie.snippet
@@ -0,0 +1,8 @@
+# 该 QuantumultX 远程重写配置片段用于获取"百度贴吧签到"账号Cookie
+# 配置脚本后打开百度贴吧App(AppStore中国区, 非内部版),点击"我的"可完成获取
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/TieBaCookie.snippet
+
+
+https?:\/\/(c\.tieba\.baidu\.com|180\.97\.\d+\.\d+)\/c\/s\/login url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/BDTieBa-DailyBonus/TieBa.js
+
+hostname = c.tieba.baidu.com
\ No newline at end of file
diff --git a/QuantumultX/Snippet/iQiYiCookie.snippet b/QuantumultX/Snippet/iQiYiCookie.snippet
new file mode 100644
index 0000000000..0c77dbc4b3
--- /dev/null
+++ b/QuantumultX/Snippet/iQiYiCookie.snippet
@@ -0,0 +1,8 @@
+# 该 QuantumultX 远程重写配置片段用于获取"爱奇艺签到"账号Cookie
+# 配置脚本后 Safari 浏览器打开 https://m.iqiyi.com/user.html 使用密码登录可完成获取
+# https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Snippet/iQiYiCookie.snippet
+
+
+^https:\/\/passport\.iqiyi\.com\/apis\/user\/ url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/iQIYI-DailyBonus/iQIYI.js
+
+hostname = passport.iqiyi.com
\ No newline at end of file
diff --git a/QuantumultX/TestFlightDownload.conf b/QuantumultX/TestFlightDownload.conf
new file mode 100644
index 0000000000..bdae936a48
--- /dev/null
+++ b/QuantumultX/TestFlightDownload.conf
@@ -0,0 +1,5 @@
+# 该订阅仅适用于QuantumultX, 用于更新TestFlight App时, 提示"APP不可用"问题. 解除区域限制.
+
+hostname = testflight.apple.com
+
+^https?:\/\/testflight\.apple\.com\/v\d\/accounts\/.+?\/install$ url script-request-body https://gist.githubusercontent.com/NobyDa/9be418b93afc5e9c8a8f4d28ae403cf2/raw/TF_Download.js
\ No newline at end of file
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index 9c82ab04c4..dee52ced84
--- a/README.md
+++ b/README.md
@@ -1,34 +1,203 @@
-## Quantumult X related Description:
+## TOC
+- [TOC](#toc)
+- [Script Overview](#script-overview)
+ - [Daily-Bonus Script](#daily-bonus-script)
+ - [Functionality-enhancing Script](#functionality-enhancing-script)
+ - [Other Script](#other-script)
+- [Surge File Overview](#surge-file-overview)
+- [QuantumultX File Overview](#quantumultx-file-overview)
+- [Loon File Overview](#loon-file-overview)
+- [Stash File Overview](#stash-file-overview)
+- [Disclaimer](#disclaimer)
+ - [Decrypt](#decrypt)
+ - [Privacy](#privacy)
+ - [Commercial](#commercial)
+ - [Infringement](#infringement)
+ - [Liability](#liability)
+ - [Change](#change)
+- [Acknowledgment](#acknowledgment)
+- [License](#license)
+
+
+> **The scripts or rewrite rules described below may require enabling MITM. Additionally, the generated root certificate must be installed and trusted manually in the system.**
+
+## Script Overview
+
+### Daily-Bonus Script
+
+| Application | Script name | Available | Maintenance |
+| :-----------------------------------------------------: | :----------------------------------------------------------: | :------------: | :---------: |
+| [京东商城](https://apps.apple.com/app/id414245413) | [JD_DailyBonus.js](https://github.com/NobyDa/Script/blob/master/JD-DailyBonus/JD_DailyBonus.js) | ❌ | ⚠️ |
+| [百度贴吧](https://apps.apple.com/app/id477927812) | [TieBa.js](https://github.com/NobyDa/Script/blob/master/BDTieBa-DailyBonus/TieBa.js) | ✅ (2023/08/17) | ❌ |
+| [吾爱破解](https://www.52pojie.cn/) | [52pojie.js](https://github.com/NobyDa/Script/blob/master/52pojie-DailyBonus/52pojie.js) | ❌ | ❌ |
+| [爱奇艺](https://apps.apple.com/cn/app/id393765873) | [iQIYI.js](https://github.com/NobyDa/Script/blob/master/iQIYI-DailyBonus/iQIYI.js) | ✅ (2023/08/17) | ✅ |
+| [快看漫画](https://apps.apple.com/app/id906936224) | [KKMH.js](https://github.com/NobyDa/Script/blob/master/KuaiKan-DailyBonus/KKMH.js) | ✅ (2023/08/17) | ✅ |
+| [哔哩哔哩漫画](https://apps.apple.com/app/id1426252715) | [Manga.js](https://github.com/NobyDa/Script/blob/master/Bilibili-DailyBonus/Manga.js) | ✅ (2023/08/17) | ✅ |
+| [巴哈姆特](https://www.gamer.com.tw/) | [BahamutDailyBonus.js](https://github.com/NobyDa/Script/blob/master/Bahamut/BahamutDailyBonus.js) | ✅ (2023/08/17) | ✅ |
+
+------
+
+### Functionality-enhancing Script
+
+| Script name | Description |
+|:-------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| [PolicySwitch.js](https://github.com/NobyDa/Script/blob/master/Shortcuts/PolicySwitch.js) | Switch [QX](https://apps.apple.com/app/id1443988620),[Surge](https://apps.apple.com/app/id1442620678),[Loon](https://apps.apple.com/app/id1373567447) policy groups using ios [shortcut](https://apps.apple.com/app/id1462947752). |
+| [DataQuery.js](https://github.com/NobyDa/Script/blob/master/Sub-store-parser/DataQuery.js) | Server(VPN) traffic query based on [Sub-Store](https://github.com/Peng-YM/Sub-Store). |
+| [Bili_Auto_Regions.js](https://github.com/NobyDa/Script/blob/master/Surge/JS/Bili_Auto_Regions.js) | [Bilibili anime](https://apps.apple.com/cn/app/id736536022) auto switch region & show [douban](https://www.douban.com/) rating. |
+| [ExchangePoints.js](https://github.com/NobyDa/Script/blob/master/Bilibili-DailyBonus/ExchangePoints.js) | [Bilibili Comics](https://apps.apple.com/app/id1426252715) points mall auto snap up. |
+| [TestFlightAccount.js](https://github.com/NobyDa/Script/blob/master/TestFlight/TestFlightAccount.js) | Merge and share [TestFlight](https://apps.apple.com/app/id899247664) accounts |
+| [Google_CAPTCHA.js](https://github.com/NobyDa/Script/blob/master/Surge/JS/Google_CAPTCHA.js) | Google CAPTCHA solution(Surge only) |
-* **Script remote resources and subscriptions only apply to QX v1.0.0(120). If the version is higher than v1.0.2 (136), you need to point to the local script path yourself.**
+---
+
+### Other Script
+
+| Application | Script name | Description | Available |
+| :----------------------------------------------------------: | :----------------------------------------------------------: | :---------------------: | :------------: |
+| [HTTPBot](https://apps.apple.com/cn/app/id1232603544) | [vsco.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js) | Unlock membership | ✅ (2023/08/17) |
+| [VSCO](https://apps.apple.com/app/id588013838) | [vsco.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js) | Unlock membership | ✅ (2023/08/17) |
+| [1Blocker](https://apps.apple.com/app/id1365531024) | [vsco.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js) | Unlock membership | ✅ (2023/08/17) |
+| [JibJab](https://apps.apple.com/app/id875561136) | [jibjab.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/jibjab.js) | Unlock membership | ✅ (2023/08/17) |
+| [美易Picsart](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/PicsArt.js) | [PicsArt.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/PicsArt.js) | Unlock membership | ✅ (2023/08/17) |
+| [MIX滤镜大师](https://apps.apple.com/app/id913947918) | [MIX.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/MIX.js) | Unlock in-app purchases | ✅ (2023/08/17) |
+| [Polarr 泼辣](https://apps.apple.com/app/id988173374) | [Polarr.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Polarr.js) | Unlock in-app purchases | ✅ (2023/08/17) |
+| [小影VivaVideo](https://apps.apple.com/app/id738897668) | [vivavideo.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/vivavideo.js) | Unlock membership | ✅ (2023/08/17) |
+| [CamScanner](https://apps.apple.com/app/id388627783) | [CamScanner.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js) | Unlock some benefits | ✅ (2023/08/17) |
+| [知音漫客](https://apps.apple.com/app/id1012491820) | [Zymh.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Zymh.js) | Unlock vip chapters | ✅ (2023/08/17) |
+| [香蕉视频](https://www.aa2.app) | [xjsp.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js) | Unlock membership | ✅ (2023/08/17) |
+| [网易蜗牛读书](https://apps.apple.com/app/id1127249355) | [wnyd.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js) | Unlock membership | ✅ (2023/08/17) |
+| [陆琪讲故事](https://apps.apple.com/app/id1435575842) | [luqi.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/luqi.js) | Unlock radio | ✅ (2023/08/17) |
+| [百度网盘](https://apps.apple.com/app/id547166701) | [BaiduCloud.js](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/BaiduCloud.js) | Unlock video speed | ✅ (2023/08/17) |
+| [WeChat](https://apps.apple.com/app/id414478124) | [Wechat.js](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js) | Remove Ads | ✅ (2023/08/17) |
+| [動畫瘋](https://apps.apple.com/tw/app/id1102650114) | [BahamutAnimeAds.js](https://raw.githubusercontent.com/NobyDa/Script/master/Bahamut/BahamutAnimeAds.js) | Remove Ads | ✅ (2023/08/17) |
+
+---
+
+## Surge File Overview
+
+| File name | Description | Type |
+| :----------------------------------------------------------: | :----------------------------------------------------------: | ------ |
+| [HuiJuDongManAds.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/HuiJuDongManAds.sgmodule) | Remove [APP](https://apps.apple.com/app/id1451949669) Ads | Module |
+| [IPA_install.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/IPA_install.sgmodule) | Use Surge to assist in install IPA (signed version) | Module |
+| [TestFlightDownload.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/TestFlightDownload.sgmodule) | Remove [TestFlight](https://apps.apple.com/app/id899247664) region restrictions | Module |
+| [TestFlightAccount.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/TestFlightAccount.sgmodule) | Merge and share [TestFlight](https://apps.apple.com/app/id899247664) accounts | Module |
+| [GetCookie.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/GetCookie.sgmodule) | Daily bonus script related | Module |
+| [BahamutAnimeAds.sgmodule](https://raw.githubusercontent.com/NobyDa/Script/master/Surge/Module/BahamutAnimeAds.sgmodule) | Remove [Bahamut anime](https://apps.apple.com/tw/app/id1102650114) Ads | Module |
+
+---
+
+## QuantumultX File Overview
+
+| File name | Description | Type |
+|:---------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------:|:-----------------:|
+| [Js.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js.conf) | Remote script subscription. | Rewrite Resources |
+| [Js_Remote_Cookie.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js_Remote_Cookie.conf) | Daily bonus script related | Rewrite Resources |
+| [TestFlightDownload.conf](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/TestFlightDownload.conf) | Remove [TestFlight](https://apps.apple.com/app/id899247664) region restrictions | Rewrite Resources |
+| [IPA-Installer.snippet](https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/IPA-Installer.snippe) | Use QX to assist in install IPA (signed version) | Rewrite Resources |
+
+Rules of type "Rule" include only ad hosts. Please select the REJECT policy.
+
+Difference between QuantumultX versions (Click to view)
+
+* AppStore version QX1.0.0 (120): This is the initial version, and JS functionality is unrestricted.
+
+* AppStore version QX1.0.1 (130): This version adds support for V2Ray protocols but restricts certain keywords for VIP-type scripts.
+
+* AppStore version QX1.0.2 (136): This version adds support for HTTP protocols and relaxes certain script keyword restrictions but restricts remote script subscriptions.
+
+* AppStore version QX1.0.3 (155): This version removes keyword restrictions and restores the script remote subscription functionality. However, the device ID must be commented out in the remote script before execution.
+
+* AppStore version QX1.0.4 (164): This version completely restricts remote script subscriptions, requiring all scripts to use local paths.
+
+* AppStore version QX1.0.5 (192): This version introduces a scheduled script task feature.
+
+* AppStore version QX1.0.6 (212): This version supports modifying HTTP request body and replaying HTTP requests.
+
+* AppStore version QX1.0.7 (240): This version supports TLS 1.3 (TLS-based proxy protocol) and Trojan protocols.
-* Because the latest version 1.0.2 has limited the "remote resource" of the script, there will be an error in adding the subscription.
+* ...
-### The difference between the versions :
+* AppStore version QX1.0.10 (313): This version restores remote script subscriptions.
-* Store version QX1.0.0 (120) JS function is unlimited, but does not support v2, does not support AlwaysOn
+In QX1.0.3, the device ID feature was added. Here’s a simple example:
-* Store version QX1.0.1 (130) restricts keywords for script VIP types, but supports v2 and supports AlwaysOn
+```javascript
+/**
+ * @supported 23AD6B11CD4B
+ */
-* Store version QX1.0.2 (136) Relaxed certain keyword restrictions, but limited script remote references (script subscriptions), support for v2 and support for http and support AlwaysOn
+let obj = JSON.parse($response.body)
+obj["example"] = 0;
+$done({body:JSON.stringify(obj)})
+```
-* **It is currently not possible to get QX1.0.0 (120) via sniffing packet capture because the dev has withdrawn**
+The randomly generated device ID above is located at the bottom of the Quantumult X additional menu and may change after a system restore.
+
+