Clash/script/startup/startup.js

215 lines
12 KiB
JavaScript
Raw Permalink Normal View History

2021-04-09 19:34:05 +08:00
const scriptName = "去除APP启动广告";
2023-02-11 10:59:16 +08:00
const $ = MagicJS(scriptName, "INFO");
2021-04-09 19:34:05 +08:00
(() => {
let response = null;
2023-02-11 10:59:16 +08:00
if ($.isResponse) {
2021-04-09 19:34:05 +08:00
switch (true) {
2023-02-11 10:59:16 +08:00
// 爱奇艺
case /^https?:\/\/\w*\.cupid\.iqiyi\.com\/mixer\?/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
delete obj["adSlots"];
response = { body: JSON.stringify(obj) };
} catch (err) {
$.logger.error(`爱奇艺开屏去广告出现异常:${err}`);
}
break;
// BiliBili
case /^https?:\/\/app\.bilibili\.com\/x\/v2\/splash\/list/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
obj["data"]["max_time"] = 0;
obj["data"]["min_interval"] = 31536000;
obj["data"]["pull_interval"] = 31536000;
// for (let i = 0; i < obj["data"]["show"].length; i++) {
// obj["data"]["show"][i]["begin_time"] = 1915027200;
// obj["data"]["show"][i]["end_time"] = 1924272000;
// }
obj["data"]["list"]["show"] = [];
for (let i = 0; i < obj["data"]["list"].length; i++) {
obj["data"]["list"][i]["duration"] = 0;
obj["data"]["list"][i]["begin_time"] = 1915027200;
obj["data"]["list"][i]["end_time"] = 1924272000;
}
body = JSON.stringify(obj);
} catch (err) {
$.logger.error(`BiliBili开屏去广告出现异常${err}`);
}
break;
// Fa米家
case /^https?:\/\/fmapp\.chinafamilymart\.com\.cn\/api\/app\/market\/start\/ad/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
if (obj.code === "200") {
obj.data.relayDisplayUrl = "";
}
obj.data = {};
response = { body: JSON.stringify(obj) };
} catch (err) {
$.logger.error(`Fa米家开屏去广告出现异常${err}`);
}
2021-04-09 19:34:05 +08:00
// 嘀嗒出行
2023-02-11 10:59:16 +08:00
case /^https?:\/\/capis(-?\w*)?\.didapinche\.com\/ad\/cx\/startup\?/.test($.request.url):
2021-04-09 19:34:05 +08:00
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
if (obj.hasOwnProperty("startupPages") === true) {
2021-04-09 19:34:05 +08:00
obj.show_time = 1;
obj.full_screen = 0;
let startupPages = [];
obj.startupPages.forEach((element) => {
element["width"] = 1;
element["height"] = 1;
element["page_url"] = "#";
2023-02-11 10:59:16 +08:00
element["create_time"] = "20990101000000";
element["start_time"] = "20990101000000";
element["end_time"] = "20990101000000";
2021-04-09 19:34:05 +08:00
startupPages.push(element);
});
obj.startupPages = startupPages;
response = { body: JSON.stringify(obj) };
}
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`嘀嗒出行开屏去广告出现异常:${err}`);
2021-04-09 19:34:05 +08:00
}
break;
// 美团外卖
2023-02-11 10:59:16 +08:00
case /^https?:\/\/wmapi\.meituan\.com\/api\/v\d+\/loadInfo?/.test($.request.url):
2021-04-09 19:34:05 +08:00
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
if (obj.data.startpicture.hasOwnProperty("ad")) {
obj.data.startpicture.ad = [];
} else if (obj.data.startpicture.hasOwnProperty("mk")) {
obj.data.startpicture.mk = [];
} else {
obj.data.startpicture = [];
}
2021-04-09 19:34:05 +08:00
response = { body: JSON.stringify(obj) };
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`美团外卖开屏去广告出现异常:${err}`);
2021-04-09 19:34:05 +08:00
}
break;
// 小爱音箱
2023-02-11 10:59:16 +08:00
case /^https?:\/\/hd\.mina\.mi\.com\/splashscreen\/alert/.test($.request.url):
2021-04-09 19:34:05 +08:00
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
2021-04-09 19:34:05 +08:00
let data = [];
for (let i = 0; i < obj.data.length; i++) {
let ad = obj.data[i];
ad.start = "1924272000000";
ad.end = "1924358400000";
ad.stay = 1;
ad.maxTimes = 1;
data.push(ad);
}
obj.data = data;
response = { body: JSON.stringify(obj) };
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`小爱音箱开屏去广告出现异常:${err}`);
2021-04-09 19:34:05 +08:00
}
break;
// 京东
2023-02-11 10:59:16 +08:00
case /^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=start/.test($.request.url):
2021-04-09 19:34:05 +08:00
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
2021-04-09 19:34:05 +08:00
for (let i = 0; i < obj.images.length; i++) {
for (let j = 0; j < obj.images[i].length; j++) {
if (obj.images[i][j].showTimes) {
obj.images[i][j].showTimes = 0;
obj.images[i][j].onlineTime = "2030-12-24 00:00:00";
obj.images[i][j].referralsTime = "2030-12-25 00:00:00";
obj.images[i][j].time = 0;
}
}
}
obj.countdown = 100;
obj.showTimesDaily = 0;
response = { body: JSON.stringify(obj) };
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`京东开屏去广告出现异常:${err}`);
2021-04-09 19:34:05 +08:00
}
break;
// 联享家
2023-02-11 10:59:16 +08:00
case /^https?:\/\/mi\.gdt\.qq\.com\/gdt_mview.fcg/.test($.request.url):
2021-04-09 19:34:05 +08:00
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
2021-04-09 19:34:05 +08:00
obj.seq = "0";
obj.reqinterval = 0;
2023-02-11 10:59:16 +08:00
delete obj["last_ads"];
2021-04-09 19:34:05 +08:00
delete obj.data;
response = { body: JSON.stringify(obj) };
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`联享家开屏去广告出现异常:${err}`);
2021-04-09 19:34:05 +08:00
}
break;
// 多点
2023-02-11 10:59:16 +08:00
case /^https?:\/\/cmsapi\.dmall\.com\/app\/home\/homepageStartUpPic/.test($.request.url):
try {
2023-02-11 10:59:16 +08:00
let obj = JSON.parse($.response.body);
for (let i = 0; i < obj["data"]["welcomePage"].length; i++) {
obj["data"]["welcomePage"][i]["onlineTime"] = 1915027200000;
obj["data"]["welcomePage"][i]["offlineTime"] = 1924272000000;
}
response = { body: JSON.stringify(obj) };
} catch (err) {
2023-02-11 10:59:16 +08:00
$.logger.error(`多点开屏广告处理出现异常:${err}`);
}
break;
// 轻牛健康
case /^https?:\/\/gw\.yolanda\.hk\/api\/servlets\?endpoint=banners\/show_launch_banner/.test($.request.url):
try {
let obj = {
"code": "200",
"msg": "ok",
"data": {
"present_flag": 1,
"banner": {
"banner_id": "1861064161258799417",
"image": "http://qnplus-banner.glb.qnniu.com/banner_1636700135",
"image_type": 1,
"jump_link": "https://app-h5.yolanda.hk/redirect_center.html?type=fascia_gun",
"jump_type": 1,
"duration": 5,
"frequency": 1,
"updated_at": 1638157314
}
}
}
response = { body: JSON.stringify(obj) };
} catch (err) {
$.logger.error(`轻牛健康开屏广告处理出现异常:${err}`);
}
break;
2021-04-09 19:34:05 +08:00
default:
2023-02-11 10:59:16 +08:00
$.logger.warning(`触发意外的请求处理请确认脚本或复写配置正常。URL:\n${$.request.url}`);
2021-04-09 19:34:05 +08:00
break;
}
} else {
2023-02-11 10:59:16 +08:00
$.logger.warning(`触发意外的请求处理请确认脚本或复写配置正常。URL:\n${$.request.url}`);
2021-04-09 19:34:05 +08:00
}
if (response) {
2023-02-11 10:59:16 +08:00
$.done(response);
2021-04-09 19:34:05 +08:00
} else {
2023-02-11 10:59:16 +08:00
$.done();
2021-04-09 19:34:05 +08:00
}
})();
// prettier-ignore
2023-02-11 10:59:16 +08:00
/**
*
* $$\ $$\ $$\ $$$$$\ $$$$$$\ $$$$$$\
* $$$\ $$$ | \__| \__$$ |$$ __$$\ $$ ___$$\
* $$$$\ $$$$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$ |$$ / \__| \_/ $$ |
* $$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____| $$ |\$$$$$$\ $$$$$ /
* $$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$\ $$ | \____$$\ \___$$\
* $$ |\$ /$$ |$$ __$$ |$$ | $$ |$$ |$$ | $$ | $$ |$$\ $$ | $$\ $$ |
* $$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\\$$$$$$ |\$$$$$$ | \$$$$$$ |
* \__| \__| \_______| \____$$ |\__| \_______|\______/ \______/ \______/
* $$\ $$ |
* \$$$$$$ |
* \______/
*
*/
// prettier-ignore
function MagicJS(scriptName="MagicJS",logLevel="INFO"){const MagicEnvironment=()=>{const isLoon=typeof $loon!=="undefined";const isQuanX=typeof $task!=="undefined";const isNode=typeof module!=="undefined";const isSurge=typeof $httpClient!=="undefined"&&!isLoon;const isStorm=typeof $storm!=="undefined";const isStash=typeof $environment!=="undefined"&&typeof $environment["stash-build"]!=="undefined";const isSurgeLike=isSurge||isLoon||isStorm||isStash;const isScriptable=typeof importModule!=="undefined";return{isLoon:isLoon,isQuanX:isQuanX,isNode:isNode,isSurge:isSurge,isStorm:isStorm,isStash:isStash,isSurgeLike:isSurgeLike,isScriptable:isScriptable,get name(){if(isLoon){return"Loon"}else if(isQuanX){return"QuantumultX"}else if(isNode){return"NodeJS"}else if(isSurge){return"Surge"}else if(isScriptable){return"Scriptable"}else{return"unknown"}},get build(){if(isSurge){return $environment["surge-build"]}else if(isStash){return $environment["stash-build"]}else if(isStorm){return $storm.buildVersion}},get language(){if(isSurge||isStash){return $environment["language"]}},get version(){if(isSurge){return $environment["surge-version"]}else if(isStash){return $environment["stash-version"]}else if(isStorm){return $storm.appVersion}else if(isNode){return process.version}},get system(){if(isSurge){return $environment["system"]}else if(isNode){return process.platform}},get systemVersion(){if(isStorm){return $storm.systemVersion}},get deviceName(){if(isStorm){return $storm.deviceName}}}};const MagicLogger=(scriptName,logLevel="INFO")=>{let _level=logLevel;const logLevels={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1};const logEmoji={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""};const _log=(msg,level="INFO")=>{if(!(logLevels[_level]<logLevels[level.toUpperCase()]))console.log(`[${level}] [${scriptName}]\n${logEmoji[level.toUpperCase()]}${msg}\n`)};const setLevel=logLevel=>{_level=logLevel};return{getLevel:()=>{return _level},setLevel:setLevel,sniffer:msg=>{_log(msg,"SNIFFER")},debug:msg=>{_log(msg,"DEBUG")},info:msg=>{_log(msg,"INFO")},notify:msg=>{_log(msg,"NOTIFY")},warning:msg=>{_log(msg,"WARNING")},error:msg=>{_log(msg,"ERROR")},retry:msg=>{_log(msg,"RETRY")}}};return new class{constructor(scriptName,logLevel){this._startTime=Date.now();this.version="3.0.0";this.scriptName=scriptName;this.env=MagicEnvironment();this.logger=MagicLogger(scriptName,logLevel);this.http=typeof MagicHttp==="function"?MagicHttp(this.env,this.logger):undefined;this.data=typeof MagicData==="function"?MagicData(this.env,this.logger):undefined;this.notification=typeof MagicNotification==="function"?MagicNotification(this.scriptName,this.env,this.logger,this.http):undefined;this.utils=typeof MagicUtils==="function"?MagicUtils(this.env,this.logger):undefined;this.qinglong=typeof MagicQingLong==="function"?MagicQingLong(this.env,this.data,this.logger):undefined;if(typeof this.data!=="undefined"){let magicLoglevel=this.data.read("magic_loglevel");const barkUrl=this.data.read("magic_bark_url");if(magicLoglevel){this.logger.setLevel(magicLoglevel.toUpperCase())}if(barkUrl){this.notification.setBark(barkUrl)}}}get isRequest(){return typeof $request!=="undefined"&&typeof $response==="undefined"}get isResponse(){return typeof $response!=="undefined"}get isDebug(){return this.logger.level==="DEBUG"}get request(){return typeof $request!=="undefined"?$request:undefined}get response(){if(typeof $response!=="undefined"){if($response.hasOwnProperty("status"))$response["statusCode"]=$response["status"];if($response.hasOwnProperty("statusCode"))$response["status"]=$response["statusCode"];return $response}else{return undefined}}done=(value={})=>{this._endTime=Date.now();let span=(this._endTime-this._startTime)/1e3;this.logger.info(`SCRIPT COMPLETED: ${span} S.`);if(typeof $done!=="undefined"){$done(value)}}}(scriptName,logLevel)}