From a96032319f48ef3b66d91c029630006acfb2510f Mon Sep 17 00:00:00 2001 From: king Date: Thu, 31 Jul 2025 18:52:19 +0800 Subject: [PATCH] update something --- Scripts/weibo/weibo_ads_android.js | 222 ----------------------------- Scripts/weibo/weibo_web_ads.js | 47 ++++++ 2 files changed, 47 insertions(+), 222 deletions(-) delete mode 100644 Scripts/weibo/weibo_ads_android.js create mode 100644 Scripts/weibo/weibo_web_ads.js diff --git a/Scripts/weibo/weibo_ads_android.js b/Scripts/weibo/weibo_ads_android.js deleted file mode 100644 index 625e4be0..00000000 --- a/Scripts/weibo/weibo_ads_android.js +++ /dev/null @@ -1,222 +0,0 @@ -/** - * author:fmz200 - * @function 微博去广告 - * date:2023-11-29 10:13:00 - */ - -// 在请求到达服务器之前,调用此函数,您可以在此处修改请求数据 -async function onRequest(context, request) { - console.log("请求URL=" + request.url); - //URL参数 - request.queries["reqParams"] = "value"; - //更新或添加新标头 - request.headers["X-New-Headers"] = "My-Value"; - delete request.headers["Key-Need-Delete"]; - - //Update Body 使用fetch API请求接口,具体文档可网上搜索fetch API - //request.body = await fetch('https://www.baidu.com/').then(response => response.text()); - - //共享参数 后面onResponse时取出 - context["request_url"] = request.url; - return request; -} - -// 在将响应数据发送到客户端之前,调用此函数,您可以在此处修改响应数据 -async function onResponse(context, request, response) { - const url1 = '/search/finder'; - const url2 = '/search/container_timeline'; // 发现页面 - const url3 = '/search/container_discover'; - const url4 = '/api.weibo.cn/2/page'; // 微博热搜页面url - const url5 = '/statuses/container_timeline_topicpage'; // 微博超话页面 - const url6 = '/statuses/extend'; // 微博详情页面广告 - const url7 = '/groups/allgroups/v2' // 微博首页Tab标签页 - - let index = 1; - - // 更新或添加新标头 - // response.headers["Name"] = context["name"]; - - // Update status Code - // response.statusCode = 500; - - let url = context["request_url"]; - let body = response.body; - console.log("响应URL=" + url); - let resp_data = JSON.parse(body); - try { - // 1、首次点击发现按钮 - if (url.includes(url1)) { - const payload = resp_data.channelInfo?.channels?.[0]?.payload; - console.log('进入发现页...'); - if (payload.items[1].data.itemid === "hot_search_push") { - index = 2; - } - - // 1.1、下标是1的为热搜模块 - payload.items[index].data.group = removeHotSearchAds(payload.items[index].data.group); - - // 1.2、下标为2的是轮播图模块 - console.log('移除轮播模块💕💕'); - payload.items[index + 1] = {}; - - // 1.3、下标为3的是热议模块 - console.log('移除finder_channel模块💕💕'); - if (payload.items[index + 2].data?.more_pic?.includes('ads')) { - delete payload.items[index + 2].data.more_pic; - } - payload.items[index + 2].data.group = removeFinderChannelAds(payload.items[index + 2].data.group); - - // 1.4、items[i].category = "feed" 是热门微博的部分 - payload.items = removeCategoryFeedAds(payload.items); - - // 1.5、背景图广告 - if (payload.loadedInfo?.headerBack) { - delete payload.loadedInfo.headerBack; - } - } - - // 2、发现页面刷新/再次点击发现按钮 - if (url.includes(url2) || url.includes(url3)) { - console.log('刷新发现页...'); - if (resp_data.items[1].data.itemid === "hot_search_push") { - index = 2; - } - - // 2.1、下标是1的为热搜模块 - resp_data.items[index].data.group = removeHotSearchAds(resp_data.items[index].data.group); - - // 2.2、下标为2的是轮播图模块 - console.log('移除轮播图模块🤣🤣'); - resp_data.items[index + 1] = {}; - - // 2.3、下标为3的是热议模块 - console.log('移除finder_channel模块💕💕'); - if (resp_data.items[index + 2].data?.more_pic?.includes('ads')) { - delete resp_data.items[index + 2].data.more_pic; - } - resp_data.items[index + 2].data.group = removeFinderChannelAds(resp_data.items[index + 2].data.group); - - // 2.4、items[i].category = "feed" 是热门微博的部分 - resp_data.items = removeCategoryFeedAds(resp_data.items); - - // 2.5、背景图广告 - if (resp_data.loadedInfo?.headerBack) { - delete resp_data.loadedInfo.headerBack; - } - } - - // 3、微博热搜页面刷新 - if (url.includes(url4) && resp_data.cards && resp_data.cards[0].card_group) { - console.log('微博热搜页面广告开始💕'); - resp_data.cards[0].card_group = resp_data.cards[0].card_group.filter(group => group.promotion == null); - console.log('微博热搜页面广告结束💕💕'); - } - - // 4、微博超话页面 - if (url.includes(url5) && resp_data.items) { - console.log('微博超话页面广告开始💕'); - resp_data.items = resp_data.items.filter(item => !item.data || item.data.mblogtypename !== "广告"); - console.log('微博超话页面广告结束💕💕'); - } - - // 5、微博超话页面 - if (url.includes(url6)) { - console.log('微博详情页面广告开始💕'); - resp_data.head_cards = []; - console.log('微博详情页面广告结束💕💕'); - } - - // 6、移除微博首页的多余tab页 - if (url.includes(url7)) { - resp_data.pageDatas = removePageDataAds(resp_data.pageDatas); - swapObjectsInArray(resp_data.pageDatas[0].categories[0].pageDatas, 0, 1); - } - console.log('没有广告数据🧧🧧'); - } catch (e) { - console.log('脚本运行出现错误,部分广告未去除⚠️'); - console.log('错误信息:' + e.message); - } - - response.body = JSON.stringify(resp_data); - return response; -} - -// 移除“微博热搜”的广告 -function removeHotSearchAds(groups) { - if (!groups) return; - console.log('移除发现页热搜广告开始💕'); - const newGroups = groups.filter(group => !(group.itemid?.includes("is_ad_pos") || group.promotion)); - console.log('移除发现页热搜广告结束💕💕'); - return newGroups; -} - -// 移除“微博热搜”下面的“热聊,本地等”的广告 -function removeFinderChannelAds(groups) { - if (!groups) return; - - const titleSubPicMap = { - '电影': 'https://simg.s.weibo.com/imgtool/20221207_dianying.png', - '热议': 'https://simg.s.weibo.com/20220402_hottopic-icon.png', - '影像年': 'https://simg.s.weibo.com/ads/1%2Fads_1692185628.png', - '本地': 'https://simg.s.weibo.com/20190123154142_tongcheng.png', - '亚运电竞': 'https://simg.s.weibo.com/ads/1%2Fads_1694765662.png', - '直播': 'https://simg.s.weibo.com/20210705_live0705.png', - '财经': 'https://simg.s.weibo.com/20190124150415_caijing.png', - '找人': 'https://simg.s.weibo.com/20190125144608_zhaoren.png', - '时尚': 'https://simg.s.weibo.com/imgtool/20220928_fashion.png', - '长文': 'https://simg.s.weibo.com/20220621_%E9%95%BF%E6%96%87%E5%8F%91%E7%8E%B0%E9%A1%B5icon%403x.png', - '赛事': 'https://simg.s.weibo.com/20201030_%E8%B5%9B%E4%BA%8B.png', - '教育': 'https://simg.s.weibo.com/20200303_edu0303.png', - '音乐': 'https://simg.s.weibo.com/imgtool/20221207_yinyue.png', - '房产': 'https://simg.s.weibo.com/20190129182003_house.png', - '小游戏': 'https://simg.s.weibo.com/20190118185226_youxi.png', - '美食': 'https://simg.s.weibo.com/imgtool/20221207_food.png', - '热聊': 'https://simg.s.weibo.com/20220402_reliao.png', - '新知': 'https://simg.s.weibo.com/20211105_xinzhi.png', - '微公益': 'https://simg.s.weibo.com/ads/1%2Fads_1689323535.png', - '大健康': 'https://simg.s.weibo.com/imgtool/20221116_health.png', - '活动': 'https://simg.s.weibo.com/20200915_huodong.png', - '母婴': 'https://simg.s.weibo.com/20210222_mombaby.png', - '珠宝玉石': 'https://simg.s.weibo.com/20210317_yushi.png', - '游戏中心': 'https://simg.s.weibo.com/ads/1%2Fads_1687759038.png' - }; - console.log('移除发现页finder_channel广告开始💕'); - const newGroups = []; - for (const group of groups) { - if (group.pic?.includes('ads')) { - group.pic = titleSubPicMap[group.title_sub] || "https://simg.s.weibo.com/20200915_huodong.png"; - } - newGroups.push(group); - } - console.log('移除发现页finder_channel广告结束💕💕'); - return newGroups; -} - -// 移除“热搜微博”信息流的广告 -function removeCategoryFeedAds(items) { - console.log('移除发现页热门微博广告开始💕'); - const newItems = items.filter(item => item.category !== "feed" || (item.data && item.data.mblogtypename !== "广告")); - console.log('移除发现页热门微博广告结束💕💕'); - return newItems; -} - -// 移除微博首页的多余tab页 -function removePageDataAds(items) { - console.log('移除微博首页的多余tab页开始💕'); - const newItems = items.filter(item => item.pageDataType !== "homeExtend"); - console.log('移除微博首页的多余tab页结束💕💕'); - return newItems; -} - -// 交换集合中两个对象的位置 -function swapObjectsInArray(array, index1, index2) { - console.log('交换tab页顺序开始💕'); - const temp = array[index1]; - array[index1] = array[index2]; - array[index2] = temp; - - array[index2].type = array[index1].type; - array[index2].apipath = "statuses/container_timeline_unread"; - delete array[index2].navigation_title; - console.log('交换tab页顺序结束💕💕'); -} diff --git a/Scripts/weibo/weibo_web_ads.js b/Scripts/weibo/weibo_web_ads.js new file mode 100644 index 00000000..967d7044 --- /dev/null +++ b/Scripts/weibo/weibo_web_ads.js @@ -0,0 +1,47 @@ +/** + * @author fmz200 + * @function 微博网页版广告 + * @date 2025-07-31 18:39:08 + */ + +let url = $request.url; +let body = $response.body; +let obj = JSON.parse(body); + +try { + startAction(); + console.log('广告数据处理完毕🧧🧧'); +} catch (e) { + console.log('脚本运行出现错误,部分广告未去除⚠️'); + console.log('错误信息:' + e.message); +} + +$done({body: JSON.stringify(obj)}); + +function startAction() { + // 微博热搜 + if (url.includes("/ajax/side/searchBand?")) { + console.log("处理热搜多余条目💕"); + if (url.includes("type=mine")) { // "我的"tab页 + if (obj.data?.realtime) { + console.log("删除'我的'多余热搜条目💕"); + obj.data.realtime = obj.data.realtime.filter(item => item.rank !== null); + } + } + if (url.includes("type=hot")) { // "热搜"tab页 + if (obj.data?.hotgov) { + console.log("删除'热搜'多余热搜条目1💕"); + delete obj.data.hotgov; + } + if (obj.data?.hotgovs) { + console.log("删除'热搜'多余热搜条目2💕"); + delete obj.data.hotgovs; + } + if (obj.data?.realtime) { + console.log("删除'热搜'多余热搜条目3💕"); + obj.data.realtime = obj.data.realtime.filter(item => item.is_ad !== 1); + } + } + } +} +