Clash/script/startup/startup.js
2023-02-11 10:59:16 +08:00

215 lines
12 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const scriptName = "去除APP启动广告";
const $ = MagicJS(scriptName, "INFO");
(() => {
let response = null;
if ($.isResponse) {
switch (true) {
// 爱奇艺
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}`);
}
// 嘀嗒出行
case /^https?:\/\/capis(-?\w*)?\.didapinche\.com\/ad\/cx\/startup\?/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
if (obj.hasOwnProperty("startupPages") === true) {
obj.show_time = 1;
obj.full_screen = 0;
let startupPages = [];
obj.startupPages.forEach((element) => {
element["width"] = 1;
element["height"] = 1;
element["page_url"] = "#";
element["create_time"] = "20990101000000";
element["start_time"] = "20990101000000";
element["end_time"] = "20990101000000";
startupPages.push(element);
});
obj.startupPages = startupPages;
response = { body: JSON.stringify(obj) };
}
} catch (err) {
$.logger.error(`嘀嗒出行开屏去广告出现异常:${err}`);
}
break;
// 美团外卖
case /^https?:\/\/wmapi\.meituan\.com\/api\/v\d+\/loadInfo?/.test($.request.url):
try {
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 = [];
}
response = { body: JSON.stringify(obj) };
} catch (err) {
$.logger.error(`美团外卖开屏去广告出现异常:${err}`);
}
break;
// 小爱音箱
case /^https?:\/\/hd\.mina\.mi\.com\/splashscreen\/alert/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
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) {
$.logger.error(`小爱音箱开屏去广告出现异常:${err}`);
}
break;
// 京东
case /^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=start/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
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) {
$.logger.error(`京东开屏去广告出现异常:${err}`);
}
break;
// 联享家
case /^https?:\/\/mi\.gdt\.qq\.com\/gdt_mview.fcg/.test($.request.url):
try {
let obj = JSON.parse($.response.body);
obj.seq = "0";
obj.reqinterval = 0;
delete obj["last_ads"];
delete obj.data;
response = { body: JSON.stringify(obj) };
} catch (err) {
$.logger.error(`联享家开屏去广告出现异常:${err}`);
}
break;
// 多点
case /^https?:\/\/cmsapi\.dmall\.com\/app\/home\/homepageStartUpPic/.test($.request.url):
try {
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) {
$.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;
default:
$.logger.warning(`触发意外的请求处理请确认脚本或复写配置正常。URL:\n${$.request.url}`);
break;
}
} else {
$.logger.warning(`触发意外的请求处理请确认脚本或复写配置正常。URL:\n${$.request.url}`);
}
if (response) {
$.done(response);
} else {
$.done();
}
})();
// prettier-ignore
/**
*
* $$\ $$\ $$\ $$$$$\ $$$$$$\ $$$$$$\
* $$$\ $$$ | \__| \__$$ |$$ __$$\ $$ ___$$\
* $$$$\ $$$$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$ |$$ / \__| \_/ $$ |
* $$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____| $$ |\$$$$$$\ $$$$$ /
* $$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$\ $$ | \____$$\ \___$$\
* $$ |\$ /$$ |$$ __$$ |$$ | $$ |$$ |$$ | $$ | $$ |$$\ $$ | $$\ $$ |
* $$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\\$$$$$$ |\$$$$$$ | \$$$$$$ |
* \__| \__| \_______| \____$$ |\__| \_______|\______/ \______/ \______/
* $$\ $$ |
* \$$$$$$ |
* \______/
*
*/
// 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)}