diff --git a/Rewrite/AdBlock/Weibo.adblock b/Rewrite/AdBlock/Weibo.adblock index 61c7a12..1e265a2 100644 --- a/Rewrite/AdBlock/Weibo.adblock +++ b/Rewrite/AdBlock/Weibo.adblock @@ -6,30 +6,33 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-02-25 +// @UpdateTime 2023-03-04 // @Attention 微博、微博国际版净化,现已二合一,使用中若有问题请发邮件! // @Function 让你更加愉悦的刷微博 // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V2.0.67 +// @Version V2.0.71 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Weibo.conf // ==/UserScript== + hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.weibo.cn, boot.biz.weibo.com # > 微博_请手动添加以下分流至本地@ddgksf2013 ; host, sdkapp.uve.weibo.com, direct +; host, boot.biz.weibo.com, reject + # > 微博_每日一次的开屏广告请求@ddgksf2013 -^https?:\/\/boot\.biz\.weibo\.com\/v1\/ad\/realtime url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/boot\.biz\.weibo\.com\/v1\/ad\/realtime url reject-200 # > 微博_视频信息处理@ddgksf2013 -^https?:\/\/api\.weibo\.cn\/\d\/video\/tiny_stream_mid_detail url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/api\.weibo\.cn\/\d\/video\/tiny_stream_mid_detail url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_去除底部超话栏表层浮icon及tips@ddgksf2013 ^https?:\/\/api\.weibo\.cn\/\d\/!\/huati\/discovery_home_bottom_getdotinfo url reject-dict # > 微博_屏蔽首页左上角每日的弹窗tips@ddgksf2013 ^https?:\/\/m?api\.weibo\.c(n|om)\/\d/push/daily url reject-dict # > 微博_屏蔽发现页面搜索框热词@ddgksf2013 -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/\w{5}\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/\w{5}\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_应用内弹窗广告@ddgksf2013 ^https?:\/\/(preload-click|preload-impression)\.uve\.weibo\.com\/(interface\/wbpullad\/wbpullad_click\.php|wbapplua\/get_wbpullad_log\.lua) url reject # > 微博_屏蔽sdkconfig请求@ddgksf2013 @@ -37,19 +40,19 @@ hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.we # > 微博_Spotlight@ddgksf2013 ^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/hot\/hours_spotlight url reject-dict # > 微博_自定义tab皮肤@zmqcherish -^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_非会员设置tab皮肤@zmqcherish -^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_去广告以及去除各部分推广模块@zmqcherish,@ddgksf2013 -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(searchall|page\?|messageflow) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(unread_)?friends(/|_)timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/groups/timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|unread_topic_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/profile/(me|container_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/video/(community_tab|remind_info|tiny_stream_video_list) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/search/(finder|container_timeline|container_discover) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(searchall|page\?|messageflow) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(unread_)?friends(/|_)timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/groups/timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|unread_topic_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/profile/(me|container_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/video/(community_tab|remind_info|tiny_stream_video_list) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/search/(finder|container_timeline|container_discover) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽hotsearch@ddgksf2013 ^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php\?a=hot_search_users url reject-dict # > 微博国际版_屏蔽热推荐@ddgksf2013 @@ -59,12 +62,12 @@ hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.we # > 微博国际版_屏蔽search_topic@shiro ^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=search_topic url echo-response text/html echo-response https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_search_topic.json # > 微博国际版_屏蔽开屏广告@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*get_coopen_ads url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*get_coopen_ads url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽sdkad@ddgksf2013 -^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_趋势顶部Card去广告@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=trends url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=trends url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽用户VIP栏@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=user_center url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=user_center url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_热搜处理@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=search_topic url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js \ No newline at end of file +^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=search_topic url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js \ No newline at end of file diff --git a/Rewrite/AdBlock/Weibo.conf b/Rewrite/AdBlock/Weibo.conf index 9481681..9623945 100644 --- a/Rewrite/AdBlock/Weibo.conf +++ b/Rewrite/AdBlock/Weibo.conf @@ -6,12 +6,12 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-02-25 +// @UpdateTime 2023-03-04 // @Attention 微博、微博国际版净化,现已二合一,使用中若有问题请发邮件! // @Function 让你更加愉悦的刷微博 // @Suitable 自行观看“# > ”注释内容 // @Attention 如需引用请注明出处,谢谢合作! -// @Version V2.0.67 +// @Version V2.0.71 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/Weibo.conf // ==/UserScript== @@ -77,25 +77,26 @@ # [+]2023-02-22 58、处理信息流中视频左上角的"红包派送中"Tag[code not added] # [+]2023-02-25 59、处理用户反馈的微博国际版‘微博会员’推广CARD # [+]2023-02-25 60、修改MITM写法,使小火箭工具能够MITM本重写的域名[后续新的重写配置也将注意此问题] - +# [+]2023-03-04 61、调整boot.biz.weibo.com屏蔽策略,缩短微博应用启动时间,提高用户使用体验[或在本地添加分流host,boot.biz.weibo.com,reject(Anti已包含)] hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.weibo.cn, boot.biz.weibo.com # > 微博_请手动添加以下分流至本地@ddgksf2013 ; host, sdkapp.uve.weibo.com, direct +; host, boot.biz.weibo.com, reject # > 微博_每日一次的开屏广告请求@ddgksf2013 -^https?:\/\/boot\.biz\.weibo\.com\/v1\/ad\/realtime url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/boot\.biz\.weibo\.com\/v1\/ad\/realtime url reject-200 # > 微博_视频信息处理@ddgksf2013 -^https?:\/\/api\.weibo\.cn\/\d\/video\/tiny_stream_mid_detail url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/api\.weibo\.cn\/\d\/video\/tiny_stream_mid_detail url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_去除底部超话栏表层浮icon及tips@ddgksf2013 ^https?:\/\/api\.weibo\.cn\/\d\/!\/huati\/discovery_home_bottom_getdotinfo url reject-dict # > 微博_屏蔽首页左上角每日的弹窗tips@ddgksf2013 ^https?:\/\/m?api\.weibo\.c(n|om)\/\d/push/daily url reject-dict # > 微博_屏蔽发现页面搜索框热词@ddgksf2013 -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/\w{5}\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/\w{5}\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_应用内弹窗广告@ddgksf2013 ^https?:\/\/(preload-click|preload-impression)\.uve\.weibo\.com\/(interface\/wbpullad\/wbpullad_click\.php|wbapplua\/get_wbpullad_log\.lua) url reject # > 微博_屏蔽sdkconfig请求@ddgksf2013 @@ -103,19 +104,19 @@ hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.we # > 微博_Spotlight@ddgksf2013 ^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/hot\/hours_spotlight url reject-dict # > 微博_自定义tab皮肤@zmqcherish -^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_非会员设置tab皮肤@zmqcherish -^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博_去广告以及去除各部分推广模块@zmqcherish,@ddgksf2013 -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(searchall|page\?|messageflow) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(unread_)?friends(/|_)timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/groups/timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|unread_topic_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/profile/(me|container_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/video/(community_tab|remind_info|tiny_stream_video_list) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/search/(finder|container_timeline|container_discover) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js -^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(searchall|page\?|messageflow) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(unread_)?friends(/|_)timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/groups/timeline url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|unread_topic_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/profile/(me|container_timeline) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/video/(community_tab|remind_info|tiny_stream_video_list) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/search/(finder|container_timeline|container_discover) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/(checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js +^https?:\/\/m?api\.weibo\.c(n|om)\/\d\/cardlist url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽hotsearch@ddgksf2013 ^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php\?a=hot_search_users url reject-dict # > 微博国际版_屏蔽热推荐@ddgksf2013 @@ -125,12 +126,12 @@ hostname = api.weibo.*, *.api.weibo.*, mapi.weibo.*, *.uve.weibo.com, new.vip.we # > 微博国际版_屏蔽search_topic@shiro ^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=search_topic url echo-response text/html echo-response https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_search_topic.json # > 微博国际版_屏蔽开屏广告@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*get_coopen_ads url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*get_coopen_ads url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽sdkad@ddgksf2013 -^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_趋势顶部Card去广告@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=trends url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.c(n|om)\/portal\.php.*feed&a=trends url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_屏蔽用户VIP栏@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=user_center url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js +^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=user_center url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js # > 微博国际版_热搜处理@ddgksf2013 -^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=search_topic url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo_json.js \ No newline at end of file +^https?:\/\/weibointl\.api\.weibo\.cn\/portal\.php\?a=search_topic url script-response-body https://cdn.jsdelivr.net/gh/sve1r/Rules-For-Quantumult-X@develop/Scripts/AdBlock/Weibo/weibo.min.js \ No newline at end of file diff --git a/Rules/Services/SNS/Weibo.list b/Rules/Services/SNS/Weibo.list index de4bd69..6c9001b 100644 --- a/Rules/Services/SNS/Weibo.list +++ b/Rules/Services/SNS/Weibo.list @@ -3,6 +3,9 @@ host-keyword,weibo,Weibo host-suffix,weibo.com,Weibo host-suffix,weibo.cn,Weibo +# > Weibo ADs +host,boot.biz.weibo.com,reject + # > Weibo Api host-suffix,api.weibo.cn,Weibo host-suffix,api.weibo.com,Weibo @@ -12,8 +15,8 @@ host-suffix,dns.weibo.cn,Weibo host-suffix,weibocdn.com,Weibo # > Weibo Client & SDK -host-suffix,wbapp.mobile.sina.cn,Reject -host-suffix,sdkapp.mobile.sina.cn,Reject +host-suffix,wbapp.mobile.sina.cn,reject +host-suffix,sdkapp.mobile.sina.cn,reject # > Weibo Img host-suffix,sinajs.cn,Weibo diff --git a/Scripts/AdBlock/Weibo/weibo.js b/Scripts/AdBlock/Weibo/weibo.js new file mode 100644 index 0000000..bc1e262 --- /dev/null +++ b/Scripts/AdBlock/Weibo/weibo.js @@ -0,0 +1,598 @@ +/*********************************************** +> 应用名称:墨鱼自用微博&微博国际版净化脚本 +> 脚本作者:@ddgksf2013, @Zmqcherish +> 微信账号:墨鱼手记 +> 更新时间:2022-02-25 +> 通知频道:https://t.me/ddgksf2021 +> 贡献投稿:https://t.me/ddgksf2013_bot +> 原作者库:https://github.com/zmqcherish +> 问题反馈:ddgksf2013@163.com +> 特别提醒:如需转载请注明出处,谢谢合作! +> 脚本声明:本脚本是在Zmqcherish原创基础上优化自用 +> 脚本声明:若有侵犯原作者权利,请邮箱联系删除 +***********************************************/ + +const version = "V2.0.101"; + +const mainConfig = { + isDebug: !1, + author: "ddgksf2013", + removeHomeVip: !0, + removeHomeCreatorTask: !0, + removeRelate: !0, + removeGood: !0, + removeFollow: !0, + modifyMenus: !0, + removeRelateItem: !1, + removeRecommendItem: !0, + removeRewardItem: !0, + removeLiveMedia: !0, + removeNextVideo: !1, + removePinedTrending: !0, + removeInterestFriendInTopic: !1, + removeInterestTopic: !1, + removeInterestUser: !0, + removeLvZhou: !0, + removeSearchWindow: !0, + profileSkin1: null, + profileSkin2: null, + tabIconVersion: 0, + tabIconPath: "", + }, + itemMenusConfig = { + creator_task: !1, + mblog_menus_custom: !1, + mblog_menus_video_later: !0, + mblog_menus_comment_manager: !0, + mblog_menus_avatar_widget: !1, + mblog_menus_card_bg: !1, + mblog_menus_long_picture: !0, + mblog_menus_delete: !0, + mblog_menus_edit: !0, + mblog_menus_edit_history: !0, + mblog_menus_edit_video: !0, + mblog_menus_sticking: !0, + mblog_menus_open_reward: !0, + mblog_menus_novelty: !1, + mblog_menus_favorite: !0, + mblog_menus_promote: !0, + mblog_menus_modify_visible: !0, + mblog_menus_copy_url: !0, + mblog_menus_follow: !0, + mblog_menus_video_feedback: !0, + mblog_menus_shield: !0, + mblog_menus_report: !0, + mblog_menus_apeal: !0, + mblog_menus_home: !0, + }, + modifyCardsUrls = ["/cardlist", "video/community_tab", "/searchall"], + modifyStatusesUrls = [ + "statuses/friends/timeline", + "statuses/unread_friends_timeline", + "statuses/unread_hot_timeline", + "groups/timeline", + "statuses/friends_timeline", + ], + otherUrls = { + "/profile/me": "removeHome", + "/statuses/extend": "itemExtendHandler", + "/video/remind_info": "removeVideoRemind", + "/checkin/show": "removeCheckin", + "/live/media_homelist": "removeMediaHomelist", + "/comments/build_comments": "removeComments", + "/container/get_item": "containerHandler", + "/profile/container_timeline": "userHandler", + "/video/tiny_stream_video_list": "nextVideoHandler", + "/2/statuses/video_mixtimeline": "nextVideoHandler", + "video/tiny_stream_mid_detail": "nextVideoHandler", + "/!/client/light_skin": "tabSkinHandler", + "/littleskin/preview": "skinPreviewHandler", + "/search/finder": "removeSearchMain", + "/search/container_timeline": "removeSearch", + "/search/container_discover": "removeSearch", + "/2/messageflow": "removeMsgAd", + "/2/page?": "removePage", + "/statuses/unread_topic_timeline": "topicHandler", + "square&pageDataType": "squareHandler", + "/statuses/container_timeline_topic": "removeMain", + "/statuses/container_timeline": "removeMainTab", + "wbapplua/wbpullad.lua": "removeLuaScreenAds", + "interface/sdk/sdkad.php": "removePhpScreenAds", + "ct=feed&a=trends": "removeTopics", + user_center: "modifiedUserCenter", + "a=get_coopen_ads": "removeIntlOpenAds", + "php?a=search_topic": "removeSearchTopic", + "v1/ad/realtime": "removeRealtimeAd", + }; +function getModifyMethod(e) { + for (let t of modifyCardsUrls) if (e.indexOf(t) > -1) return "removeCards"; + for (let o of modifyStatusesUrls) + if (e.indexOf(o) > -1) return "removeTimeLine"; + for (let [i, r] of Object.entries(otherUrls)) if (e.indexOf(i) > -1) return r; + return null; +} +function removeRealtimeAd(e) { + return delete e.ads, (e.code = 4016), e; +} +function removeIntlOpenAds(e) { + return ( + e.data && + 0 !== e.data.length && + ((e.data.ad_list = []), + (e.data.gdt_video_ad_ios = []), + (e.data.display_ad = 0), + (e.data.ad_ios_id = null), + (e.data.app_ad_ios_id = null), + (e.data.reserve_ad_ios_id = ""), + (e.data.reserve_app_ad_ios_id = ""), + (e.data.ad_duration = 604800), + (e.data.ad_cd_interval = 604800), + (e.data.pic_ad = [])), + e + ); +} +function removeSearchTopic(e) { + return ( + e.data && + 0 !== e.data.length && + (e.data = Object.values(e.data).filter((e) => "searchtop" != e.type)), + e + ); +} +function modifiedUserCenter(e) { + return ( + e.data && + 0 !== e.data.length && + e.data.cards && + (e.data.cards = Object.values(e.data.cards).filter( + (e) => "personal_vip" != e.items[0].type + )), + e + ); +} +function removeTopics(e) { + return e.data && (e.data.order = ["search_topic", "native_content"]), e; +} +function isAd(e) { + return ( + !!e && + ("广告" == e.mblogtypename || + "热推" == e.mblogtypename || + e.promotion?.type == "ad" || + e.page_info?.actionlog?.source == "ad" || + e.content_auth_info?.content_auth_title == "广告") + ); +} +function squareHandler(e) { + return e.items, e; +} +function removeMainTab(e) { + if ( + (e.loadedInfo && e.loadedInfo.headers && delete e.loadedInfo.headers, + !e.items) + ) + return e; + let t = []; + for (let o of e.items) + isAd(o.data) || + (o.data?.common_struct && delete o.data.common_struct, + o.category + ? "group" != o.category + ? t.push(o) + : -1 != JSON.stringify(o.items).indexOf("profile_top") && t.push(o) + : t.push(o)); + return (e.items = t), log("removeMainTab success"), e; +} +function removeMain(e) { + if ( + (e.loadedInfo && e.loadedInfo.headers && delete e.loadedInfo.headers, + !e.items) + ) + return e; + let t = []; + for (let o of e.items) + if ("feed" == o.category) isAd(o.data) || t.push(o); + else if ("group" == o.category) { + if ( + o.items.length > 0 && + o.items[0].data?.itemid?.includes("search_input") + ) + (o.items = o.items.filter( + (e) => + e?.data?.itemid?.includes("mine_topics") || + e?.data?.itemid?.includes("search_input") + )), + (o.items[0].data.hotwords = [{ word: "搜索超话", tip: "" }]), + t.push(o); + else { + if ( + o.items.length > 0 && + o.items[0].data?.itemid?.includes("top_title") + ) + continue; + o.items.length > 0 + ? (o.items = Object.values(o.items).filter( + (e) => "feed" == e.category + )) + : t.push(o); + } + } else -1 == [202, 200].indexOf(o.data.card_type) && t.push(o); + return (e.items = t), log("removeMain success"), e; +} +function topicHandler(e) { + let t = e.cards; + if (!t || (!mainConfig.removeUnfollowTopic && !mainConfig.removeUnusedPart)) + return e; + let o = []; + for (let i of t) { + let r = !0; + if (i.mblog) { + let n = i.mblog.buttons; + mainConfig.removeUnfollowTopic && n && "follow" == n[0].type && (r = !1); + } else { + if (!mainConfig.removeUnusedPart) continue; + if ("bottom_mix_activity" == i.itemid) r = !1; + else if (i?.top?.title == "正在活跃") r = !1; + else if (200 == i.card_type && i.group) r = !1; + else { + let a = i.card_group; + if (!a) continue; + if ( + [ + "guess_like_title", + "cats_top_title", + "chaohua_home_readpost_samecity_title", + ].indexOf(a[0].itemid) > -1 + ) + r = !1; + else if (a.length > 1) { + let d = []; + for (let s of a) + -1 == + ["chaohua_discovery_banner_1", "bottom_mix_activity"].indexOf( + s.itemid + ) && d.push(s); + i.card_group = d; + } + } + } + r && o.push(i); + } + return (e.cards = o), log("topicHandler success"), e; +} +function removeSearchMain(e) { + let t = e.channelInfo.channels; + if (!t) return e; + let o = []; + for (let i of t) i.payload && (removeSearch(i.payload), o.push(i)); + return (e.channelInfo.channels = o), log("remove_search main success"), e; +} +function checkSearchWindow(e) { + return ( + !!mainConfig.removeSearchWindow && + "card" == e.category && + (e.data?.itemid == "finder_window" || + e.data?.itemid == "more_frame" || + e.data?.card_type == 208 || + e.data?.card_type == 217 || + e.data?.card_type == 101 || + e.data?.card_type == 19 || + e.data?.mblog?.page_info?.actionlog?.source?.includes("ad")) + ); +} +function removeSearch(e) { + if (!e.items) return e; + let t = []; + for (let o of e.items) + if ("feed" == o.category) isAd(o.data) || t.push(o); + else { + if ("group" == o.category) continue; + checkSearchWindow(o) || t.push(o); + } + return ( + (e.items = t), + e.loadedInfo && + ((e.loadedInfo.searchBarContent = []), + e.loadedInfo.headerBack && + (e.loadedInfo.headerBack.channelStyleMap = {})), + log("remove_search success"), + e + ); +} +function removeMsgAd(e) { + if (!e.messages) return; + let t = []; + for (let o of e.messages) !o.msg_card?.ad_tag && t.push(o); + return (e.messages = t), e; +} +function removePage(e) { + return ( + removeCards(e), + mainConfig.removePinedTrending && + e.cards && + e.cards.length > 0 && + e.cards[0].card_group && + (e.cards[0].card_group = e.cards[0].card_group.filter( + (e) => + !( + e?.actionlog?.ext?.includes("ads_word") || + e?.itemid?.includes("t:51") || + e?.itemid?.includes("ads_word") + ) + )), + e + ); +} +function removeCards(e) { + if ((e.hotwords && (e.hotwords = []), !e.cards)) return; + let t = []; + for (let o of e.cards) { + if (17 == o.card_type || 58 == o.card_type) continue; + let i = o.card_group; + if (i && i.length > 0) { + let r = []; + for (let n of i) + 118 == n.card_type || + isAd(n.mblog) || + -1 != JSON.stringify(n).indexOf("res_from:ads") || + r.push(n); + (o.card_group = r), t.push(o); + } else { + let a = o.card_type; + if ([9, 165].indexOf(a) > -1) isAd(o.mblog) || t.push(o); + else { + if ([1007, 180].indexOf(a) > -1) continue; + t.push(o); + } + } + } + e.cards = t; +} +function lvZhouHandler(e) { + if (!mainConfig.removeLvZhou || !e) return; + let t = e.common_struct; + if (!t) return; + let o = []; + for (let i of t) "绿洲" != i.name && o.push(i); + e.common_struct = o; +} +function isBlock(e) { + let t = mainConfig.blockIds || []; + if (0 === t.length) return !1; + let o = e.user.id; + for (let i of t) if (i == o) return !0; + return !1; +} +function removeTimeLine(e) { + for (let t of ["ad", "advertises", "trends", "headers"]) e[t] && delete e[t]; + if (!e.statuses) return; + let o = []; + for (let i of e.statuses) + isAd(i) || + (lvZhouHandler(i), + i.common_struct && delete i.common_struct, + i.category ? "group" != i.category && o.push(i) : o.push(i)); + e.statuses = o; +} +function removeHomeVip(e) { + return e.header && e.header.vipView && (e.header.vipView = null), e; +} +function removeVideoRemind(e) { + (e.bubble_dismiss_time = 0), + (e.exist_remind = !1), + (e.image_dismiss_time = 0), + (e.image = ""), + (e.tag_image_english = ""), + (e.tag_image_english_dark = ""), + (e.tag_image_normal = ""), + (e.tag_image_normal_dark = ""); +} +function itemExtendHandler(e) { + if ( + (mainConfig.removeRelate || mainConfig.removeGood) && + e.trend && + e.trend.titles + ) { + let t = e.trend.titles.title; + mainConfig.removeRelate && "相关推荐" === t + ? delete e.trend + : mainConfig.removeGood && "博主好物种草" === t && delete e.trend; + } + mainConfig.removeFollow && e.follow_data && (e.follow_data = null), + mainConfig.removeRewardItem && e.reward_info && (e.reward_info = null), + e.page_alerts && (e.page_alerts = null); + try { + e.trend.extra_struct.extBtnInfo.btn_picurl.indexOf( + "timeline_icon_ad_delete" + ) > -1 && delete e.trend; + } catch (o) {} + if (mainConfig.modifyMenus && e.custom_action_list) { + let i = []; + for (let r of e.custom_action_list) { + let n = r.type, + a = itemMenusConfig[n]; + void 0 === a + ? i.push(r) + : "mblog_menus_copy_url" === n + ? i.unshift(r) + : a && i.push(r); + } + e.custom_action_list = i; + } +} +function updateFollowOrder(e) { + try { + for (let t of e.items) + if ("mainnums_friends" === t.itemId) { + let o = t.click.modules[0].scheme; + (t.click.modules[0].scheme = o.replace( + "231093_-_selfrecomm", + "231093_-_selffollowed" + )), + log("updateFollowOrder success"); + return; + } + } catch (i) { + console.log("updateFollowOrder fail"); + } +} +function updateProfileSkin(e, t) { + try { + let o = mainConfig[t]; + if (!o) return; + let i = 0; + for (let r of e.items) + if (r.image) + try { + (dm = r.image.style.darkMode), + "alpha" != dm && (r.image.style.darkMode = "alpha"), + (r.image.iconUrl = o[i++]), + r.dot && (r.dot = []); + } catch (n) {} + log("updateProfileSkin success"); + } catch (a) { + console.log("updateProfileSkin fail"); + } +} +function removeHome(e) { + if (!e.items) return e; + let t = []; + for (let o of e.items) { + let i = o.itemId; + if ("profileme_mine" == i) + mainConfig.removeHomeVip && (o = removeHomeVip(o)), + o.header?.vipIcon && delete o.header.vipIcon, + updateFollowOrder(o), + t.push(o); + else if ("100505_-_top8" == i) + updateProfileSkin(o, "profileSkin1"), t.push(o); + else if ("100505_-_newcreator" == i) + "grid" == o.type + ? (updateProfileSkin(o, "profileSkin2"), t.push(o)) + : mainConfig.removeHomeCreatorTask || t.push(o); + else { + if ( + "100505_-_chaohua" != i && + "100505_-_manage" != i && + "100505_-_recentlyuser" != i + ) + continue; + o.images?.length > 0 && + (o.images = o.images.filter( + (e) => + "100505_-_chaohua" == e.itemId || + "100505_-_recentlyuser" == e.itemId + )), + t.push(o); + } + } + return (e.items = t), e; +} +function removeCheckin(e) { + log("remove tab1签到"), (e.show = 0); +} +function removeMediaHomelist(e) { + mainConfig.removeLiveMedia && (log("remove 首页直播"), (e.data = {})); +} +function removeComments(e) { + let t = ["广告", "廣告", "相关内容", "推荐", "热推", "推薦"], + o = e.datas || []; + if (0 === o.length) return; + let i = []; + for (let r of o) { + let n = r.adType || ""; + -1 == t.indexOf(n) && 6 != r.type && i.push(r); + } + log("remove 评论区相关和推荐内容"), (e.datas = i); +} +function containerHandler(e) { + mainConfig.removeInterestFriendInTopic && + "超话里的好友" === e.card_type_name && + (log("remove 超话里的好友"), (e.card_group = [])), + mainConfig.removeInterestTopic && + e.itemid && + (e.itemid.indexOf("infeed_may_interest_in") > -1 + ? (log("remove 感兴趣的超话"), (e.card_group = [])) + : e.itemid.indexOf("infeed_friends_recommend") > -1 && + (log("remove 超话好友关注"), (e.card_group = []))); +} +function userHandler(e) { + if (((e = removeMainTab(e)), !mainConfig.removeInterestUser || !e.items)) + return e; + let t = []; + for (let o of e.items) { + let i = !0; + if ("group" == o.category) + try { + "可能感兴趣的人" == o.items[0].data.desc && (i = !1); + } catch (r) {} + i && (o.data?.common_struct && delete o.data.common_struct, t.push(o)); + } + return (e.items = t), log("removeMain sub success"), e; +} +function nextVideoHandler(e) { + if (!e.statuses) return e; + let t = []; + for (let o of e.statuses) + if (!isAd(o)) { + let i = ["forward_redpacket_info", "shopping", "float_info", "tags"]; + for (let r of i) o.video_info?.[r] && delete o.video_info[r]; + t.push(o); + } + return (e.statuses = t), log("removeMainTab Success"), e; +} +function tabSkinHandler(e) { + try { + let t = mainConfig.tabIconVersion; + if (((e.data.canUse = 1), !t || !mainConfig.tabIconPath || t < 100)) return; + let o = e.data.list; + for (let i of o) (i.version = t), (i.downloadlink = mainConfig.tabIconPath); + log("tabSkinHandler success"); + } catch (r) { + log("tabSkinHandler fail"); + } +} +function skinPreviewHandler(e) { + e.data.skin_info.status = 1; +} +function removeLuaScreenAds(e) { + if (!e.cached_ad) return e; + for (let t of e.cached_ad.ads) + (t.start_date = 1893254400), + (t.show_count = 0), + (t.duration = 0), + (t.end_date = 1893340799); + return e; +} +function removePhpScreenAds(e) { + if (!e.ads) return e; + for (let t of ((e.show_push_splash_ad = !1), + (e.background_delay_display_time = 0), + (e.lastAdShow_delay_display_time = 0), + (e.realtime_ad_video_stall_time = 0), + (e.realtime_ad_timeout_duration = 0), + e.ads)) + (t.displaytime = 0), + (t.displayintervel = 86400), + (t.allowdaydisplaynum = 0), + (t.displaynum = 0), + (t.displaytime = 1), + (t.begintime = "2029-12-30 00:00:00"), + (t.endtime = "2029-12-30 23:59:59"); + return e; +} +function log(e) { + mainConfig.isDebug && console.log(e); +} +var body = $response.body, + url = $request.url; +let method = getModifyMethod(url); +if (method) { + log(method); + var func = eval(method); + let data = JSON.parse(body.match(/\{.*\}/)[0]); + new func(data), + (body = JSON.stringify(data)), + "removePhpScreenAds" == method && (body = JSON.stringify(data) + "OK"); +} +$done({ body }); diff --git a/Scripts/AdBlock/Weibo/weibo.min.js b/Scripts/AdBlock/Weibo/weibo.min.js new file mode 100644 index 0000000..d86bbf9 --- /dev/null +++ b/Scripts/AdBlock/Weibo/weibo.min.js @@ -0,0 +1,4 @@ +const version = 'V2.0.101'; + + +const mainConfig={isDebug:!1,author:"ddgksf2013",removeHomeVip:!0,removeHomeCreatorTask:!0,removeRelate:!0,removeGood:!0,removeFollow:!0,modifyMenus:!0,removeRelateItem:!1,removeRecommendItem:!0,removeRewardItem:!0,removeLiveMedia:!0,removeNextVideo:!1,removePinedTrending:!0,removeInterestFriendInTopic:!1,removeInterestTopic:!1,removeInterestUser:!0,removeLvZhou:!0,removeSearchWindow:!0,profileSkin1:null,profileSkin2:null,tabIconVersion:0,tabIconPath:""},itemMenusConfig={creator_task:!1,mblog_menus_custom:!1,mblog_menus_video_later:!0,mblog_menus_comment_manager:!0,mblog_menus_avatar_widget:!1,mblog_menus_card_bg:!1,mblog_menus_long_picture:!0,mblog_menus_delete:!0,mblog_menus_edit:!0,mblog_menus_edit_history:!0,mblog_menus_edit_video:!0,mblog_menus_sticking:!0,mblog_menus_open_reward:!0,mblog_menus_novelty:!1,mblog_menus_favorite:!0,mblog_menus_promote:!0,mblog_menus_modify_visible:!0,mblog_menus_copy_url:!0,mblog_menus_follow:!0,mblog_menus_video_feedback:!0,mblog_menus_shield:!0,mblog_menus_report:!0,mblog_menus_apeal:!0,mblog_menus_home:!0},modifyCardsUrls=["/cardlist","video/community_tab","/searchall"],modifyStatusesUrls=["statuses/friends/timeline","statuses/unread_friends_timeline","statuses/unread_hot_timeline","groups/timeline","statuses/friends_timeline"],otherUrls={"/profile/me":"removeHome","/statuses/extend":"itemExtendHandler","/video/remind_info":"removeVideoRemind","/checkin/show":"removeCheckin","/live/media_homelist":"removeMediaHomelist","/comments/build_comments":"removeComments","/container/get_item":"containerHandler","/profile/container_timeline":"userHandler","/video/tiny_stream_video_list":"nextVideoHandler","/2/statuses/video_mixtimeline":"nextVideoHandler","video/tiny_stream_mid_detail":"nextVideoHandler","/!/client/light_skin":"tabSkinHandler","/littleskin/preview":"skinPreviewHandler","/search/finder":"removeSearchMain","/search/container_timeline":"removeSearch","/search/container_discover":"removeSearch","/2/messageflow":"removeMsgAd","/2/page?":"removePage","/statuses/unread_topic_timeline":"topicHandler","square&pageDataType":"squareHandler","/statuses/container_timeline_topic":"removeMain","/statuses/container_timeline":"removeMainTab","wbapplua/wbpullad.lua":"removeLuaScreenAds","interface/sdk/sdkad.php":"removePhpScreenAds","ct=feed&a=trends":"removeTopics",user_center:"modifiedUserCenter","a=get_coopen_ads":"removeIntlOpenAds","php?a=search_topic":"removeSearchTopic","v1/ad/realtime":"removeRealtimeAd"};function getModifyMethod(e){for(let t of modifyCardsUrls)if(e.indexOf(t)>-1)return"removeCards";for(let o of modifyStatusesUrls)if(e.indexOf(o)>-1)return"removeTimeLine";for(let[i,r]of Object.entries(otherUrls))if(e.indexOf(i)>-1)return r;return null}function removeRealtimeAd(e){return delete e.ads,e.code=4016,e}function removeIntlOpenAds(e){return e.data&&0!==e.data.length&&(e.data.ad_list=[],e.data.gdt_video_ad_ios=[],e.data.display_ad=0,e.data.ad_ios_id=null,e.data.app_ad_ios_id=null,e.data.reserve_ad_ios_id="",e.data.reserve_app_ad_ios_id="",e.data.ad_duration=604800,e.data.ad_cd_interval=604800,e.data.pic_ad=[]),e}function removeSearchTopic(e){return e.data&&0!==e.data.length&&(e.data=Object.values(e.data).filter(e=>"searchtop"!=e.type)),e}function modifiedUserCenter(e){return e.data&&0!==e.data.length&&e.data.cards&&(e.data.cards=Object.values(e.data.cards).filter(e=>"personal_vip"!=e.items[0].type)),e}function removeTopics(e){return e.data&&(e.data.order=["search_topic","native_content"]),e}function isAd(e){return!!e&&("广告"==e.mblogtypename||"热推"==e.mblogtypename||e.promotion?.type=="ad"||e.page_info?.actionlog?.source=="ad"||e.content_auth_info?.content_auth_title=="广告")}function squareHandler(e){return e.items,e}function removeMainTab(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)isAd(o.data)||(o.data?.common_struct&&delete o.data.common_struct,o.category?"group"!=o.category?t.push(o):-1!=JSON.stringify(o.items).indexOf("profile_top")&&t.push(o):t.push(o));return e.items=t,log("removeMainTab success"),e}function removeMain(e){if(e.loadedInfo&&e.loadedInfo.headers&&delete e.loadedInfo.headers,!e.items)return e;let t=[];for(let o of e.items)if("feed"==o.category)isAd(o.data)||t.push(o);else if("group"==o.category){if(o.items.length>0&&o.items[0].data?.itemid?.includes("search_input"))o.items=o.items.filter(e=>e?.data?.itemid?.includes("mine_topics")||e?.data?.itemid?.includes("search_input")),o.items[0].data.hotwords=[{word:"搜索超话",tip:""}],t.push(o);else{if(o.items.length>0&&o.items[0].data?.itemid?.includes("top_title"))continue;o.items.length>0?o.items=Object.values(o.items).filter(e=>"feed"==e.category):t.push(o)}}else -1==[202,200].indexOf(o.data.card_type)&&t.push(o);return e.items=t,log("removeMain success"),e}function topicHandler(e){let t=e.cards;if(!t||!mainConfig.removeUnfollowTopic&&!mainConfig.removeUnusedPart)return e;let o=[];for(let i of t){let r=!0;if(i.mblog){let n=i.mblog.buttons;mainConfig.removeUnfollowTopic&&n&&"follow"==n[0].type&&(r=!1)}else{if(!mainConfig.removeUnusedPart)continue;if("bottom_mix_activity"==i.itemid)r=!1;else if(i?.top?.title=="正在活跃")r=!1;else if(200==i.card_type&&i.group)r=!1;else{let a=i.card_group;if(!a)continue;if(["guess_like_title","cats_top_title","chaohua_home_readpost_samecity_title"].indexOf(a[0].itemid)>-1)r=!1;else if(a.length>1){let d=[];for(let s of a)-1==["chaohua_discovery_banner_1","bottom_mix_activity"].indexOf(s.itemid)&&d.push(s);i.card_group=d}}}r&&o.push(i)}return e.cards=o,log("topicHandler success"),e}function removeSearchMain(e){let t=e.channelInfo.channels;if(!t)return e;let o=[];for(let i of t)i.payload&&(removeSearch(i.payload),o.push(i));return e.channelInfo.channels=o,log("remove_search main success"),e}function checkSearchWindow(e){return!!mainConfig.removeSearchWindow&&"card"==e.category&&(e.data?.itemid=="finder_window"||e.data?.itemid=="more_frame"||e.data?.card_type==208||e.data?.card_type==217||e.data?.card_type==101||e.data?.card_type==19||e.data?.mblog?.page_info?.actionlog?.source?.includes("ad"))}function removeSearch(e){if(!e.items)return e;let t=[];for(let o of e.items)if("feed"==o.category)isAd(o.data)||t.push(o);else{if("group"==o.category)continue;checkSearchWindow(o)||t.push(o)}return e.items=t,e.loadedInfo&&(e.loadedInfo.searchBarContent=[],e.loadedInfo.headerBack&&(e.loadedInfo.headerBack.channelStyleMap={})),log("remove_search success"),e}function removeMsgAd(e){if(!e.messages)return;let t=[];for(let o of e.messages)!o.msg_card?.ad_tag&&t.push(o);return e.messages=t,e}function removePage(e){return removeCards(e),mainConfig.removePinedTrending&&e.cards&&e.cards.length>0&&e.cards[0].card_group&&(e.cards[0].card_group=e.cards[0].card_group.filter(e=>!(e?.actionlog?.ext?.includes("ads_word")||e?.itemid?.includes("t:51")||e?.itemid?.includes("ads_word")))),e}function removeCards(e){if(e.hotwords&&(e.hotwords=[]),!e.cards)return;let t=[];for(let o of e.cards){if(17==o.card_type||58==o.card_type)continue;let i=o.card_group;if(i&&i.length>0){let r=[];for(let n of i)118==n.card_type||isAd(n.mblog)||-1!=JSON.stringify(n).indexOf("res_from:ads")||r.push(n);o.card_group=r,t.push(o)}else{let a=o.card_type;if([9,165].indexOf(a)>-1)isAd(o.mblog)||t.push(o);else{if([1007,180].indexOf(a)>-1)continue;t.push(o)}}}e.cards=t}function lvZhouHandler(e){if(!mainConfig.removeLvZhou||!e)return;let t=e.common_struct;if(!t)return;let o=[];for(let i of t)"绿洲"!=i.name&&o.push(i);e.common_struct=o}function isBlock(e){let t=mainConfig.blockIds||[];if(0===t.length)return!1;let o=e.user.id;for(let i of t)if(i==o)return!0;return!1}function removeTimeLine(e){for(let t of["ad","advertises","trends","headers"])e[t]&&delete e[t];if(!e.statuses)return;let o=[];for(let i of e.statuses)isAd(i)||(lvZhouHandler(i),i.common_struct&&delete i.common_struct,i.category?"group"!=i.category&&o.push(i):o.push(i));e.statuses=o}function removeHomeVip(e){return e.header&&e.header.vipView&&(e.header.vipView=null),e}function removeVideoRemind(e){e.bubble_dismiss_time=0,e.exist_remind=!1,e.image_dismiss_time=0,e.image="",e.tag_image_english="",e.tag_image_english_dark="",e.tag_image_normal="",e.tag_image_normal_dark=""}function itemExtendHandler(e){if((mainConfig.removeRelate||mainConfig.removeGood)&&e.trend&&e.trend.titles){let t=e.trend.titles.title;mainConfig.removeRelate&&"相关推荐"===t?delete e.trend:mainConfig.removeGood&&"博主好物种草"===t&&delete e.trend}mainConfig.removeFollow&&e.follow_data&&(e.follow_data=null),mainConfig.removeRewardItem&&e.reward_info&&(e.reward_info=null),e.page_alerts&&(e.page_alerts=null);try{e.trend.extra_struct.extBtnInfo.btn_picurl.indexOf("timeline_icon_ad_delete")>-1&&delete e.trend}catch(o){}if(mainConfig.modifyMenus&&e.custom_action_list){let i=[];for(let r of e.custom_action_list){let n=r.type,a=itemMenusConfig[n];void 0===a?i.push(r):"mblog_menus_copy_url"===n?i.unshift(r):a&&i.push(r)}e.custom_action_list=i}}function updateFollowOrder(e){try{for(let t of e.items)if("mainnums_friends"===t.itemId){let o=t.click.modules[0].scheme;t.click.modules[0].scheme=o.replace("231093_-_selfrecomm","231093_-_selffollowed"),log("updateFollowOrder success");return}}catch(i){console.log("updateFollowOrder fail")}}function updateProfileSkin(e,t){try{let o=mainConfig[t];if(!o)return;let i=0;for(let r of e.items)if(r.image)try{dm=r.image.style.darkMode,"alpha"!=dm&&(r.image.style.darkMode="alpha"),r.image.iconUrl=o[i++],r.dot&&(r.dot=[])}catch(n){}log("updateProfileSkin success")}catch(a){console.log("updateProfileSkin fail")}}function removeHome(e){if(!e.items)return e;let t=[];for(let o of e.items){let i=o.itemId;if("profileme_mine"==i)mainConfig.removeHomeVip&&(o=removeHomeVip(o)),o.header?.vipIcon&&delete o.header.vipIcon,updateFollowOrder(o),t.push(o);else if("100505_-_top8"==i)updateProfileSkin(o,"profileSkin1"),t.push(o);else if("100505_-_newcreator"==i)"grid"==o.type?(updateProfileSkin(o,"profileSkin2"),t.push(o)):mainConfig.removeHomeCreatorTask||t.push(o);else{if("100505_-_chaohua"!=i&&"100505_-_manage"!=i&&"100505_-_recentlyuser"!=i)continue;o.images?.length>0&&(o.images=o.images.filter(e=>"100505_-_chaohua"==e.itemId||"100505_-_recentlyuser"==e.itemId)),t.push(o)}}return e.items=t,e}function removeCheckin(e){log("remove tab1签到"),e.show=0}function removeMediaHomelist(e){mainConfig.removeLiveMedia&&(log("remove 首页直播"),e.data={})}function removeComments(e){let t=["广告","廣告","相关内容","推荐","热推","推薦"],o=e.datas||[];if(0===o.length)return;let i=[];for(let r of o){let n=r.adType||"";-1==t.indexOf(n)&&6!=r.type&&i.push(r)}log("remove 评论区相关和推荐内容"),e.datas=i}function containerHandler(e){mainConfig.removeInterestFriendInTopic&&"超话里的好友"===e.card_type_name&&(log("remove 超话里的好友"),e.card_group=[]),mainConfig.removeInterestTopic&&e.itemid&&(e.itemid.indexOf("infeed_may_interest_in")>-1?(log("remove 感兴趣的超话"),e.card_group=[]):e.itemid.indexOf("infeed_friends_recommend")>-1&&(log("remove 超话好友关注"),e.card_group=[]))}function userHandler(e){if(e=removeMainTab(e),!mainConfig.removeInterestUser||!e.items)return e;let t=[];for(let o of e.items){let i=!0;if("group"==o.category)try{"可能感兴趣的人"==o.items[0].data.desc&&(i=!1)}catch(r){}i&&(o.data?.common_struct&&delete o.data.common_struct,t.push(o))}return e.items=t,log("removeMain sub success"),e}function nextVideoHandler(e){if(!e.statuses)return e;let t=[];for(let o of e.statuses)if(!isAd(o)){let i=["forward_redpacket_info","shopping","float_info","tags"];for(let r of i)o.video_info?.[r]&&delete o.video_info[r];t.push(o)}return e.statuses=t,log("removeMainTab Success"),e}function tabSkinHandler(e){try{let t=mainConfig.tabIconVersion;if(e.data.canUse=1,!t||!mainConfig.tabIconPath||t<100)return;let o=e.data.list;for(let i of o)i.version=t,i.downloadlink=mainConfig.tabIconPath;log("tabSkinHandler success")}catch(r){log("tabSkinHandler fail")}}function skinPreviewHandler(e){e.data.skin_info.status=1}function removeLuaScreenAds(e){if(!e.cached_ad)return e;for(let t of e.cached_ad.ads)t.start_date=1893254400,t.show_count=0,t.duration=0,t.end_date=1893340799;return e}function removePhpScreenAds(e){if(!e.ads)return e;for(let t of(e.show_push_splash_ad=!1,e.background_delay_display_time=0,e.lastAdShow_delay_display_time=0,e.realtime_ad_video_stall_time=0,e.realtime_ad_timeout_duration=0,e.ads))t.displaytime=0,t.displayintervel=86400,t.allowdaydisplaynum=0,t.displaynum=0,t.displaytime=1,t.begintime="2029-12-30 00:00:00",t.endtime="2029-12-30 23:59:59";return e}function log(e){mainConfig.isDebug&&console.log(e)}var body=$response.body,url=$request.url;let method=getModifyMethod(url);if(method){log(method);var func=eval(method);let data=JSON.parse(body.match(/\{.*\}/)[0]);new func(data),body=JSON.stringify(data),"removePhpScreenAds"==method&&(body=JSON.stringify(data)+"OK")}$done({body}); \ No newline at end of file diff --git a/Scripts/AdBlock/Weibo/weibo_ad_ycc.js b/Scripts/AdBlock/Weibo/weibo_ad_ycc.js deleted file mode 100644 index 4f688c2..0000000 --- a/Scripts/AdBlock/Weibo/weibo_ad_ycc.js +++ /dev/null @@ -1,218 +0,0 @@ -/* -README:https://github.com/yichahucha/surge/tree/master - */ - -const path1 = "/groups/timeline"; -const path2 = "/statuses/unread"; -const path3 = "/statuses/extend"; -const path4 = "/comments/build_comments"; -const path5 = "/photo/recommend_list"; -const path6 = "/stories/video_stream"; -const path7 = "/statuses/positives/get"; -const path8 = "/stories/home_list"; -const path9 = "/profile/statuses"; -const path10 = "/statuses/friends/timeline"; -const path11 = "/service/picfeed"; -const path12 = "/fangle/timeline"; -const path13 = "/searchall"; -const path14 = "/cardlist"; -const path15 = "/statuses/video_timeline"; -const path16 = "/page"; -const path17 = "/statuses/friends_timeline"; -const path18 = "/!/photos/pic_recommend_status"; -const path19 = "/statuses/video_mixtimeline"; -const path20 = "/video/tiny_stream_video_list"; -const path21 = "/photo/info"; -const path22 = "/live/media_homelist"; -const path23 = "/remind/unread_count"; - -const url = $request.url; -let body = $response.body; - -if ( - url.indexOf(path1) !== -1 || - url.indexOf(path2) !== -1 || - url.indexOf(path10) !== -1 || - url.indexOf(path15) !== -1 || - url.indexOf(path17) !== -1 || - url.indexOf(path20) !== -1 -) { - let obj = JSON.parse(body); - if (obj.statuses) obj.statuses = filter_timeline_statuses(obj.statuses); - if (obj.advertises) obj.advertises = []; - if (obj.ad) obj.ad = []; - if (obj.num) obj.num = obj.original_num; - if (obj.trends) obj.trends = []; - body = JSON.stringify(obj); -} else if (url.indexOf(path3) !== -1) { - let obj = JSON.parse(body); - if (obj.trend) delete obj.trend; - body = JSON.stringify(obj); -} else if (url.indexOf(path4) !== -1) { - let obj = JSON.parse(body); - obj.recommend_max_id = 0; - if (obj.status) { - if (obj.top_hot_structs) { - obj.max_id = obj.top_hot_structs.call_back_struct.max_id; - delete obj.top_hot_structs; - } - if (obj.datas) obj.datas = filter_comments(obj.datas); - } else { - obj.datas = []; - } - body = JSON.stringify(obj); -} else if (url.indexOf(path5) !== -1 || url.indexOf(path18) !== -1) { - let obj = JSON.parse(body); - obj.data = {}; - body = JSON.stringify(obj); -} else if (url.indexOf(path6) !== -1) { - let obj = JSON.parse(body); - let segments = obj.segments; - if (segments && segments.length > 0) { - let i = segments.length; - while (i--) { - const element = segments[i]; - let is_ad = element.is_ad; - if (is_ad && is_ad === true) segments.splice(i, 1); - } - } - body = JSON.stringify(obj); -} else if (url.indexOf(path7) !== -1) { - let obj = JSON.parse(body); - obj.datas = []; - body = JSON.stringify(obj); -} else if (url.indexOf(path8) !== -1) { - let obj = JSON.parse(body); - obj.story_list = []; - body = JSON.stringify(obj); -} else if (url.indexOf(path11) !== -1 || url.indexOf(path22) !== -1) { - let obj = JSON.parse(body); - obj.data = []; - body = JSON.stringify(obj); -} else if ( - url.indexOf(path9) !== -1 || - url.indexOf(path12) !== -1 || - url.indexOf(path13) !== -1 || - url.indexOf(path14) !== -1 || - url.indexOf(path16) !== -1 -) { - let obj = JSON.parse(body); - if (obj.cards) obj.cards = filter_timeline_cards(obj.cards); - body = JSON.stringify(obj); -} else if (url.indexOf(path19) !== -1) { - let obj = JSON.parse(body); - delete obj.expandable_view; - if (obj.hasOwnProperty("expandable_views")) delete obj.expandable_views; - body = JSON.stringify(obj); -} else if (url.indexOf(path21) !== -1) { - if (body.indexOf("ad_params") !== -1) { - body = JSON.stringify({}); - } -} else if (url.indexOf(path23) !== -1) { - let obj = JSON.parse(body); - obj.video = {}; - body = JSON.stringify(obj); -} -$done({ body }); - -function filter_timeline_statuses(statuses) { - if (statuses && statuses.length > 0) { - let i = statuses.length; - while (i--) { - let element = statuses[i]; - if ( - is_timeline_likerecommend(element.title) || - is_timeline_ad(element) || - is_stream_video_ad(element) - ) { - statuses.splice(i, 1); - } - } - } - return statuses; -} - -function filter_comments(datas) { - if (datas && datas.length > 0) { - let i = datas.length; - while (i--) { - const element = datas[i]; - const type = element.type; - if (type === 5 || type === 1 || type === 6) datas.splice(i, 1); - } - } - return datas; -} - -function filter_timeline_cards(cards) { - if (cards && cards.length > 0) { - let j = cards.length; - while (j--) { - let item = cards[j]; - let card_group = item.card_group; - if (card_group && card_group.length > 0) { - if (item.itemid && item.itemid === "hotword") { - filter_top_search(card_group); - } else { - let i = card_group.length; - while (i--) { - let card_group_item = card_group[i]; - let card_type = card_group_item.card_type; - if (card_type) { - if (card_type === 9) { - if (is_timeline_ad(card_group_item.mblog)) - card_group.splice(i, 1); - } else if (card_type === 118 || card_type === 89) { - card_group.splice(i, 1); - } else if (card_type === 42) { - if ( - card_group_item.desc === - "\u53ef\u80fd\u611f\u5174\u8da3\u7684\u4eba" - ) { - cards.splice(j, 1); - break; - } - } else if (card_type === 17) { - filter_top_search(card_group_item.group); - } - } - } - } - } else { - let card_type = item.card_type; - if (card_type && card_type === 9) { - if (is_timeline_ad(item.mblog)) cards.splice(j, 1); - } - } - } - } - return cards; -} - -function filter_top_search(group) { - if (group && group.length > 0) { - let k = group.length; - while (k--) { - let group_item = group[k]; - if (group_item.hasOwnProperty("promotion")) { - group.splice(k, 1); - } - } - } -} - -function is_timeline_ad(mblog) { - if (!mblog) return false; - let promotiontype = - mblog.promotion && mblog.promotion.type && mblog.promotion.type === "ad"; - let mblogtype = mblog.mblogtype && mblog.mblogtype === 1; - return !!(promotiontype || mblogtype); -} - -function is_timeline_likerecommend(title) { - return !!(title && title.type && title.type === "likerecommend"); -} - -function is_stream_video_ad(item) { - return item.ad_state && item.ad_state === 1; -} \ No newline at end of file diff --git a/Scripts/AdBlock/Weibo/weibo_ad_ycc_new.js b/Scripts/AdBlock/Weibo/weibo_ad_ycc_new.js deleted file mode 100644 index fb4c182..0000000 --- a/Scripts/AdBlock/Weibo/weibo_ad_ycc_new.js +++ /dev/null @@ -1,200 +0,0 @@ -/* -Weibo remove ads - -[rewrite_local] -^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/NobyDa/Script/master/QuantumultX/File/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/NobyDa/Script/master/QuantumultX/File/wb_launch.js -[mitm] -hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com - */ - -const path1 = "/groups/timeline"; -const path2 = "/statuses/unread"; -const path3 = "/statuses/extend"; -const path4 = "/comments/build_comments"; -const path5 = "/photo/recommend_list"; -const path6 = "/stories/video_stream"; -const path7 = "/statuses/positives/get"; -const path8 = "/stories/home_list"; -const path9 = "/profile/statuses"; -const path10 = "/statuses/friends/timeline"; -const path11 = "/service/picfeed"; -const path12 = "/fangle/timeline"; -const path13 = "/searchall"; -const path14 = "/cardlist"; -const path15 = "/statuses/video_timeline"; -const path16 = "/page"; -const path17 = "/statuses/friends_timeline"; -const path18 = "/!/photos/pic_recommend_status"; -const path19 = "/statuses/video_mixtimeline"; - -const url = $request.url; -var body = $response.body; - -if ( - url.indexOf(path1) != -1 || - url.indexOf(path2) != -1 || - url.indexOf(path10) != -1 || - url.indexOf(path15) != -1 || - url.indexOf(path17) != -1 -) { - let obj = JSON.parse(body); - if (obj.statuses) obj.statuses = filter_timeline_statuses(obj.statuses); - if (obj.advertises) obj.advertises = []; - if (obj.ad) obj.ad = []; - if (obj.num) obj.num = obj.original_num; - if (obj.trends) obj.trends = []; - body = JSON.stringify(obj); -} - -if (url.indexOf(path3) != -1) { - let obj = JSON.parse(body); - if (obj.trend) delete obj.trend; - body = JSON.stringify(obj); -} - -if (url.indexOf(path4) != -1) { - let obj = JSON.parse(body); - obj.recommend_max_id = 0; - if (obj.status) { - if (obj.top_hot_structs) { - obj.max_id = obj.top_hot_structs.call_back_struct.max_id; - delete obj.top_hot_structs; - } - if (obj.datas) obj.datas = filter_comments(obj.datas); - } else { - obj.datas = []; - } - body = JSON.stringify(obj); -} - -if (url.indexOf(path5) != -1 || - url.indexOf(path18) != -1) { - let obj = JSON.parse(body); - obj.data = {}; - body = JSON.stringify(obj); -} - -if (url.indexOf(path6) != -1) { - let obj = JSON.parse(body); - let segments = obj.segments; - if (segments && segments.length > 0) { - let i = segments.length; - while (i--) { - const element = segments[i]; - let is_ad = element.is_ad; - if (is_ad && is_ad == true) segments.splice(i, 1); - } - } - body = JSON.stringify(obj); -} - -if (url.indexOf(path7) != -1) { - let obj = JSON.parse(body); - obj.datas = []; - body = JSON.stringify(obj); -} - -if (url.indexOf(path8) != -1) { - let obj = JSON.parse(body); - obj.story_list = []; - body = JSON.stringify(obj); -} - -if (url.indexOf(path11) != -1) { - let obj = JSON.parse(body); - obj.data = []; - body = JSON.stringify(obj); -} - -if ( - url.indexOf(path9) != -1 || - url.indexOf(path12) != -1 || - url.indexOf(path13) != -1 || - url.indexOf(path14) != -1 || - url.indexOf(path16) != -1 -) { - let obj = JSON.parse(body); - if (obj.cards) obj.cards = filter_timeline_cards(obj.cards); - body = JSON.stringify(obj); -} - -if (url.indexOf(path19) != -1) { - let obj = JSON.parse(body); - delete obj.expandable_view; - body = JSON.stringify(obj); -} - -$done({ body }); - -function filter_timeline_statuses(statuses) { - if (statuses && statuses.length > 0) { - let i = statuses.length; - while (i--) { - let element = statuses[i]; - if (is_timeline_likerecommend(element.title)) statuses.splice(i, 1); - if (is_timeline_ad(element)) statuses.splice(i, 1); - } - } - return statuses; -} - -function filter_comments(datas) { - if (datas && datas.length > 0) { - let i = datas.length; - while (i--) { - const element = datas[i]; - let type = element.type; - if (type == 5 || type == 1 || type == 6) datas.splice(i, 1); - } - } - return datas; -} - -function filter_timeline_cards(cards) { - if (cards && cards.length > 0) { - let j = cards.length; - while (j--) { - let item = cards[j]; - let card_group = item.card_group; - if (card_group && card_group.length > 0) { - let i = card_group.length; - while (i--) { - let card_group_item = card_group[i]; - let card_type = card_group_item.card_type; - if (card_type) { - if (card_type == 9) { - if (is_timeline_ad(card_group_item.mblog)) card_group.splice(i, 1); - } else if (card_type == 118 || card_type == 89) { - card_group.splice(i, 1); - } else if (card_type == 42) { - if (card_group_item.desc == '\u53ef\u80fd\u611f\u5174\u8da3\u7684\u4eba') { - cards.splice(j, 1); - break; - } - } - } - } - } else { - let card_type = item.card_type; - if (card_type && card_type == 9) { - if (is_timeline_ad(item.mblog)) cards.splice(j, 1); - } - } - } - } - return cards; -} - -function is_timeline_ad(mblog) { - if (!mblog) return false; - let promotiontype = mblog.promotion && mblog.promotion.type && mblog.promotion.type == "ad"; - let mblogtype = mblog.mblogtype && mblog.mblogtype == 1; - return (promotiontype || mblogtype) ? true : false; -} - -function is_timeline_likerecommend(title) { - return title && title.type && title.type == "likerecommend" ? true : false; -} - -// by yichahucha diff --git a/Scripts/AdBlock/Weibo/weibo_launch.js b/Scripts/AdBlock/Weibo/weibo_launch.js deleted file mode 100644 index e165e06..0000000 --- a/Scripts/AdBlock/Weibo/weibo_launch.js +++ /dev/null @@ -1,39 +0,0 @@ -//参考@yichahucha 的脚本 - -const launchAdUrl1 = '/interface/sdk/sdkad.php'; -const launchAdUrl2 = '/wbapplua/wbpullad.lua'; - -// function needModify(url) { -// if(url.indexOf(launchAdUrl1) > -1 || url.indexOf(launchAdUrl2) > -1) { -// return true; -// } -// return false; -// } - -function modifyMain(url, data) { - if(url.indexOf(launchAdUrl1) > -1) { - let temp = data.match(/\{.*\}/); - if(!temp) return data; - data = JSON.parse(temp); - if (data.ads) data.ads = []; - if (data.background_delay_display_time) data.background_delay_display_time = 60 * 60 * 24 * 1000; - if (data.show_push_splash_ad) data.show_push_splash_ad = false; - return JSON.stringify(data) + 'OK'; - } - if(url.indexOf(launchAdUrl2) > -1) { - data = JSON.parse(data); - if (data.cached_ad && data.cached_ad.ads) { - data.cached_ad.ads = []; - } - return JSON.stringify(data); - } - return data; -} - -var body = $response.body; -var url = $request.url; -// if(needModify(url)) { -body = modifyMain(url, body); -// } - -$done(body); \ No newline at end of file diff --git a/Scripts/AdBlock/Weibo/weibo_launch_ycc.js b/Scripts/AdBlock/Weibo/weibo_launch_ycc.js deleted file mode 100644 index 471838c..0000000 --- a/Scripts/AdBlock/Weibo/weibo_launch_ycc.js +++ /dev/null @@ -1,26 +0,0 @@ -/* -README:https://github.com/yichahucha/surge/tree/master - */ - -const path1 = "/interface/sdk/sdkad.php"; -const path2 = "/wbapplua/wbpullad.lua"; - -const url = $request.url; -let body = $response.body; -let obj; -if (url.indexOf(path1) !== -1) { - let re = /\{.*}/; - body = body.match(re); - obj = JSON.parse(body); - if (obj.background_delay_display_time) obj.background_delay_display_time = 60*60*24*365; - if (obj.show_push_splash_ad) obj.show_push_splash_ad = false; - if (obj.ads) obj.ads = []; - body = JSON.stringify(obj) + 'OK'; -} -if (url.indexOf(path2) !== -1) { - obj = JSON.parse(body); - if (obj.cached_ad && obj.cached_ad.ads) obj.cached_ad.ads = []; - body = JSON.stringify(obj); -} - -$done({body}); \ No newline at end of file diff --git a/Scripts/AdBlock/Weibo/weibo_main.js b/Scripts/AdBlock/Weibo/weibo_main.js deleted file mode 100644 index 6abe47a..0000000 --- a/Scripts/AdBlock/Weibo/weibo_main.js +++ /dev/null @@ -1,659 +0,0 @@ -const version = 'v1024.1'; - -const $ = new Env("微博去广告"); -let storeMainConfig = $.getdata('mainConfig'); -let storeItemMenusConfig = $.getdata('itemMenusConfig'); - -//主要的选项配置 -const mainConfig = storeMainConfig ? JSON.parse(storeMainConfig) : { - isDebug: false, //开启调试,会打印运行中部分日志 - //个人中心配置,其中多数是可以直接在更多功能里直接移除 - removeHomeVip: true, //个人中心的vip栏 - removeHomeCreatorTask: true, //个人中心创作者中心下方的轮播图 - - //微博详情页配置 - removeRelate: true, //相关推荐 - removeGood: true, //微博主好物种草 - removeFollow: true, //关注博主 - modifyMenus: true, //编辑上下文菜单 - removeRelateItem: false, //评论区相关内容 - removeRecommendItem: true, //评论区推荐内容 - removeRewardItem: false, //微博详情页打赏模块 - - removeLiveMedia: true, //首页顶部直播 - removeNextVideo: false, //关闭自动播放下一个视频 - - removePinedTrending: true, //删除热搜列表置顶条目 - - removeInterestFriendInTopic: false, //超话:超话里的好友 - removeInterestTopic: false, //超话:可能感兴趣的超话 + 好友关注 - removeInterestUser: false, //用户页:可能感兴趣的人 - - removeLvZhou: false, //绿洲模块 - - profileSkin1: null, //用户页:自定义图标1 - profileSkin2: null, //用户页:自定义图标2 - tabIconVersion: 0, //配置大于100的数 - tabIconPath: '' //配置图标路径 -} - - -//菜单配置 -const itemMenusConfig = storeItemMenusConfig ? JSON.parse(storeItemMenusConfig) : { - creator_task:false, //转发任务 - mblog_menus_custom:false, //寄微博 - mblog_menus_video_later:true, //可能是稍后再看?没出现过 - mblog_menus_comment_manager:true, //评论管理 - mblog_menus_avatar_widget:false, //头像挂件 - mblog_menus_card_bg: false, //卡片背景 - mblog_menus_long_picture:true, //生成长图 - mblog_menus_delete:true, //删除 - mblog_menus_edit:true, //编辑 - mblog_menus_edit_history:true, //编辑记录 - mblog_menus_edit_video:true, //编辑视频 - mblog_menus_sticking:true, //置顶 - mblog_menus_open_reward:true, //赞赏 - mblog_menus_novelty:false, //新鲜事投稿 - mblog_menus_favorite:true, //收藏 - mblog_menus_promote:true, //推广 - mblog_menus_modify_visible:true, //设置分享范围 - mblog_menus_copy_url:true, //复制链接 - mblog_menus_follow:true, //关注 - mblog_menus_video_feedback:true, //播放反馈 - mblog_menus_shield:true, //屏蔽 - mblog_menus_report:true, //投诉 - mblog_menus_apeal:true, //申诉 - mblog_menus_home:true //返回首页 -} - -const modifyCardsUrls = ['/cardlist', 'video/community_tab', '/searchall']; -const modifyStatusesUrls = ['statuses/friends/timeline', 'statuses/unread_friends_timeline', 'statuses/unread_hot_timeline', 'groups/timeline']; - -const otherUrls = { - '/profile/me': 'removeHome', //个人页模块 - '/statuses/extend': 'itemExtendHandler', //微博详情页 - '/video/remind_info': 'removeVideoRemind', //tab2菜单上的假通知 - '/checkin/show': 'removeCheckin', //签到任务 - '/live/media_homelist': 'removeMediaHomelist', //首页直播 - '/comments/build_comments': 'removeComments', //微博详情页评论区相关内容 - '/container/get_item': 'containerHandler', //列表相关 - '/profile/container_timeline': 'userHandler', //用户主页 - '/video/tiny_stream_video_list': 'nextVideoHandler', //取消自动播放下一个视频 - '/2/statuses/video_mixtimeline': 'nextVideoHandler', - '/!/client/light_skin': 'tabSkinHandler', - '/littleskin/preview': 'skinPreviewHandler', - '/search/finder': 'removeSearchMain', - '/search/container_timeline': 'removeSearch', - '/search/container_discover': 'removeSearch', - '/2/messageflow': 'removeMsgAd', - '/2/page?': 'removePage', //超话签到的按钮 /2/page/button 加?区别 - '/statuses/unread_topic_timeline': 'topicHandler', //超话tab - '/statuses/container_timeline': 'removeMain', -} - - -function getModifyMethod(url) { - for (const s of modifyCardsUrls) { - if(url.indexOf(s) > -1) { - return 'removeCards'; - } - } - for (const s of modifyStatusesUrls) { - if(url.indexOf(s) > -1) { - return 'removeTimeLine'; - } - } - for(const [path, method] of Object.entries(otherUrls)) { - if(url.indexOf(path) > -1) { - return method; - } - } - return null; -} - - -function isAd(data) { - if(!data) { - return false; - } - if(data.mblogtypename == '广告' || data.mblogtypename == '热推') {return true}; - if(data.promotion && data.promotion.type == 'ad') {return true}; - return false; -} - - -function removeMain(data) { - if(!data.items) { - return data; - } - let newItems = []; - for (let item of data.items) { - if(!isAd(item.data)) { - newItems.push(item); - } - } - data.items = newItems; - log('removeMain success'); - return data; -} - -function topicHandler(data) { - const cards = data.cards; - if (!cards) return data; - if(!mainConfig.removeUnfollowTopic && !mainConfig.removeUnusedPart) return data; - let newCards = []; - for(let c of cards) { - let addFlag = true; - if(c.mblog) { - let btns = c.mblog.buttons; - if(mainConfig.removeUnfollowTopic && btns) { - if(btns[0].type == 'follow') { - addFlag = false; - } - } - } else { - if(!mainConfig.removeUnusedPart) { - continue; - } - if(c.itemid == 'bottom_mix_activity') { - addFlag = false; - } else if(c?.top?.title == '正在活跃') { - addFlag = false; - } else if(c.card_type == 200 && c.group) { - addFlag = false; - } else { - let cGroup = c.card_group; - if(!cGroup) {continue;} - let cGroup0 = cGroup[0]; - if(['guess_like_title', 'cats_top_title' ,'chaohua_home_readpost_samecity_title'].indexOf(cGroup0.itemid) > -1) { - addFlag = false; - } else if(cGroup.length > 1) { - let newCardGroup = []; - for(let cg of cGroup) { - if(['chaohua_discovery_banner_1', 'bottom_mix_activity'].indexOf(cg.itemid) == -1) { - newCardGroup.push(cg); - } - } - c.card_group = newCardGroup; - } - } - } - if(addFlag) { - newCards.push(c); - } - } - data.cards = newCards; - log('topicHandler success'); - return data; -} - - -function removeSearchMain(data) { - let channels = data.channelInfo.channels; - if (!channels) {return data;} - for(let channel of channels) { - let payload = channel.payload; - if (!payload) {continue;} - removeSearch(payload) - } - log('remove_search main success'); - return data; -} - - -function checkSearchWindow(item) { - if(!mainConfig.removeSearchWindow) return false; - if(item.category != 'card') return false; - return item.data?.itemid == 'finder_window' || item.data?.itemid == 'more_frame'; -} - - -//发现页 -function removeSearch(data) { - if(!data.items) { - return data; - } - let newItems = []; - for (let item of data.items) { - if(item.category == 'feed') { - if(!isAd(item.data)) { - newItems.push(item); - } - } else { - if(!checkSearchWindow(item)) { - newItems.push(item); - } - } - } - data.items = newItems; - log('remove_search success'); - return data; -} - - -function removeMsgAd(data) { - if(!data.messages) { - return; - } - let newMsgs = []; - for (let msg of data.messages) { - if(msg.msg_card?.ad_tag) { - continue; - } - newMsgs.push(msg) - } - data.messages = newMsgs; - return data; -} - -function removePage(data){ - removeCards(data); - - // 删除热搜列表置顶条目 - if (mainConfig.removePinedTrending && data.cards && data.cards.length > 0) { - if (data.cards[0].card_group) { - data.cards[0].card_group = data.cards[0].card_group.filter(c=>!c.itemid.includes("t:51")); - } - } - - return data; -} - -function removeCards(data) { - if(!data.cards) { - return; - } - let newCards = []; - for (const card of data.cards) { - let cardGroup = card.card_group; - if(cardGroup && cardGroup.length > 0) { - let newGroup = []; - for (const group of cardGroup) { - let cardType = group.card_type; - if(cardType != 118) { - newGroup.push(group); - } - } - card.card_group = newGroup; - newCards.push(card); - } else { - let cardType = card.card_type; - if([9,165].indexOf(cardType) > -1) { - if(!isAd(card.mblog)) { - newCards.push(card); - } - } else { - newCards.push(card); - } - } - } - data.cards = newCards; -} - - -function lvZhouHandler(data) { - if(!mainConfig.removeLvZhou) return; - if(!data) return; - let struct = data.common_struct; - if(!struct) return; - let newStruct = []; - for (const s of struct) { - if(s.name != '绿洲') { - newStruct.push(s); - } - } - data.common_struct = newStruct; -} - - -function isBlock(data) { - let blockIds = mainConfig.blockIds || []; - if(blockIds.length === 0) { - return false; - } - let uid = data.user.id; - for (const blockId of blockIds) { - if(blockId == uid) { - return true; - } - } - return false; -} - -function removeTimeLine(data) { - for (const s of ["ad", "advertises", "trends"]) { - if(data[s]) { - delete data[s]; - } - } - if(!data.statuses) { - return; - } - let newStatuses = []; - for (const s of data.statuses) { - if(!isAd(s)) { - lvZhouHandler(s); - if(!isBlock(s)) { - newStatuses.push(s); - } - } - } - data.statuses = newStatuses; -} - - -function removeHomeVip(data) { - if(!data.header) { - return data; - } - // let vipCenter = data.header.vipCenter; - // if(vipCenter) { - // vipCenter.icon = ''; - // vipCenter.title.content = '会员中心'; - // } - if(data.header.vipView) { - data.header.vipView = null; - } - return data; -} - -//移除tab2的假通知 -function removeVideoRemind(data) { - data.bubble_dismiss_time = 0; - data.exist_remind = false; - data.image_dismiss_time = 0; - data.image = ''; - data.tag_image_english = ''; - data.tag_image_english_dark = ''; - data.tag_image_normal = ''; - data.tag_image_normal_dark = ''; -} - - -//微博详情页 -function itemExtendHandler(data) { - if(mainConfig.removeRelate || mainConfig.removeGood) { - if(data.trend && data.trend.titles) { - let title = data.trend.titles.title; - if(mainConfig.removeRelate && title === '相关推荐') { - delete data.trend; - } else if (mainConfig.removeGood && title === '博主好物种草') { - delete data.trend; - } - } - } - if(mainConfig.removeFollow) { - if(data.follow_data) { - data.follow_data = null; - } - } - - if(mainConfig.removeRewardItem) { - if(data.reward_info) { - data.reward_info = null; - } - } - - //删除超话新帖和新用户通知 - if(data.page_alerts) { - data.page_alerts = null; - } - - //广告 暂时判断逻辑根据图片 https://h5.sinaimg.cn/upload/1007/25/2018/05/03/timeline_icon_ad_delete.png - try { - let picUrl = data.trend.extra_struct.extBtnInfo.btn_picurl; - if(picUrl.indexOf('timeline_icon_ad_delete') > -1) { - delete data.trend; - } - } catch (error) { - - } - - - if(mainConfig.modifyMenus && data.custom_action_list) { - let newActions = []; - for (const item of data.custom_action_list) { - let _t = item.type; - let add = itemMenusConfig[_t] - if(add === undefined) { - newActions.push(item); - } else if(_t === 'mblog_menus_copy_url') { - newActions.unshift(item); - } else if(add) { - newActions.push(item); - } - } - data.custom_action_list = newActions; - } -} - -function updateFollowOrder(item) { - try { - for (let d of item.items) { - if(d.itemId === 'mainnums_friends') { - let s = d.click.modules[0].scheme; - d.click.modules[0].scheme = s.replace('231093_-_selfrecomm', '231093_-_selffollowed'); - log('updateFollowOrder success'); - return; - } - } - } catch (error) { - console.log('updateFollowOrder fail'); - } -} - -function updateProfileSkin(item, k) { - try { - let profileSkin = mainConfig[k]; - if(!profileSkin) {return;} - let i = 0; - for (let d of item.items) { - if(!d.image) { - continue; - } - try { - dm = d.image.style.darkMode - if(dm != 'alpha') { - d.image.style.darkMode = 'alpha' - } - d.image.iconUrl = profileSkin[i++]; - if(d.dot) { - d.dot = []; - } - } catch (error) { - - } - } - log('updateProfileSkin success'); - } catch (error) { - console.log('updateProfileSkin fail'); - } -} - - -function removeHome(data) { - if(!data.items) { - return data; - } - let newItems = []; - for (let item of data.items) { - let itemId = item.itemId; - if(itemId == 'profileme_mine') { - if(mainConfig.removeHomeVip) { - item = removeHomeVip(item); - } - updateFollowOrder(item); - newItems.push(item); - } else if (itemId == '100505_-_top8') { - updateProfileSkin(item, 'profileSkin1'); - newItems.push(item); - } else if (itemId == '100505_-_newcreator') { - if(item.type == 'grid') { - updateProfileSkin(item, 'profileSkin2'); - newItems.push(item); - } else { - if(!mainConfig.removeHomeCreatorTask) { - newItems.push(item); - } - } - } else if(['mine_attent_title', '100505_-_meattent_pic', '100505_-_newusertask', '100505_-_vipkaitong', '100505_-_hongbao2022', '100505_-_adphoto'].indexOf(itemId) > -1) { - continue; - } else if (itemId.match(/100505_-_meattent_-_\d+/)) { - continue; - } else { - newItems.push(item); - } - } - data.items = newItems; - return data; -} - - -//移除tab1签到 -function removeCheckin(data) { - log('remove tab1签到'); - data.show = 0; -} - - -//首页直播 -function removeMediaHomelist(data) { - if(mainConfig.removeLiveMedia) { - log('remove 首页直播'); - data.data = {}; - } -} - -//评论区相关和推荐内容 -function removeComments(data) { - let delType = ['广告']; - if(mainConfig.removeRelateItem) delType.push('相关内容'); - if(mainConfig.removeRecommendItem) delType.push(...['推荐', '热推']); - // if(delType.length === 0) return; - let items = data.datas || []; - if(items.length === 0) return; - let newItems = []; - for (const item of items) { - let adType = item.adType || ''; - if(delType.indexOf(adType) == -1) { - newItems.push(item); - } - } - log('remove 评论区相关和推荐内容'); - data.datas = newItems; -} - - -//处理感兴趣的超话和超话里的好友 -function containerHandler(data) { - if(mainConfig.removeInterestFriendInTopic) { - if(data.card_type_name === '超话里的好友') { - log('remove 超话里的好友'); - data.card_group = []; - } - } - if(mainConfig.removeInterestTopic && data.itemid) { - if(data.itemid.indexOf('infeed_may_interest_in') > -1) { - log('remove 感兴趣的超话'); - data.card_group = []; - } else if(data.itemid.indexOf('infeed_friends_recommend') > -1) { - log('remove 超话好友关注'); - data.card_group = []; - } - } -} - -//可能感兴趣的人 -function userHandler(data) { - data = removeMain(data); - if(!mainConfig.removeInterestUser) { - return data; - } - - if(!data.items) { - return data; - } - let newItems = []; - for (let item of data.items) { - let isAdd = true; - if(item.category == 'group') { - try { - if(item.items[0]['data']['desc'] == '可能感兴趣的人') { - isAdd = false; - } - } catch (error) { - } - } - if(isAdd) { - newItems.push(item); - } - } - data.items = newItems; - log('removeMain sub success'); - return data; -} - - -function nextVideoHandler(data) { - if(mainConfig.removeNextVideo) { - data.statuses = []; - data.tab_list = []; - console.log('nextVideoHandler'); - } -} - -function tabSkinHandler(data) { - try { - let iconVersion = mainConfig.tabIconVersion; - data['data']['canUse'] = 1 - if(!iconVersion || !mainConfig.tabIconPath) return; - if(iconVersion < 100) return; - - let skinList = data['data']['list'] - for (let skin of skinList) { - // if(skin.usetime) { - // skin['usetime'] = 330 - // } - skin['version'] = iconVersion; - skin['downloadlink'] = mainConfig.tabIconPath; - } - log('tabSkinHandler success') - } catch (error) { - log('tabSkinHandler fail') - } -} - - -function skinPreviewHandler(data) { - data['data']['skin_info']['status'] = 1 -} - - -// function unreadCountHandler(data) { -// let ext = data.ext_new; -// if(!ext) return; -// if(!ext.creator_task) return; -// ext.creator_task.text = ''; -// } - -function log(data) { - if(mainConfig.isDebug) { - console.log(data); - } -} - - -function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${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}isStash(){return"undefined"!=typeof $environment&&$environment["stash-version"]}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,n]=i.split("@"),a={url:`http://${n}/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),n=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(n);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){if(t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,i)});else if(this.isQuanX())this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t&&t.error||"UndefinedError"));else if(this.isNode()){let s=require("iconv-lite");this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:i,statusCode:r,headers:o,rawBody:n}=t,a=s.decode(n,this.encoding);e(null,{status:i,statusCode:r,headers:o,rawBody:n,body:a},a)},t=>{const{message:i,response:r}=t;e(i,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient[s](t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,i)});else if(this.isQuanX())t.method=s,this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t&&t.error||"UndefinedError"));else if(this.isNode()){let i=require("iconv-lite");this.initGotEnv(t);const{url:r,...o}=t;this.got[s](r,o).then(t=>{const{statusCode:s,statusCode:r,headers:o,rawBody:n}=t,a=i.decode(n,this.encoding);e(null,{status:s,statusCode:r,headers:o,rawBody:n,body:a},a)},t=>{const{message:s,response:r}=t;e(s,r,r&&i.decode(r.rawBody,this.encoding))})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}queryStr(t){let e="";for(const s in t){let i=t[s];null!=i&&""!==i&&("object"==typeof i&&(i=JSON.stringify(i)),e+=`${s}=${i}&`)}return e=e.substring(0,e.length-1),e}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl,i=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":i}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),this.isSurge()||this.isQuanX()||this.isLoon()?$done(t):this.isNode()&&process.exit(1)}}(t,e)} - -var body = $response.body; -var url = $request.url; -let method = getModifyMethod(url); -if(method) { - log(method); - var func = eval(method); - let data = JSON.parse(body); - new func(data); - body = JSON.stringify(data); -} - -$.done({ body }); \ No newline at end of file