├── .gitignore ├── README.md ├── bilibili ├── bilibili.conf ├── bilibili.js ├── bilibili.md └── bilibili_config.js ├── cherish.conf ├── customize.js ├── customize.py ├── fast-conf └── weibo-fast.conf ├── file ├── config.json ├── emoji_1.json ├── emoji_2.json ├── nobyda_api.js ├── skin-hebe.zip ├── skin-xwz.zip ├── wb_emoji.html ├── 微博皮肤.json └── 神机规则.txt ├── imgs ├── icon │ ├── bilibili.png │ └── weibo.png ├── wb_group1.jpg ├── weibo │ ├── 116 │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 2.gif │ │ ├── 3.gif │ │ ├── 4.gif │ │ ├── 5.gif │ │ ├── 6.gif │ │ ├── 7.gif │ │ ├── 8.gif │ │ ├── 9.gif │ │ ├── cover.png │ │ └── imgs.txt │ ├── 156 │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 2.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 3.gif │ │ ├── 4.gif │ │ ├── 5.gif │ │ ├── 6.gif │ │ ├── 7.gif │ │ ├── 8.gif │ │ ├── 9.gif │ │ ├── cover.png │ │ └── imgs.txt │ └── 159 │ │ ├── 1.gif │ │ ├── 10.gif │ │ ├── 11.gif │ │ ├── 12.gif │ │ ├── 13.gif │ │ ├── 14.gif │ │ ├── 15.gif │ │ ├── 16.gif │ │ ├── 17.gif │ │ ├── 18.gif │ │ ├── 19.gif │ │ ├── 2.gif │ │ ├── 20.gif │ │ ├── 21.gif │ │ ├── 22.gif │ │ ├── 23.gif │ │ ├── 24.gif │ │ ├── 3.gif │ │ ├── 4.gif │ │ ├── 5.gif │ │ ├── 6.gif │ │ ├── 7.gif │ │ ├── 8.gif │ │ ├── 9.gif │ │ ├── cover.png │ │ └── imgs.txt └── zsm3.jpg ├── test.py ├── test ├── demo.js ├── test.conf └── test.js ├── util.py ├── wb_emoji.py ├── weibo.conf ├── weibo.sgmodule ├── weibo_config.js ├── weibo_launch.js ├── weibo_main.js ├── weibo_main.py ├── 底部tab.md └── 微博皮肤.md /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/ 2 | __pycache__/ 3 | temp.txt 4 | temp/ 5 | file/config_private.json 6 | file/skin-hebe/ 7 | file/my-conf.conf 8 | xhs/xhs.js 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 脚本最新版 v0515.1 2 | - 因Quan-X可能存在脚本更新延迟,根据你本地脚本第一行的version查看是否运行的是最新版 3 | - 本项目不定期更新,如运行效果与预期不符,请确保脚本已更新到最新版。不排除脚本bug或第三方应用更新后与原有规则不匹配等可能 4 | - 微博版本:14.5.0 5 | - B站版本:7.26.0 6 | 7 | # 说明 8 | - 本项目用于自定义配置iOS系统上的App,主要针对微博去广告及其他自定义,和其他一些软件 9 | - 使用前提:需到非大陆区AppStore下载Quantumult X / Surge 10 | - Quan-X / Surge App本身付费,可自行网上找外区Apple ID免费下载,也可找各渠道付费购买 11 | - Quan-X [不完全教程](https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917) 12 | 13 | 14 | # 文件功能说明 15 | ## weibo_main.js & weibo_launch.js 16 | > 可屏蔽微博app多数广告以及各部分推广模块 17 | - 删除首页(tab1)流和超话中的广告、热推 18 | - 删除视频号(tab2)流中的广告 19 | - ~~删除发现页(tab3)轮播广告图~~ 20 | - 删除个人页(tab5)中的创作者中心下方的轮播图、为你推荐、用户任务和VIP一栏(可配置) 21 | - 删除微博详情页的广告、相关推荐、微博主好物种草和关注博主模块(可配置) 22 | - 删除微博开屏广告 | 参考[@yichahucha](https://github.com/yichahucha/surge/blob/master/wb_launch.js) 23 | - 删除tab2菜单中的虚假通知 24 | - 删除tab1顶部的签到和直播(可配置) 25 | - 删除微博详情页菜单栏的新鲜事头像挂件等(可配置) 26 | - 删除微博详情页评论区相关内容(可配置,默认关闭) 27 | - 删除微博详情页评论区推荐内容(可配置,默认打开) 28 | - 删除超话中可能感兴趣的超话、超话中的好友、超话好友关注、用户页可能感兴趣的人(可配置,默认关闭) 29 | - 删除搜索结果页广告 30 | - 将个人主页【关注】按钮默认值由【推荐】改为【关注的人】 31 | - 自定义个人主页图标(可配置,默认关闭)[效果图](https://m.weibo.cn/2316757461/4693643559963746 32 | ) 33 | - 关闭自动播放下一个视频(可配置,默认关闭) 34 | - 删除微博详情页打赏模块(可配置,默认关闭) 35 | - 自定义底部tab图标(可配置,默认关闭)[效果图](https://m.weibo.cn/2316757461/4695984200746208 36 | ) 37 | - 【已删除】移除tab5新任务通知。[原样式](https://m.weibo.cn/2316757461/4696696879319087) 38 | - 删除绿洲模块(可配置,默认关闭) 39 | - 【待定】自定义开屏图片/视频。如有需求,可以考虑开发 40 | - 删除个人页【让红包飞】模块 41 | - 【03.12更新】新增屏蔽用户功能,如果有不得已需要关注的人(比如某些抽奖关注),但是又不想看TA的内容可以使用此配置。 42 | - 【05.22更新】(重新)删除发现页(tab3)轮播广告图,需要配置weibo_config.js -> removeSearchWindow为true。其实轮播中有些不是广告,一起杀 43 | - 【07.12更新】 删除消息页动态流的广告 44 | - 【08.22更新】 删除超话tab页无关元素(可配置) 45 | - 【08.23更新】 删除微博详情页超话新帖和新用户相关提示 46 | - 【09.02更新】 删除初次打开搜索页的轮播图 47 | - 【09.12更新】 修复超话无法签到bug 48 | - 【10.11更新】 移除首页新版广告 49 | - 【10.24更新】 移除用户页新版广告 50 | - 【2023.03.21更新】 移除首页感兴趣的超话 51 | - 【2024.05.15】移除转发流的广告和常看视频号更新 52 | ## weibo_config.js 53 | > 微博自定义配置 54 | - weibo_main.js文件中含有大量配置用于控制脚本的实际运行结果,如是否移除顶部直播或评论区相关内容等。如果不需要有自己的配置,可忽略此部分说明。 55 | - 如果设置过自定义配置,对后续新增加的功能,如果不生效需要重新设置一次自定义配置。 56 | - 如果需要有自己的特别需求,以评论区相关内容为例,默认是关闭(false),即不移除。如果需要移除可复制[weibo_config.js](https://github.com/zmqcherish/proxy-script/blob/main/weibo_config.js)文件,然后修改 mainConfig.removeRelateItem = true 后,运行此文件即可。 57 | - 屏蔽用户id获取方法:进入用户主页,选择复制链接,得到类似“https://weibo.com/u/xxx”的文本,xxx即为用户id。多个用户用英文逗号“,”分开 58 | - 自定义个人主页图标设置:详见[微博皮肤.md](https://github.com/zmqcherish/proxy-script/blob/main/微博皮肤.md) 59 | - 自定义底部tab图标:详见[底部tab.md](https://github.com/zmqcherish/proxy-script/blob/main/底部tab.md) 60 | - Quan-X 运行方法1:在App中,点击【工具&分析】->【HTTP请求】页面上的右下角图标,在界面中粘贴上面的修改自定义值后的代码,然后点击运行(第一个图标) 61 | - Quan-X 运行方法2(推荐):可在配置文件中增加如下配置后,在【HTTP请求】页面上进一步编辑然后运行 62 | ```properties 63 | [task_local] 64 | 0 0 23 1 * https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_config.js, tag=微博配置, img-url=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/imgs/icon/weibo.png, enabled=false 65 | ``` 66 | - Surge 运行方法:在首页 -> 脚本 -> 编辑器,在界面中粘贴上面的修改自定义值后的代码,然后点击右下角执行 67 | 68 | ## bilibili.js 69 | - 删除首页广告 70 | - 删除首页竖版视频(可配置) 71 | 72 | > B站自定义脚本文件 73 | - 使用说明:[bilibili.md](https://github.com/zmqcherish/proxy-script/blob/main/bilibili/bilibili.md) 74 | 75 | 76 | 77 | ## weibo.conf 78 | > Quan-X配置,微博订阅配置(下文Quan-X配置教程中使用) 79 | 80 | ## weibo.sgmodule 81 | > Surge配置,微博订阅配置(下文Surge配置教程中使用) 82 | ## cherish.conf 83 | > Quan-X配置,个人自用 84 | - 知乎、微信公众号、B站去广告,均来自于网络 85 | - 同weibo.conf功能相同的微博配置 86 | - customize.js中的功能 87 | 88 | ## weibo_main.py 89 | > Python 脚本,功能同weibo_main.js + weibo_launch.js,可用mitmproxy部署 90 | 91 | # Quan-X 配置教程 92 | 1. 下载Quan-X App 93 | 2. 点击首页右下角风车按钮 -> MitM -> 生成证书 94 | 3. iPhone设置页 -> 通用 -> VPN与设备管理,找到Quantumult X开头的证书文件进行安装 95 | 4. iPhone设置页 -> 通用 -> 关于本机 -> 证书信任设置,打开Quantumult X开头的证书信任 96 | 5. 回到Quan-X App的MitM模块开关打开,重写模块开关打开 97 | 6. 在设置页最下方进入其他设置 -> VPN -> 始终开启 98 | 7. App中 -> 重写 -> 规则资源 -> 右上角添加,输入标签(任意名),资源路径填写 https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo.conf (或使用fast-conf)-> 右上角保存 99 | 8. 回到App首页顶部开启App运行即可 100 | 101 | 102 | # Quan-X 文本模式配置 103 | ```properties 104 | [rewrite_local] 105 | # 微博去广告以及去除各部分推广模块 106 | ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 107 | # 删除微博开屏广告 108 | ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_launch.js 109 | [mitm] 110 | hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com 111 | ``` 112 | 113 | 114 | # Surge 配置教程 115 | > 目前有bug,待修复 116 | 1. 下载Surge App 117 | 2. 首页 -> MitM -> 配置根证书 -> 生成新的CA证书 -> 安装证书 118 | 3. iPhone设置页 -> 通用 -> VPN与设备管理,找到Surge开头的证书文件进行安装 119 | 4. iPhone设置页 -> 通用 -> 关于本机 -> 证书信任设置,打开Surge开头的证书信任 120 | 5. 回到Surge App的MitM模块开关打开,Rewrite模块开关打开 121 | 6. 在更多页 -> 始终开启打开 122 | 7. 首页 -> 模块 -> 安装新模块 -> 路径填写 https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo.sgmodule 123 | 8. 安装模块后,进入首页左上角(Default)的外部资源中可以看到两个js文件 124 | 9. 回到App顶部开启App运行即可 125 | 10. [tip] 由于脚本不定期更新,安装的模块和外部资源需要左滑手动更新(暂未找到定时更新功能) 126 | 127 | # Surge 文本模式配置 128 | > 目前有bug,待修复 129 | ```properties 130 | [Script] 131 | http-response ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) requires-body=1,script-path=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 132 | http-response ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) requires-body=1,script-path=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_launch.js 133 | [MITM] 134 | hostname = %APPEND% api.weibo.cn, mapi.weibo.com, *.uve.weibo.com 135 | ``` 136 | 137 | # Contact me 138 | - weibo:[@甄星cherish](https://weibo.com/zmqcherish) 139 | # 免责声明 140 | - 此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 141 | - 请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 142 | 143 | # 感谢 144 | - [fastgit](https://doc.fastgit.org/) 145 | - [@NobyDa](https://github.com/NobyDa) 146 | - [@yichahucha](https://github.com/yichahucha) 147 | - [@AirPods2](https://weibo.com/u/5750747182) 148 | - [@chouchoui](https://github.com/chouchoui) 149 | # 赞赏 150 | ![alt 赞赏码](https://raw.githubusercontent.com/zmqcherish/proxy-script/main/imgs/zsm3.jpg) -------------------------------------------------------------------------------- /bilibili/bilibili.conf: -------------------------------------------------------------------------------- 1 | hostname = app.biliapi.net, app.bilibili.com, 117.23.60.13 2 | 3 | ^https://(app.biliapi.net|app.bilibili.com|117.23.60.13)/x/v2/feed/index url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/bilibili/bilibili.js -------------------------------------------------------------------------------- /bilibili/bilibili.js: -------------------------------------------------------------------------------- 1 | const version = 'v0427.1'; 2 | const urlMap = { 3 | 'x/v2/feed/index': 'removeBzhanFeed' //b站推荐页广告 4 | } 5 | const $ = new Env("B站脚本"); 6 | let storeBBConfig = $.getdata('bBConfig'); 7 | const bBConfig = storeBBConfig ? JSON.parse(storeBBConfig) : {}; 8 | 9 | //删除b站推荐页广告和竖屏视频 10 | function removeBzhanFeed(data) { 11 | try { 12 | let items = data.data.items || []; 13 | if (items.length === 0) return; 14 | let newItems = []; 15 | for (let item of items) { 16 | if(item.ad_info) { 17 | continue; 18 | } 19 | // log(item.title + item.goto) 20 | if(bBConfig.removeVertical && item.goto == 'vertical_av') { 21 | log('remove bb vertical_av'); 22 | continue; 23 | } 24 | // let bannerItem = item.banner_item || []; 25 | // if(bannerItem.length > 0) { 26 | // let newBannerItem = []; 27 | // for (const banner of bannerItem) { 28 | // if(banner.type != 'ad') { 29 | // newBannerItem.push(banner); 30 | // } 31 | // } 32 | // item.banner_item = newBannerItem; 33 | // } 34 | newItems.push(item); 35 | } 36 | data.data.items = newItems; 37 | } catch (error) { 38 | console.log(error); 39 | } 40 | } 41 | 42 | function getModifyMethod(url) { 43 | for(const [path, method] of Object.entries(urlMap)) { 44 | if(url.indexOf(path) > -1) { 45 | return method; 46 | } 47 | } 48 | return null; 49 | } 50 | 51 | function log(data) { 52 | // if(bBConfig.isDebug) { 53 | console.log(data); 54 | // } 55 | } 56 | 57 | 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)} 58 | 59 | 60 | var body = $response.body; 61 | var url = $request.url; 62 | let method = getModifyMethod(url); 63 | if(method) { 64 | var func = eval(method); 65 | let data = JSON.parse(body); 66 | new func(data); 67 | body = JSON.stringify(data); 68 | } 69 | $.done(body); -------------------------------------------------------------------------------- /bilibili/bilibili.md: -------------------------------------------------------------------------------- 1 | # bilibili脚本使用说明 2 | 3 | ## 主要功能 4 | - 删除首页广告 5 | - 删除首页竖版视频(可配置,默认关闭) 6 | - (目前删除不完备,某些情况可能无法删除,待进一步排查) 7 | 8 | ### 方法一(推荐):直接使用 bilibili.conf 文件 9 | - App中 -> 重写 -> 规则资源 -> 右上角添加,输入标签(任意名),资源路径填写 https://raw.githubusercontent.com/zmqcherish/proxy-script/main/bilibili/bilibili.conf -> 右上角保存 10 | 11 | ### 方法二:Quan-X 文本模式配置 12 | ```properties 13 | [rewrite_local] 14 | # bilibili脚本 15 | ^https://app.(biliapi|bilibili).(net|com)/x/v2/feed/index url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/bilibili/bilibili.js 16 | [mitm] 17 | hostname = app.biliapi.net, app.bilibili.com 18 | ``` 19 | 20 | ### 如何删除竖版视频 21 | 因每个人的需求不同,默认情况首页的竖版视频不会删除,如需要,可按下面方法操作 22 | 23 | 在 Quan-X App种增加如下配置后,在【工具&分析】->【HTTP请求】然后选择B站配置,右滑运行 24 | ```properties 25 | [task_local] 26 | 0 0 23 1 * https://raw.githubusercontent.com/zmqcherish/proxy-script/main/bilibili/bilibili_config.js, tag=B站配置, img-url=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/imgs/icon/bilibili.png, enabled=false 27 | ``` -------------------------------------------------------------------------------- /bilibili/bilibili_config.js: -------------------------------------------------------------------------------- 1 | //bilibili竖版视频配置 2 | const bBConfig = { 3 | removeVertical: true, //删除竖版视频 4 | } 5 | 6 | function nobyda() { 7 | const isQuanX = typeof $task != "undefined"; 8 | const isSurge = typeof $httpClient != "undefined"; 9 | const isRequest = typeof $request != "undefined"; 10 | const notify = (title, subtitle='', message='') => { 11 | if (isQuanX) $notify(title, subtitle, message) 12 | if (isSurge) $notification.post(title, subtitle, message); 13 | } 14 | const write = (value, key) => { 15 | if (isQuanX) return $prefs.setValueForKey(value, key); 16 | if (isSurge) return $persistentStore.write(value, key); 17 | } 18 | const read = (key) => { 19 | if (isQuanX) return $prefs.valueForKey(key); 20 | if (isSurge) return $persistentStore.read(key); 21 | } 22 | const done = (value = {}) => { 23 | if (isQuanX) return $done(value); 24 | if (isSurge) isRequest ? $done(value) : $done(); 25 | } 26 | 27 | return { 28 | isRequest, 29 | isSurge, 30 | isQuanX, 31 | notify, 32 | write, 33 | read, 34 | done 35 | } 36 | } 37 | 38 | let $ = new nobyda(); 39 | $.write(JSON.stringify(bBConfig), 'bBConfig'); 40 | console.log($.read('bBConfig')); 41 | console.log('success'); 42 | $.notify('bilibili配置更改成功'); 43 | $.done(); 44 | -------------------------------------------------------------------------------- /cherish.conf: -------------------------------------------------------------------------------- 1 | hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, mp.weixin.qq.com, *.xiaohongshu.com, app.biliapi.net, app.bilibili.com, 117.23.60.13 2 | 3 | # 去微信公众号广告 (By Choler) 4 | ^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js 5 | 6 | # 知乎去广告 (onewayticket255) 7 | # https://api.zhihu.com/(ad|drama|fringe|commercial|market/popover|search/(top|preset|tab)|.*featured-comment-ad) url reject-200 8 | # https://api.zhihu.com/people/ url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20people.js 9 | # https://api.zhihu.com/moments/recommend url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20feed.js 10 | # https://api.zhihu.com/topstory/recommend url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20recommend.js 11 | # https://api.zhihu.com/v4/questions url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20answer.js 12 | 13 | # 哔哩哔哩动画去广告 (onewayticket255) 14 | # https://app.bilibili.com/x/v2/(splash|search/(defaultword|square)) url reject-200 15 | # https://api.bilibili.com/x/v2/dm/ad url reject-200 16 | # https://app.bilibili.com/x/resource/show/tab\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20tab.js 17 | # https://app.bilibili.com/x/v2/account/mine\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20account.js 18 | # https://app.bilibili.com/x/v2/view\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20view%20relate.js 19 | # https://api.bilibili.com/x/v2/reply/main\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20reply.js 20 | # https://api.live.bilibili.com/xlive/app-room/v1/index/getInfoByRoom\?access_key url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20live.js 21 | 22 | # YouTube去广告 23 | ^https?:\/\/.+\.googlevideo\.com\/.+&oad url reject-img 24 | ^https?:\/\/.+\.googlevideo\.com\/.+ctier url reject-img 25 | ^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+ad_ url reject-img 26 | ^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+log_ url reject-img 27 | ^https?:\/\/.+\.youtube\.com\/get_midroll_ url reject-img 28 | ^https?:\/\/premiumyva\.appspot\.com\/vmclickstoadvertisersite url reject-img 29 | ^https?:\/\/.+\.youtube\.com\/api\/stats\/ads url reject-img 30 | ^https?:\/\/.+\.youtube\.com\/api\/stats\/.+adformat url reject-img 31 | ^https?:\/\/.+\.youtube\.com\/pagead\/ url reject-img 32 | ^https?:\/\/.+\.youtube\.com\/ptracking url reject-img 33 | 34 | # 微博去广告以及去除各部分推广模块 - cherish 35 | ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 36 | 37 | # 删除微博开屏广告 - cherish 38 | ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_launch.js 39 | 40 | # 自定义微博tab皮肤 - cherish 41 | ^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 42 | 43 | # 非会员设置tab皮肤 - cherish 44 | ^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 45 | 46 | # 删除小红书开屏广告 - cherish 47 | ^https://edith.xiaohongshu.com/api/sns/v2/system_service/splash_config url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/customize.js 48 | 49 | # 删除b站推荐页广告 - cherish https://app.(biliapi|bilibili).(net|com) 117.23.60.13 50 | ^https://(app.biliapi.net|app.bilibili.com|117.23.60.13)/x/v2/feed/index url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/bilibili/bilibili.js 51 | -------------------------------------------------------------------------------- /customize.js: -------------------------------------------------------------------------------- 1 | const version = '1020v3'; 2 | const urlMap = { 3 | 'xiaohongshu.com/api/sns/v2/system_service/splash_config': 'removeXHSLaunch', //小红书开屏 4 | } 5 | 6 | let $ = new nobyda(); 7 | 8 | //删除小红书广告 9 | function removeXHSLaunch(data) { 10 | try { 11 | // console.log(data); 12 | data.data.ads_groups = []; 13 | } catch (error) { 14 | console.log(error); 15 | } 16 | } 17 | 18 | 19 | function getModifyMethod(url) { 20 | for(const [path, method] of Object.entries(urlMap)) { 21 | if(url.indexOf(path) > -1) { 22 | return method; 23 | } 24 | } 25 | return null; 26 | } 27 | 28 | function nobyda() { 29 | const isQuanX = typeof $task != "undefined"; 30 | const isSurge = typeof $httpClient != "undefined"; 31 | const isRequest = typeof $request != "undefined"; 32 | const notify = (title, subtitle='', message='') => { 33 | if (isQuanX) $notify(title, subtitle, message) 34 | if (isSurge) $notification.post(title, subtitle, message); 35 | } 36 | // const read = (key) => { 37 | // if (isQuanX) return $prefs.valueForKey(key); 38 | // if (isSurge) return $persistentStore.read(key); 39 | // } 40 | const done = (value = {}) => { 41 | if (isQuanX) return $done(value); 42 | if (isSurge) isRequest ? $done(value) : $done(); 43 | } 44 | 45 | return { 46 | isRequest, 47 | isSurge, 48 | isQuanX, 49 | notify, 50 | // read, 51 | done 52 | } 53 | } 54 | 55 | 56 | var body = $response.body; 57 | var url = $request.url; 58 | let method = getModifyMethod(url); 59 | if(method) { 60 | var func = eval(method); 61 | let data = JSON.parse(body); 62 | new func(data); 63 | body = JSON.stringify(data); 64 | } 65 | $.done(body); -------------------------------------------------------------------------------- /customize.py: -------------------------------------------------------------------------------- 1 | from mitmproxy.options import Options 2 | from mitmproxy.proxy.config import ProxyConfig 3 | from mitmproxy.proxy.server import ProxyServer 4 | from mitmproxy.tools.dump import DumpMaster 5 | from util import * 6 | 7 | 8 | class MainAddon: 9 | def __init__(self): 10 | self.remove_vertical = True #移除竖屏视频 11 | self.remove_live = True #移除直播视频 12 | self.hosts = ['app.biliapi.net', 'app.bilibili.com'] #117.23.60.13 13 | self.url_map = { 14 | # 'xiaohongshu.com/api/sns/v2/system_service/splash_config': 'remove_xhs_launch', #小红书开屏 15 | 'x/v2/feed/index': 'remove_bb_feed' #b站推荐页广告 app.biliapi.net 16 | } 17 | 18 | def test(self, data): 19 | data['cardlistInfo']['cardlist_head_cards'][0]['head_data']['midtext'] = '今日阅读1000万 今日讨论330 详情>' 20 | 21 | 22 | @except_decorative 23 | def remove_xhs_launch(self, data): 24 | data['data']['ads_groups'] = [] 25 | 26 | 27 | @except_decorative 28 | def remove_bb_feed(self, data): 29 | # t = time() 30 | # save_json_file(f'temp/{t}.json', data) 31 | # if '创作推广' in json.dumps(data, ensure_ascii = False): 32 | # print(t) 33 | items = data['data'].get('items', []) 34 | if not items: 35 | return 36 | new_items = [] 37 | for item in items: 38 | if item.get('ad_info'): #包含 会员购 39 | continue 40 | goto = item.get('goto') 41 | if self.remove_vertical and goto == 'vertical_av': 42 | continue 43 | if self.remove_live and goto == 'live': 44 | continue 45 | banner_item = item.get('banner_item') 46 | if banner_item: 47 | item['banner_item'] = [banner for banner in banner_item if banner.get('type') != 'ad'] 48 | new_items.append(item) 49 | data['data']['items'] = new_items 50 | 51 | 52 | def get_method(self, host, url): 53 | # print(url) 54 | # if host not in self.hosts: 55 | # return 56 | for path, method in self.url_map.items(): 57 | if path in url: 58 | print(url) 59 | return method 60 | 61 | 62 | def response(self, flow): 63 | req = flow.request 64 | method = self.get_method(req.host, req.url) 65 | if not method: 66 | # if 'm4s' not in req.url: 67 | # f_path = f'temp/a-{time()}.txt' 68 | # append_txt_file(req.url, f_path) 69 | # d = flow.response.text 70 | # append_txt_file(d, f_path) 71 | return 72 | res = flow.response 73 | data = json.loads(res.text) 74 | print(f'match {method}...') 75 | eval("self." + method)(data) 76 | res.text = json.dumps(data) 77 | 78 | 79 | ip = '10.2.149.17' 80 | # ip = '192.168.1.6' 81 | port = 8888 82 | opts = Options(listen_host=ip, listen_port=port) 83 | opts.add_option("body_size_limit", int, 0, "") 84 | 85 | m = DumpMaster(opts, with_termlog=False, with_dumper=False) 86 | config = ProxyConfig(opts) 87 | m.server = ProxyServer(config) 88 | m.addons.add(MainAddon()) 89 | 90 | try: 91 | print('\nproxy:', ip, port) 92 | m.run() 93 | except KeyboardInterrupt: 94 | m.shutdown() 95 | 96 | -------------------------------------------------------------------------------- /fast-conf/weibo-fast.conf: -------------------------------------------------------------------------------- 1 | hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com 2 | 3 | # 微博去广告以及去除各部分推广模块 - cherish 4 | ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) url script-response-body https://raw.fastgit.org/zmqcherish/proxy-script/main/weibo_main.js 5 | 6 | # 删除微博开屏广告 - cherish 7 | ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.fastgit.org/zmqcherish/proxy-script/main/weibo_launch.js -------------------------------------------------------------------------------- /file/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "cookie": "" 3 | } -------------------------------------------------------------------------------- /file/emoji_1.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 100000, 3 | "msg": "success", 4 | "data": { 5 | "isWebBrowser": false, 6 | "cate_item": [ 7 | { 8 | "id": "6", 9 | "name": "限时免费", 10 | "sort": "10", 11 | "type": "0", 12 | "type_desc": "限免", 13 | "list": [ 14 | { 15 | "id": "116", 16 | "pkg_name": "龙小可第一弹", 17 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000p3uIbjx07mhl96aej090f01003o0T0k01", 18 | "cover": "http://vip.storage.weibo.com/gifimg_source/a13ba3e04352b666904f6acd25776e8f.png", 19 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/a13ba3e04352b666904f6acd25776e8f.png", 20 | "thumb": "http://vip.storage.weibo.com/gifimg_source/5379750ae2e1a6f7ca27a658d303c864.png", 21 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/a26311109e20a5f33f31975bd13e63a9.png", 22 | "version": "1", 23 | "silence": "0", 24 | "type": "0", 25 | "cate_id": "6", 26 | "jump_url": "", 27 | "down_status": 1 28 | }, 29 | { 30 | "id": "147", 31 | "pkg_name": "微博大表情", 32 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001VH2fMgx07vghkJ5wb090f0100tUZV0k01", 33 | "cover": "https://vip.storage.weibo.com/gifimg_source/c7f17216e7dab6ec6c7efc75aaa6bf8d.png", 34 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/c7f17216e7dab6ec6c7efc75aaa6bf8d.png", 35 | "thumb": "https://h5.sinaimg.cn/upload/108/914/2019/07/12/color.png", 36 | "thumb_gray": "https://h5.sinaimg.cn/upload/108/914/2019/07/12/color-wb.png", 37 | "version": "1", 38 | "silence": "0", 39 | "type": "0", 40 | "cate_id": "6", 41 | "jump_url": "", 42 | "down_status": 1 43 | }, 44 | { 45 | "id": "95", 46 | "pkg_name": "摩丝摩丝跳跳文字", 47 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004sIaDrjx07iJDEuS6P090f01004maZ0k01", 48 | "cover": "http://vip.storage.weibo.com/gifimg_source/8e5368811a285b409c48c3e25f291548.png", 49 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/8e5368811a285b409c48c3e25f291548.png", 50 | "thumb": "http://vip.storage.weibo.com/gifimg_source/e2d8c36ce4e0cdc92106a1ab0d189b86.png", 51 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/11d8598cd1114aa16677fc699ffdcaf2.png", 52 | "version": "1", 53 | "silence": "0", 54 | "type": "0", 55 | "cate_id": "6", 56 | "jump_url": "", 57 | "down_status": 1 58 | }, 59 | { 60 | "id": "135", 61 | "pkg_name": "阿狸", 62 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=002yy6Zegx07pMP23gCY090f01004dmY0k01", 63 | "cover": "https://vip.storage.weibo.com/gifimg_source/606dd160dd8874f6bfde43bf50ba7478.png", 64 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/606dd160dd8874f6bfde43bf50ba7478.png", 65 | "thumb": "https://vip.storage.weibo.com/gifimg_source/2b658d5ab5494a4011b37db3d13783dd.png", 66 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/72da0907c9cf6dcd0ed2470f79cd29b0.png", 67 | "version": "1", 68 | "silence": "0", 69 | "type": "0", 70 | "cate_id": "6", 71 | "jump_url": "", 72 | "down_status": 1 73 | }, 74 | { 75 | "id": "137", 76 | "pkg_name": "优优和安安日常篇", 77 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0025AzCfjx07rEThwsxq090f01009pyK0k01", 78 | "cover": "https://vip.storage.weibo.com/gifimg_source/583e7b0c241ec4c39d47e0b4009b793f.png", 79 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/583e7b0c241ec4c39d47e0b4009b793f.png", 80 | "thumb": "https://vip.storage.weibo.com/gifimg_source/ed0b4bcfa7f5e84963ac6ad8eff6a077.png", 81 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/2226745ea7c16e7a479a7b406c772d5d.png", 82 | "version": "1", 83 | "silence": "0", 84 | "type": "0", 85 | "cate_id": "6", 86 | "jump_url": "", 87 | "down_status": 1 88 | }, 89 | { 90 | "id": "151", 91 | "pkg_name": "兔小喜第一季", 92 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003KP6Ipjx07xXskV1Co090f01006Ziu0k01", 93 | "cover": "https://vip.storage.weibo.com/gifimg_source/ab463e85b521c7a70fa05b218bcba453.png", 94 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/ab463e85b521c7a70fa05b218bcba453.png", 95 | "thumb": "https://vip.storage.weibo.com/gifimg_source/4fd751831b525225f927c6682dfdc416.png", 96 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/0a51fc79837301a3c4095dc8db1c73ec.png", 97 | "version": "1", 98 | "silence": "0", 99 | "type": "0", 100 | "cate_id": "6", 101 | "jump_url": "", 102 | "down_status": 1 103 | }, 104 | { 105 | "id": "152", 106 | "pkg_name": "没有动物园", 107 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001sxMQhjx07xXsiKqQT090f01006M7L0k01", 108 | "cover": "https://vip.storage.weibo.com/gifimg_source/c66bbaa14dbba759b1c75a9199a826d1.png", 109 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/c66bbaa14dbba759b1c75a9199a826d1.png", 110 | "thumb": "https://vip.storage.weibo.com/gifimg_source/dcf3f47e2779660196bfa498d85690d3.png", 111 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/9b7a6a8943b5a2c273f2d00b9e600d21.png", 112 | "version": "1", 113 | "silence": "0", 114 | "type": "0", 115 | "cate_id": "6", 116 | "jump_url": "", 117 | "down_status": 1 118 | }, 119 | { 120 | "id": "156", 121 | "pkg_name": "野萌君第一弹", 122 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004gMUc0jx07Dz8dvoNp090f01007HgE0k01", 123 | "cover": "https://vip.storage.weibo.com/gifimg_source/0b128b17fc3b75aa2f319d8b907a2505.png", 124 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/0b128b17fc3b75aa2f319d8b907a2505.png", 125 | "thumb": "https://vip.storage.weibo.com/gifimg_source/48c030135d47cc0e92ce13ff03860c20.png", 126 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/81e2bb63b59f0a5576d6a1ff86063242.png", 127 | "version": "1", 128 | "silence": "0", 129 | "type": "0", 130 | "cate_id": "6", 131 | "jump_url": "", 132 | "down_status": 1 133 | }, 134 | { 135 | "id": "158", 136 | "pkg_name": "汪蛋第一弹", 137 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000Olgtfjx07Dz9G1Blt090f01003Xgs0k01", 138 | "cover": "https://vip.storage.weibo.com/gifimg_source/6db25485b39da04dfe28d197faa3ca73.png", 139 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/6db25485b39da04dfe28d197faa3ca73.png", 140 | "thumb": "https://vip.storage.weibo.com/gifimg_source/cf3bcdf630cc89017821e1c6e21f8750.png", 141 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/c02393c27dc32151d93dd5f0411d4a5d.png", 142 | "version": "1", 143 | "silence": "0", 144 | "type": "0", 145 | "cate_id": "6", 146 | "jump_url": "", 147 | "down_status": 1 148 | }, 149 | { 150 | "id": "160", 151 | "pkg_name": "乖巧宝宝第一弹", 152 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000EFy4Ljx07Dza0KuLC090f01006FFM0k01", 153 | "cover": "https://vip.storage.weibo.com/gifimg_source/77a719e412a2bec0a24a77da32fedcae.png", 154 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/77a719e412a2bec0a24a77da32fedcae.png", 155 | "thumb": "https://vip.storage.weibo.com/gifimg_source/6830fc18e7021220521446d3893e4b41.png", 156 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/0a42401de4aed8de1722dede5cb8caa1.png", 157 | "version": "1", 158 | "silence": "0", 159 | "type": "0", 160 | "cate_id": "6", 161 | "jump_url": "", 162 | "down_status": 1 163 | }, 164 | { 165 | "id": "171", 166 | "pkg_name": "网络安全文字包(永久免费)", 167 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000B1VPFjx07JpG5j13y090f01001E1g0k01", 168 | "cover": "https://vip.storage.weibo.com/gifimg_source/f1add1326d3d8620392335379c45128c.png", 169 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/f1add1326d3d8620392335379c45128c.png", 170 | "thumb": "https://vip.storage.weibo.com/gifimg_source/5f08f0f1aa2e439be6b06b819cbd2c4a.png", 171 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/368ff754f2e4e511e72737ff9bfb20af.png", 172 | "version": "1", 173 | "silence": "0", 174 | "type": "0", 175 | "cate_id": "6", 176 | "jump_url": "", 177 | "down_status": 1 178 | } 179 | ] 180 | }, 181 | { 182 | "id": "1", 183 | "name": "推荐", 184 | "sort": "9", 185 | "type": "1", 186 | "type_desc": "会员", 187 | "list": [ 188 | { 189 | "id": "71", 190 | "pkg_name": "狼人杀专用", 191 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004mJYRajx07dRUtxefm090f01005pZu0k01", 192 | "cover": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/langrensha_yuanjiao.png", 193 | "cover_fillet": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/langrens_fangjiao.png", 194 | "thumb": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/langrensha_tab.png", 195 | "thumb_gray": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/langrensha_huise.png", 196 | "version": "1", 197 | "silence": "0", 198 | "type": "1", 199 | "cate_id": "1", 200 | "jump_url": "", 201 | "down_status": 1 202 | }, 203 | { 204 | "id": "161", 205 | "pkg_name": "派乐萌奇", 206 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003H2Mp0jx07DzadP2Fh090f010043w70k01", 207 | "cover": "https://vip.storage.weibo.com/gifimg_source/8645c3ad17525d4dfd555903c77cb364.png", 208 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/8645c3ad17525d4dfd555903c77cb364.png", 209 | "thumb": "https://vip.storage.weibo.com/gifimg_source/5f56105c1831a7be8f612c0ed1a937de.png", 210 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/c1c31df0c5c7c618b2d571a573e51fa4.png", 211 | "version": "1", 212 | "silence": "0", 213 | "type": "1", 214 | "cate_id": "1", 215 | "jump_url": "", 216 | "down_status": 1 217 | }, 218 | { 219 | "id": "169", 220 | "pkg_name": "牛妞果", 221 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000IhDxyjx07H93CYqSj090f01002SIK0k01", 222 | "cover": "https://vip.storage.weibo.com/gifimg_source/ed5a5315623a9404550dc6fa652a47fb.png", 223 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/ed5a5315623a9404550dc6fa652a47fb.png", 224 | "thumb": "https://vip.storage.weibo.com/gifimg_source/a06c53fb47a3f98c9fa91eae1b8e4833.png", 225 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/84fe4bc0527f32b3ca3e6c20e914daaf.png", 226 | "version": "1", 227 | "silence": "0", 228 | "type": "1", 229 | "cate_id": "1", 230 | "jump_url": "", 231 | "down_status": 1 232 | } 233 | ] 234 | }, 235 | { 236 | "id": "8", 237 | "name": "原创专区", 238 | "sort": "8", 239 | "type": "1", 240 | "type_desc": "会员", 241 | "list": [ 242 | { 243 | "id": "119", 244 | "pkg_name": "芮小凸和芮小凹2", 245 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=002gsffxjx07mr9fUDEA090f01005UAl0k01", 246 | "cover": "http://vip.storage.weibo.com/gifimg_source/644fb2cef100545c1f6f9f77778bf1cf.png", 247 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/644fb2cef100545c1f6f9f77778bf1cf.png", 248 | "thumb": "http://vip.storage.weibo.com/gifimg_source/45a1545e324375b4d39e826680b249cd.png", 249 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/fb3ada3154a43e8645e6ab887458328b.png", 250 | "version": "1", 251 | "silence": "0", 252 | "type": "1", 253 | "cate_id": "8", 254 | "jump_url": "", 255 | "down_status": 1 256 | }, 257 | { 258 | "id": "121", 259 | "pkg_name": "美丫猫之设计师篇", 260 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004CBGLcjx07mQKGSNLG090f01003Dr90k01", 261 | "cover": "http://vip.storage.weibo.com/gifimg_source/ea7ca17afefd8054ec893e954ae86bdd.png", 262 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/ea7ca17afefd8054ec893e954ae86bdd.png", 263 | "thumb": "http://vip.storage.weibo.com/gifimg_source/9af83f9fd5714d1a6deb806edde9c43f.png", 264 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/e312c7734ad587d59781e6e839bb23a8.png", 265 | "version": "1", 266 | "silence": "0", 267 | "type": "1", 268 | "cate_id": "8", 269 | "jump_url": "", 270 | "down_status": 1 271 | }, 272 | { 273 | "id": "117", 274 | "pkg_name": "韩火火", 275 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0017uHadjx07miVDhGBa090f0100mZ1V0k01", 276 | "cover": "http://vip.storage.weibo.com/gifimg_source/0551d6c545d4afeab6356d25b834baa5.png", 277 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/0551d6c545d4afeab6356d25b834baa5.png", 278 | "thumb": "http://vip.storage.weibo.com/gifimg_source/3256e9965a9395cb0445bbad449406e2.png", 279 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/6f6624da68f2abdb718fe8dd993e42ce.png", 280 | "version": "1", 281 | "silence": "0", 282 | "type": "1", 283 | "cate_id": "8", 284 | "jump_url": "", 285 | "down_status": 1 286 | }, 287 | { 288 | "id": "112", 289 | "pkg_name": "蜜斯兔和呜啦熊", 290 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004yIuWwjx07lWLuC7Cf090f01008HEC0k01", 291 | "cover": "http://vip.storage.weibo.com/gifimg_source/b69d380450960ac244821d6f73ab5f14.png", 292 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/b69d380450960ac244821d6f73ab5f14.png", 293 | "thumb": "http://vip.storage.weibo.com/gifimg_source/943dff183ab98fd139a3f982a19eed0f.png", 294 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/0730059df27edb7a7cac5b29940607ad.png", 295 | "version": "1", 296 | "silence": "0", 297 | "type": "1", 298 | "cate_id": "8", 299 | "jump_url": "", 300 | "down_status": 1 301 | }, 302 | { 303 | "id": "86", 304 | "pkg_name": "Hamicat哈咪猫", 305 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0025meWejx07hPI1u6Sj090f01004UiT0k01", 306 | "cover": "http://vip.storage.weibo.com/gifimg_source/b19de42362c97c82a53c44e23075c354.png", 307 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/b19de42362c97c82a53c44e23075c354.png", 308 | "thumb": "http://vip.storage.weibo.com/gifimg_source/16f7eff629208cc5c261a3f8c6302f6c.png", 309 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/919002ac8df0c91c6fb06dd8b3264b4e.png", 310 | "version": "1", 311 | "silence": "0", 312 | "type": "1", 313 | "cate_id": "8", 314 | "jump_url": "", 315 | "down_status": 1 316 | }, 317 | { 318 | "id": "90", 319 | "pkg_name": "哈咪猫朋友咪蒂", 320 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003gEIAyjx07kyQuuMbC090f01004fR00k01", 321 | "cover": "http://vip.storage.weibo.com/gifimg_source/0884927f260c1b2e6af5b1c1ef75c61b.png", 322 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/0884927f260c1b2e6af5b1c1ef75c61b.png", 323 | "thumb": "http://vip.storage.weibo.com/gifimg_source/6dc682167998ceae6c001cc242f7c373.png", 324 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/85a4769d78c5bb3922d4652e33c66cd3.png", 325 | "version": "1", 326 | "silence": "0", 327 | "type": "1", 328 | "cate_id": "8", 329 | "jump_url": "", 330 | "down_status": 1 331 | }, 332 | { 333 | "id": "101", 334 | "pkg_name": "直直来啦", 335 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001EveTQjx07j7n1WfCU090f01007r9r0k01", 336 | "cover": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/002ZPpuqjx07fMpEeMn60907010007qa0k01.png", 337 | "cover_fillet": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/zhizhi_fangjiao.png", 338 | "thumb": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/zhizhi_tab.png", 339 | "thumb_gray": "https://h5.sinaimg.cn/upload/1071/632/2018/10/29/zhizhi_huise.png", 340 | "version": "1", 341 | "silence": "0", 342 | "type": "1", 343 | "cate_id": "8", 344 | "jump_url": "", 345 | "down_status": 1 346 | }, 347 | { 348 | "id": "108", 349 | "pkg_name": "软萌大叔胡子碰碰", 350 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003RsU4Ojx07lCg5Rt0H090f01005PF60k01", 351 | "cover": "http://vip.storage.weibo.com/gifimg_source/44966d5685c7552a3e1453188f8b0076.png", 352 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/44966d5685c7552a3e1453188f8b0076.png", 353 | "thumb": "http://vip.storage.weibo.com/gifimg_source/ed3cf28c553a7b7632cfe0e477ec9157.png", 354 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/dbed451cb0cc913989c1c522b9d80e99.png", 355 | "version": "1", 356 | "silence": "0", 357 | "type": "1", 358 | "cate_id": "8", 359 | "jump_url": "", 360 | "down_status": 1 361 | }, 362 | { 363 | "id": "109", 364 | "pkg_name": "美男陪你看世界杯", 365 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0029Atebjx07lCgB37rp090f01005QQ40k01", 366 | "cover": "http://vip.storage.weibo.com/gifimg_source/f9403537f26e9215cd2663bef42a0121.png", 367 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/f9403537f26e9215cd2663bef42a0121.png", 368 | "thumb": "http://vip.storage.weibo.com/gifimg_source/cbcd41bffc40be581884bcc8d3b639f9.png", 369 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/46a24bf14511fa285556228ec2e624ae.png", 370 | "version": "1", 371 | "silence": "0", 372 | "type": "1", 373 | "cate_id": "8", 374 | "jump_url": "", 375 | "down_status": 1 376 | }, 377 | { 378 | "id": "110", 379 | "pkg_name": "猫与熊奋斗篇", 380 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001A4L6fjx07lCh65X7h090f01009Ihi0k01", 381 | "cover": "http://vip.storage.weibo.com/gifimg_source/46928cff8a1e9999f629daf7ac24b4b1.png", 382 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/46928cff8a1e9999f629daf7ac24b4b1.png", 383 | "thumb": "http://vip.storage.weibo.com/gifimg_source/0db75961a19b4fa55f49db2e5a9c35c3.png", 384 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/90397c672352e4d3d3f8485751ebbe1a.png", 385 | "version": "1", 386 | "silence": "0", 387 | "type": "1", 388 | "cate_id": "8", 389 | "jump_url": "", 390 | "down_status": 1 391 | }, 392 | { 393 | "id": "111", 394 | "pkg_name": "猫与熊之眼神", 395 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001hdZDEjx07lCgMsgLu090f01003OD90k01", 396 | "cover": "http://vip.storage.weibo.com/gifimg_source/104bdb07a1a5a0791aad45550247e3dd.png", 397 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/104bdb07a1a5a0791aad45550247e3dd.png", 398 | "thumb": "http://vip.storage.weibo.com/gifimg_source/e6a4754e7b96ffc30dcce18c478c4232.png", 399 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/c503dc60caab8e313fd9da6f3b405822.png", 400 | "version": "1", 401 | "silence": "0", 402 | "type": "1", 403 | "cate_id": "8", 404 | "jump_url": "", 405 | "down_status": 1 406 | }, 407 | { 408 | "id": "124", 409 | "pkg_name": "制冷少女爱学习篇", 410 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=001IN9oZjx07nAI9n9OM090f01004tFh0k01", 411 | "cover": "http://vip.storage.weibo.com/gifimg_source/ac8e6008c7ba80876b5a2c8305baa302.png", 412 | "cover_fillet": "http://vip.storage.weibo.com/gifimg_source/ac8e6008c7ba80876b5a2c8305baa302.png", 413 | "thumb": "http://vip.storage.weibo.com/gifimg_source/fc22865d20892a43fdf17690917dfbed.png", 414 | "thumb_gray": "http://vip.storage.weibo.com/gifimg_source/5bbc3bcdb54636b276f6bd4d120a1713.png", 415 | "version": "1", 416 | "silence": "0", 417 | "type": "1", 418 | "cate_id": "8", 419 | "jump_url": "", 420 | "down_status": 1 421 | }, 422 | { 423 | "id": "133", 424 | "pkg_name": "啾啾晴", 425 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0022bcPzjx07p2ojITrW090f01006kGB0k01", 426 | "cover": "https://vip.storage.weibo.com/gifimg_source/1646746169d65f32a68b6cc258b105f1.png", 427 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/1646746169d65f32a68b6cc258b105f1.png", 428 | "thumb": "https://vip.storage.weibo.com/gifimg_source/4d03efd7ff654744c11bfcf3179201bc.png", 429 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/8aaaa5948034f595d364a809d39c701d.png", 430 | "version": "1", 431 | "silence": "0", 432 | "type": "1", 433 | "cate_id": "8", 434 | "jump_url": "", 435 | "down_status": 1 436 | }, 437 | { 438 | "id": "136", 439 | "pkg_name": "肖公子", 440 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003PsS1Hjx07qYh9QbVt090f01006PZc0k01", 441 | "cover": "https://vip.storage.weibo.com/gifimg_source/b057a217aa8fd3ca6a2db0cc7a126cd7.png", 442 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/b057a217aa8fd3ca6a2db0cc7a126cd7.png", 443 | "thumb": "https://vip.storage.weibo.com/gifimg_source/363dea010af5f49bc2a300a4402ce704.png", 444 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/8bd7581b55ed542e74eba2fffdd3a207.png", 445 | "version": "1", 446 | "silence": "0", 447 | "type": "1", 448 | "cate_id": "8", 449 | "jump_url": "", 450 | "down_status": 1 451 | }, 452 | { 453 | "id": "138", 454 | "pkg_name": "熊猫滚滚新年篇", 455 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003QxtoZjx07rEVQf1oz090f01007ebt0k01", 456 | "cover": "https://vip.storage.weibo.com/gifimg_source/576a0f9af170cefa17a6093d16c38dbe.png", 457 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/576a0f9af170cefa17a6093d16c38dbe.png", 458 | "thumb": "https://vip.storage.weibo.com/gifimg_source/c327c1752a57325c15fdae2a7f2ecc4c.png", 459 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/b15df80022b0bd5bb652291a859f7ce9.png", 460 | "version": "1", 461 | "silence": "0", 462 | "type": "1", 463 | "cate_id": "8", 464 | "jump_url": "", 465 | "down_status": 1 466 | }, 467 | { 468 | "id": "139", 469 | "pkg_name": "猫猫咪丫", 470 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=002tZBiggx07sAvHgf3W090f01004bw10k01", 471 | "cover": "https://vip.storage.weibo.com/gifimg_source/3b58a18b61bd7c098cff4069aef77283.png", 472 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/3b58a18b61bd7c098cff4069aef77283.png", 473 | "thumb": "https://vip.storage.weibo.com/gifimg_source/e3c4e7c6e52738d71dfc0d605f6229c7.png", 474 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/82d214665baeadb638a83108379cb5a0.png", 475 | "version": "1", 476 | "silence": "0", 477 | "type": "1", 478 | "cate_id": "8", 479 | "jump_url": "", 480 | "down_status": 1 481 | }, 482 | { 483 | "id": "140", 484 | "pkg_name": "小曲奇", 485 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003RMlhIgx07sAvKxOGc090f01004YXJ0k01", 486 | "cover": "https://vip.storage.weibo.com/gifimg_source/777e9eadb52bbea9cf6609b4762de68e.png", 487 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/777e9eadb52bbea9cf6609b4762de68e.png", 488 | "thumb": "https://vip.storage.weibo.com/gifimg_source/d7f33f30e30d21b90a401a6809192a90.png", 489 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/f06edc611cea765a3665ca8a45cf20b0.png", 490 | "version": "1", 491 | "silence": "0", 492 | "type": "1", 493 | "cate_id": "8", 494 | "jump_url": "", 495 | "down_status": 1 496 | }, 497 | { 498 | "id": "141", 499 | "pkg_name": "夜空中最闪亮的星", 500 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0024jv2Xgx07t80yWMYM090f0100F7fW0k01", 501 | "cover": "https://vip.storage.weibo.com/gifimg_source/9935b8d6e6b56030885c92f6848d61c4.png", 502 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/9935b8d6e6b56030885c92f6848d61c4.png", 503 | "thumb": "https://vip.storage.weibo.com/gifimg_source/97a0073a729522f225583792ba02fc7c.png", 504 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/dbfc9297cbaeca1b283bcacaf5ec5163.png", 505 | "version": "1", 506 | "silence": "0", 507 | "type": "1", 508 | "cate_id": "8", 509 | "jump_url": "", 510 | "down_status": 1 511 | }, 512 | { 513 | "id": "142", 514 | "pkg_name": "猫猫咪丫第二弹", 515 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0003cvwZgx07t80JjpSn090f01005t3k0k01", 516 | "cover": "https://vip.storage.weibo.com/gifimg_source/970a200c263c7bed18a72bd71d1dca0b.png", 517 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/970a200c263c7bed18a72bd71d1dca0b.png", 518 | "thumb": "https://vip.storage.weibo.com/gifimg_source/f017c45dbd444ed1142adbb1838941c6.png", 519 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/a9e79edb81d1ceaaf8d6305771ec4916.png", 520 | "version": "1", 521 | "silence": "0", 522 | "type": "1", 523 | "cate_id": "8", 524 | "jump_url": "", 525 | "down_status": 1 526 | }, 527 | { 528 | "id": "143", 529 | "pkg_name": "袋鼠米它", 530 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000oWJ5Jgx07t80JsaQ7090f010048140k01", 531 | "cover": "https://vip.storage.weibo.com/gifimg_source/91d6199297b1d3c38ae35cab68c7ba2a.png", 532 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/91d6199297b1d3c38ae35cab68c7ba2a.png", 533 | "thumb": "https://vip.storage.weibo.com/gifimg_source/ff3e49a09f247580f82049b06eb113fc.png", 534 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/ccc59a2e6b7e500f4ffc061be83f2bb3.png", 535 | "version": "1", 536 | "silence": "0", 537 | "type": "1", 538 | "cate_id": "8", 539 | "jump_url": "", 540 | "down_status": 1 541 | }, 542 | { 543 | "id": "150", 544 | "pkg_name": "三班奉翔", 545 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0030l6Rejx07xXrtLmBp090f01006kYP0k01", 546 | "cover": "https://vip.storage.weibo.com/gifimg_source/e19f34fa2e43c8cc5789f2c7345f03be.png", 547 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/e19f34fa2e43c8cc5789f2c7345f03be.png", 548 | "thumb": "https://vip.storage.weibo.com/gifimg_source/eb32beaf7aa8041f8a3a393f922e2c10.png", 549 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/11da0043802aa45d950056526461120b.png", 550 | "version": "1", 551 | "silence": "0", 552 | "type": "1", 553 | "cate_id": "8", 554 | "jump_url": "", 555 | "down_status": 1 556 | }, 557 | { 558 | "id": "157", 559 | "pkg_name": "小龙格林第一弹", 560 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=002lldNUjx07Dz9sgPVm090f01006S7E0k01", 561 | "cover": "https://vip.storage.weibo.com/gifimg_source/8857598eeb575dfa214435fd27c0de07.png", 562 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/8857598eeb575dfa214435fd27c0de07.png", 563 | "thumb": "https://vip.storage.weibo.com/gifimg_source/c776eb40c649c49e734f816f541dc837.png", 564 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/f6e471dc0af352257bf6efb6fd0d430e.png", 565 | "version": "1", 566 | "silence": "0", 567 | "type": "1", 568 | "cate_id": "8", 569 | "jump_url": "", 570 | "down_status": 1 571 | }, 572 | { 573 | "id": "159", 574 | "pkg_name": "萌二第一弹", 575 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004s0IO7jx07Dz9SkzCM090f0100bjAW0k01", 576 | "cover": "https://vip.storage.weibo.com/gifimg_source/d4837b5c26e057be1121566b73887317.png", 577 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/d4837b5c26e057be1121566b73887317.png", 578 | "thumb": "https://vip.storage.weibo.com/gifimg_source/8e87b102c4f4553215bac342e0870856.png", 579 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/6d22ba63efee558874b14cde0fbbae32.png", 580 | "version": "1", 581 | "silence": "0", 582 | "type": "1", 583 | "cate_id": "8", 584 | "jump_url": "", 585 | "down_status": 1 586 | }, 587 | { 588 | "id": "162", 589 | "pkg_name": "最强蜗牛西能", 590 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=002aF7MNjx07DUjxTlKT090f01007VVB0k01", 591 | "cover": "https://vip.storage.weibo.com/gifimg_source/919a2e17c7984735fa349c7ef0f4d29f.png", 592 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/919a2e17c7984735fa349c7ef0f4d29f.png", 593 | "thumb": "https://vip.storage.weibo.com/gifimg_source/221830c9eb2e339c4262b9b923f30514.png", 594 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/20fbd91a483426f8f0e41e79e95b891c.png", 595 | "version": "1", 596 | "silence": "0", 597 | "type": "1", 598 | "cate_id": "8", 599 | "jump_url": "", 600 | "down_status": 1 601 | }, 602 | { 603 | "id": "163", 604 | "pkg_name": "MODOLIGuys", 605 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=000v5Wzhjx07ExOzAtGg090f01009DvW0k01", 606 | "cover": "https://vip.storage.weibo.com/gifimg_source/d7d3d3c2e6dc173cc879202bb152ceea.png", 607 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/d7d3d3c2e6dc173cc879202bb152ceea.png", 608 | "thumb": "https://vip.storage.weibo.com/gifimg_source/0461487d52912498ff0747e1d3aaec89.png", 609 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/def2894375f645e3cafb1668f7abd8a6.png", 610 | "version": "1", 611 | "silence": "0", 612 | "type": "1", 613 | "cate_id": "8", 614 | "jump_url": "", 615 | "down_status": 1 616 | }, 617 | { 618 | "id": "164", 619 | "pkg_name": "迷彩虎日常篇", 620 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004xiTiCjx07EPkRpHDO090f0100aYP30k01", 621 | "cover": "https://vip.storage.weibo.com/gifimg_source/68f0aa5ba619f3bbb0eca1ffff512655.png", 622 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/68f0aa5ba619f3bbb0eca1ffff512655.png", 623 | "thumb": "https://vip.storage.weibo.com/gifimg_source/25524dc900348557629c7f735348b9f4.png", 624 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/7044d02822328f434ef06207f0214984.png", 625 | "version": "1", 626 | "silence": "0", 627 | "type": "1", 628 | "cate_id": "8", 629 | "jump_url": "", 630 | "down_status": 1 631 | }, 632 | { 633 | "id": "165", 634 | "pkg_name": "金牌特工", 635 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003f83Arjx07FaoK47m0090f01005jLd0k01", 636 | "cover": "https://vip.storage.weibo.com/gifimg_source/7653fb4ec508fc45a495b59edce3a69f.png", 637 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/7653fb4ec508fc45a495b59edce3a69f.png", 638 | "thumb": "https://vip.storage.weibo.com/gifimg_source/1502dd5a8a6c91f085acc753796febc8.png", 639 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/28703b2cdc269edf23b7c11502a36bf6.png", 640 | "version": "1", 641 | "silence": "0", 642 | "type": "1", 643 | "cate_id": "8", 644 | "jump_url": "", 645 | "down_status": 1 646 | }, 647 | { 648 | "id": "166", 649 | "pkg_name": "猴腮雷之日常篇", 650 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=0011l0zVjx07FaoL2BdK090f0100ubAd0k01", 651 | "cover": "https://vip.storage.weibo.com/gifimg_source/b14b26614ae50a42faa88255402f632b.png", 652 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/b14b26614ae50a42faa88255402f632b.png", 653 | "thumb": "https://vip.storage.weibo.com/gifimg_source/0836c7bd1770674ee6f6494161c39858.png", 654 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/e48ec5cedebdb3edb94daa7f764fdb90.png", 655 | "version": "1", 656 | "silence": "0", 657 | "type": "1", 658 | "cate_id": "8", 659 | "jump_url": "", 660 | "down_status": 1 661 | }, 662 | { 663 | "id": "168", 664 | "pkg_name": "士兵小小杜2", 665 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=003VQwTzjx07GtB7aUg0090f0100dqpp0k01", 666 | "cover": "https://vip.storage.weibo.com/gifimg_source/ce8e476ae2da2f3d9e45f0bc839c85a0.png", 667 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/ce8e476ae2da2f3d9e45f0bc839c85a0.png", 668 | "thumb": "https://vip.storage.weibo.com/gifimg_source/2d05059adae428cc13900a8d70dd5342.png", 669 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/44e9dcbbf1f7f61b226b5dd62a7f9645.png", 670 | "version": "1", 671 | "silence": "0", 672 | "type": "1", 673 | "cate_id": "8", 674 | "jump_url": "", 675 | "down_status": 1 676 | }, 677 | { 678 | "id": "172", 679 | "pkg_name": "少女兔的小温暖", 680 | "down_url": "https://new.vip.weibo.cn/Linktodown?usid=004dVSZpjx07K1XSXidi090f0100aTFf0k01", 681 | "cover": "https://vip.storage.weibo.com/gifimg_source/faf9614575498416adea259f516acd16.png", 682 | "cover_fillet": "https://vip.storage.weibo.com/gifimg_source/faf9614575498416adea259f516acd16.png", 683 | "thumb": "https://vip.storage.weibo.com/gifimg_source/2a50da6004320945115807219c343127.png", 684 | "thumb_gray": "https://vip.storage.weibo.com/gifimg_source/8542bab20677f21a8c209d07ec115a5f.png", 685 | "version": "1", 686 | "silence": "0", 687 | "type": "1", 688 | "cate_id": "8", 689 | "jump_url": "", 690 | "down_status": 1 691 | } 692 | ] 693 | } 694 | ], 695 | "pkg_item": [ 696 | { 697 | "pkg_id": "116", 698 | "version": "1" 699 | }, 700 | { 701 | "pkg_id": "147", 702 | "version": "1" 703 | }, 704 | { 705 | "pkg_id": "95", 706 | "version": "1" 707 | }, 708 | { 709 | "pkg_id": "135", 710 | "version": "1" 711 | }, 712 | { 713 | "pkg_id": "137", 714 | "version": "1" 715 | }, 716 | { 717 | "pkg_id": "151", 718 | "version": "1" 719 | }, 720 | { 721 | "pkg_id": "152", 722 | "version": "1" 723 | }, 724 | { 725 | "pkg_id": "156", 726 | "version": "1" 727 | }, 728 | { 729 | "pkg_id": "158", 730 | "version": "1" 731 | }, 732 | { 733 | "pkg_id": "160", 734 | "version": "1" 735 | }, 736 | { 737 | "pkg_id": "171", 738 | "version": "1" 739 | }, 740 | { 741 | "pkg_id": "71", 742 | "version": "1" 743 | }, 744 | { 745 | "pkg_id": "161", 746 | "version": "1" 747 | }, 748 | { 749 | "pkg_id": "169", 750 | "version": "1" 751 | }, 752 | { 753 | "pkg_id": "119", 754 | "version": "1" 755 | }, 756 | { 757 | "pkg_id": "121", 758 | "version": "1" 759 | }, 760 | { 761 | "pkg_id": "117", 762 | "version": "1" 763 | }, 764 | { 765 | "pkg_id": "112", 766 | "version": "1" 767 | }, 768 | { 769 | "pkg_id": "86", 770 | "version": "1" 771 | }, 772 | { 773 | "pkg_id": "90", 774 | "version": "1" 775 | }, 776 | { 777 | "pkg_id": "101", 778 | "version": "1" 779 | }, 780 | { 781 | "pkg_id": "108", 782 | "version": "1" 783 | }, 784 | { 785 | "pkg_id": "109", 786 | "version": "1" 787 | }, 788 | { 789 | "pkg_id": "110", 790 | "version": "1" 791 | }, 792 | { 793 | "pkg_id": "111", 794 | "version": "1" 795 | }, 796 | { 797 | "pkg_id": "124", 798 | "version": "1" 799 | }, 800 | { 801 | "pkg_id": "133", 802 | "version": "1" 803 | }, 804 | { 805 | "pkg_id": "136", 806 | "version": "1" 807 | }, 808 | { 809 | "pkg_id": "138", 810 | "version": "1" 811 | }, 812 | { 813 | "pkg_id": "139", 814 | "version": "1" 815 | }, 816 | { 817 | "pkg_id": "140", 818 | "version": "1" 819 | }, 820 | { 821 | "pkg_id": "141", 822 | "version": "1" 823 | }, 824 | { 825 | "pkg_id": "142", 826 | "version": "1" 827 | }, 828 | { 829 | "pkg_id": "143", 830 | "version": "1" 831 | }, 832 | { 833 | "pkg_id": "150", 834 | "version": "1" 835 | }, 836 | { 837 | "pkg_id": "157", 838 | "version": "1" 839 | }, 840 | { 841 | "pkg_id": "159", 842 | "version": "1" 843 | }, 844 | { 845 | "pkg_id": "162", 846 | "version": "1" 847 | }, 848 | { 849 | "pkg_id": "163", 850 | "version": "1" 851 | }, 852 | { 853 | "pkg_id": "164", 854 | "version": "1" 855 | }, 856 | { 857 | "pkg_id": "165", 858 | "version": "1" 859 | }, 860 | { 861 | "pkg_id": "166", 862 | "version": "1" 863 | }, 864 | { 865 | "pkg_id": "168", 866 | "version": "1" 867 | }, 868 | { 869 | "pkg_id": "172", 870 | "version": "1" 871 | } 872 | ], 873 | "banner": [ 874 | { 875 | "content": "" 876 | }, 877 | { 878 | "content": "" 879 | }, 880 | { 881 | "content": "" 882 | } 883 | ], 884 | "callback": 0, 885 | "uid": 2316757461, 886 | "F": "", 887 | "manageScheme": "sinaweibo://myvipemoticon?fromgifmall=1", 888 | "pay_url": "sinaweibo://wbox?id=5cc40d2fb5fbd&return_url=https%3A%2F%2Fnew.vip.weibo.cn%2Fgifimg%2Fmall%3Fcallback%3D1&F=tq_pldt_dtsc" 889 | } 890 | } -------------------------------------------------------------------------------- /file/emoji_2.json: -------------------------------------------------------------------------------- 1 | {"code":100000,"msg":"success","data":{"isWebBrowser":false,"cate_item":[{"id":"4","name":"卡通搞笑","sort":"7","type":"1","type_desc":"会员","list":[{"id":"42","pkg_name":"阎王不高兴","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/yanwang_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/03/17/409/cover_yan.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/03/17/409/cover_yan.png","thumb":"https://h5.sinaimg.cn/upload/2017/03/13/409/tab_yanwang.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/03/17/409/tab2_yanwang.png","version":"1.0","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"44","pkg_name":"污鸡","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/wuji_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/03/31/409/cover_wuji.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/03/31/409/cover_wuji.png","thumb":"https://h5.sinaimg.cn/upload/2017/03/31/409/tab_wuji2.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/03/31/409/tab_wuji.png","version":"1.0","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"74","pkg_name":"趣画东巴文","down_url":"https://new.vip.weibo.cn/Linktodown?usid=001MPMZHjx07eAHs2gsg090f010070hf0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/dong_yuanjioa.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/qu_fangjiao.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/qu_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/qu_huise.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"50","pkg_name":"女常第1弹","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/24_10.zip","cover":"http://wx1.sinaimg.cn/large/9c0f9a41ly1ff9h8j6sxaj206w06waan.jpg","cover_fillet":"http://wx1.sinaimg.cn/large/9c0f9a41ly1ff9h8j6sxaj206w06waan.jpg","thumb":"http://wx3.sinaimg.cn/large/9c0f9a41ly1ff9h4p7n0xj2020020dgc.jpg","thumb_gray":"http://wx1.sinaimg.cn/large/9c0f9a41ly1ff9h4mcjoyj20200200t2.jpg","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"60","pkg_name":"天屎臭琪","down_url":"https://new.vip.weibo.cn/linktodown?usid=002o3iegjx07bSVp3l3N090f01001C9e0k01","cover":"http://wx4.sinaimg.cn/large/5dde2cefly1ffuin52rhsj206w06wdgi.jpg","cover_fillet":"http://wx4.sinaimg.cn/large/5dde2cefly1ffuin52rhsj206w06wdgi.jpg","thumb":"http://wx1.sinaimg.cn/large/5dde2cefly1ffuimx8dl3j2020020mxh.jpg","thumb_gray":"http://wx4.sinaimg.cn/large/5dde2cefly1ffuimz1nn0j20200203yq.jpg","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"68","pkg_name":"杰克鸡","down_url":"https://new.vip.weibo.cn/linktodown?usid=002HqGDZjx07dC79t1RJ090f010078Fy0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/jack_yj.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/jack_fj.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/jack_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/jack_huise.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"69","pkg_name":"大本熊","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003LO7Uijx07udagcAWs090f01003whn0k01","cover":"https://h5.sinaimg.cn/upload/1004/553/2019/05/29/biaoqing3.png","cover_fillet":"https://h5.sinaimg.cn/upload/1004/553/2019/05/29/biaoqing3.png","thumb":"https://h5.sinaimg.cn/upload/1004/553/2019/05/29/biaoqing1.png","thumb_gray":"https://h5.sinaimg.cn/upload/1004/553/2019/05/29/biaoqing2.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"70","pkg_name":"大本熊嘻哈篇","down_url":"https://new.vip.weibo.cn/linktodown?usid=004bOfQdjx07dC7kBGJN090f01005rgx0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/benxiong_yj.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/benxiong_fj.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/benxiong_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/benxiong_huise.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"78","pkg_name":"直叔很忙","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003CfsDqjx07fFR8lAnC090f01007D0n0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/mang_yuanjiao.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/mang_fangjiao.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/mang_TAB.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/mang_huise.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1},{"id":"144","pkg_name":"丢勒斑马","down_url":"https://new.vip.weibo.cn/Linktodown?usid=001vpXCJgx07v6NgizBt090f01005X2X0k01","cover":"https://vip.storage.weibo.com/gifimg_source/95a67a80e8070cce8b8920d842c9f365.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/95a67a80e8070cce8b8920d842c9f365.png","thumb":"https://vip.storage.weibo.com/gifimg_source/b6a4b1536e4ff9429ea75ce0cff13d5d.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/e495c0b4970747041edc07919cd37862.png","version":"1","silence":"0","type":"1","cate_id":"4","jump_url":"","down_status":1}]},{"id":"3","name":"卡通萌宠","sort":"7","type":"1","type_desc":"会员","list":[{"id":"20","pkg_name":"鹿小喃","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/luxiaonan_10.zip","cover":"https://h5.sinaimg.cn/upload/2016/12/12/409/cover_lu.png","cover_fillet":"https://h5.sinaimg.cn/upload/2016/12/12/409/cover_lu.png","thumb":"https://h5.sinaimg.cn/upload/2016/12/12/409/tab_lu.png","thumb_gray":"https://h5.sinaimg.cn/upload/2016/12/12/409/tab2_lu.png","version":"1.0","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"49","pkg_name":"灰黄鸡","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/12_10.zip","cover":"http://wx2.sinaimg.cn/large/006c38dtly1ffaw990ugfj306w06waas.jpg","cover_fillet":"http://wx2.sinaimg.cn/large/006c38dtly1ffaw990ugfj306w06waas.jpg","thumb":"http://wx1.sinaimg.cn/large/006c38dtly1ffaw7erea4j3020020aaa.jpg","thumb_gray":"http://wx2.sinaimg.cn/large/006c38dtly1ffaw5d5xc3j30200203ya.jpg","version":"1","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"19","pkg_name":"二发熊","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/erfa_10.zip","cover":"https://h5.sinaimg.cn/upload/2016/12/12/cover_erfa.png","cover_fillet":"https://h5.sinaimg.cn/upload/2016/12/12/cover_erfa.png","thumb":"https://h5.sinaimg.cn/upload/2016/12/12/409/tab_erfa.png","thumb_gray":"https://h5.sinaimg.cn/upload/2016/12/12/tab2_erfa.png","version":"1.0","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"46","pkg_name":"Keeny","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/kenny_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/04/10/409/cover_kenny.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/04/10/409/cover_kenny.png","thumb":"https://h5.sinaimg.cn/upload/2017/04/10/409/tab_kenny.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/04/10/409/tab2_kenny.png","version":"1.0","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"67","pkg_name":"淘淘日常第二弹","down_url":"https://new.vip.weibo.cn/linktodown?usid=003lY8cyjx07dC6Yyzw3090f0100a3aY0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/hai_yj.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/hai_fj.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/hai_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/hai_huise.png","version":"1.0","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"79","pkg_name":"猪小屁","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000lwu2Fjx07gbOPXdpK090f01007UaU0k01","cover":"http://wx1.sinaimg.cn/large/83db4fbdly1flwmbvd6abj206w06waas.jpg","cover_fillet":"http://wx1.sinaimg.cn/large/83db4fbdly1flwmbvd6abj206w06waas.jpg","thumb":"http://vip.storage.weibo.com/gifimg_source/96be09162add4619504601725e9039ec.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/5c95f454d1700b25f3d8e5c4323e03ac.png","version":"1","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"98","pkg_name":"一品芝麻狐","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003PcmLNjx07j1dhXq6Q090f0100kcLx0k01","cover":"http://vip.storage.weibo.com/gifimg_source/5b1696da91e96e85c92a4da2a3ca32a9.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/5b1696da91e96e85c92a4da2a3ca32a9.png","thumb":"http://vip.storage.weibo.com/gifimg_source/955d22591d231f3c431092cf769f038a.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/0319bc86b5ed0676b987af5abdffd6f0.png","version":"1","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1},{"id":"146","pkg_name":"宫尼吉蛙日常篇","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000DRA9ugx07va2A1hIP090f0100bRee0k01","cover":"https://vip.storage.weibo.com/gifimg_source/72e4f438f29daba236939fa698805204.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/72e4f438f29daba236939fa698805204.png","thumb":"https://vip.storage.weibo.com/gifimg_source/b769d8d1cfff03c4be3ae44cb5203039.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/32f37328c7e795440508529723f6ad37.png","version":"1","silence":"0","type":"1","cate_id":"3","jump_url":"","down_status":1}]},{"id":"9","name":"卡通形象","sort":"7","type":"1","type_desc":"会员","list":[{"id":"105","pkg_name":"彩虹宝宝","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000NeHoUjx07lcx17TEA090f0100cacS0k01","cover":"http://vip.storage.weibo.com/gifimg_source/a94087168baf2188cbd1c52f1188963c.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/a94087168baf2188cbd1c52f1188963c.png","thumb":"http://vip.storage.weibo.com/gifimg_source/6dbaa0972faa1f8f040b1e0cd5982240.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/d9078dee525b1545d652369a515f97fb.png","version":"1","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"18","pkg_name":"牛轰轰","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/niu_10.zip","cover":"https://h5.sinaimg.cn/upload/2016/12/05/409/niu_yulan.png","cover_fillet":"https://h5.sinaimg.cn/upload/2016/12/05/409/niu_yulan.png","thumb":"https://h5.sinaimg.cn/upload/2016/12/05/409/niu_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/2016/12/05/409/niu_tab2.png","version":"1.0","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"34","pkg_name":"葱花君","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/conghuajun_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/01/23/cover_conghua.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/01/23/cover_conghua.png","thumb":"https://h5.sinaimg.cn/upload/2017/01/23/Tab1_conghua.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/01/23/Tab2_conghua.png","version":"1.0","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"38","pkg_name":"芮小凸和芮小凹","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/rui_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/02/15/494/cover_rui.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/02/15/494/cover_rui.png","thumb":"https://h5.sinaimg.cn/upload/2017/02/15/494/tab_rui.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/02/15/494/tab2_rui.png","version":"1.0","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"51","pkg_name":"哈喽葡星人","down_url":"https://new.vip.weibo.cn/Linktodown?usid=002GO3zSjx07n9wwgC1V090f01007GqM0k01","cover":"http://wx2.sinaimg.cn/large/006B16gQly1ffe2afevjrj306w06w40s.jpg","cover_fillet":"http://wx2.sinaimg.cn/large/006B16gQly1ffe2afevjrj306w06w40s.jpg","thumb":"http://wx1.sinaimg.cn/large/006B16gQly1ffe1vxa88bj3020020jr8.jpg","thumb_gray":"http://wx2.sinaimg.cn/large/006B16gQly1ffe1xuxd6mj3020020web.jpg","version":"1","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"62","pkg_name":"兔巾巾","down_url":"https://new.vip.weibo.cn/linktodown?usid=002hAqQfjx07bSYyDpw4090f01003vUU0k01","cover":"http://wx4.sinaimg.cn/large/5dde2cefly1ffwu0rvctej206w06wq3o.jpg","cover_fillet":"http://wx4.sinaimg.cn/large/5dde2cefly1ffwu0rvctej206w06wq3o.jpg","thumb":"http://wx2.sinaimg.cn/large/5dde2cefly1ffwu0f2ov0j2020020glx.jpg","thumb_gray":"http://wx4.sinaimg.cn/large/5dde2cefly1ffwu0hamdgj2020020glu.jpg","version":"1","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"83","pkg_name":"微微酱工作篇","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000t90mUjx07hEBgaWTJ090f01003FtT0k01","cover":"http://wx2.sinaimg.cn/large/006TVtpmly1fmgfp2ydsgj306w06wmyn.jpg","cover_fillet":"http://wx2.sinaimg.cn/large/006TVtpmly1fmgfp2ydsgj306w06wmyn.jpg","thumb":"http://vip.storage.weibo.com/gifimg_source/9c07c238abc446755851011ea810bd1a.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/cabed30edaac3d252b8f07be72755f90.png","version":"1","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1},{"id":"145","pkg_name":"韬斯曼","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000twqQ1gx07va2y5Y4L090f01008Q9f0k01","cover":"https://vip.storage.weibo.com/gifimg_source/9980b4795e6b494ffb7007f42b98db56.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/9980b4795e6b494ffb7007f42b98db56.png","thumb":"https://vip.storage.weibo.com/gifimg_source/6b41fc666e074e6281a868fd62956bb1.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/004491523a702aa492b49608714b7e55.png","version":"1","silence":"0","type":"1","cate_id":"9","jump_url":"","down_status":1}]},{"id":"5","name":"男明星","sort":"6","type":"1","type_desc":"会员","list":[{"id":"39","pkg_name":"王俊凯","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/wangjunkai_13.zip","cover":"https://h5.sinaimg.cn/upload/2017/03/08/junkai/1.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/03/08/junkai/1.png","thumb":"https://h5.sinaimg.cn/upload/2017/03/08/junkai/tab/1.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/03/08/junkai/tab/2.png","version":"1.3","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"40","pkg_name":"王源","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/wangyuan_11.zip","cover":"https://h5.sinaimg.cn/upload/2017/03/08/wangyuan/icon/1.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/03/08/wangyuan/icon/1.png","thumb":"https://h5.sinaimg.cn/upload/2017/03/08/wangyuan/tab/1.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/03/08/wangyuan/tab/2.png","version":"1.1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"41","pkg_name":"易烊千玺","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/qianxi_12.zip","cover":"https://h5.sinaimg.cn/upload/2017/03/08/qianxi/iocn/1.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/03/08/qianxi/iocn/1.png","thumb":"https://h5.sinaimg.cn/upload/2017/03/08/qianxi/tab/1.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/03/08/qianxi/tab/2.png","version":"1.2","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"24","pkg_name":"黄子韬","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/huangzitao_10.zip","cover":"https://h5.sinaimg.cn/upload/2016/12/23/409/cover_huangzitao.png","cover_fillet":"https://h5.sinaimg.cn/upload/2016/12/23/409/cover_huangzitao.png","thumb":"http://h5.sinaimg.cn/upload/2016/12/23/409/tab_huangzitao.png","thumb_gray":"http://h5.sinaimg.cn/upload/2016/12/23/409/tab2_huangzitao.png","version":"1.0","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"73","pkg_name":"2017王凯欢享月","down_url":"https://new.vip.weibo.cn/Linktodown?usid=001jonrdjx07e0hg5SfB090f01005vga0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/wang_yj.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/wang_fj.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/wang_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/wang_huise.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"76","pkg_name":"许魏洲","down_url":"https://new.vip.weibo.cn/Linktodown?usid=002LZdYDjx07f8uncfoY090f01003QZM0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/xuweizhou_yuanj.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/xuweiz_fj.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/xuweiz_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/30/xuweiz_huise.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"77","pkg_name":"黄景瑜","down_url":"https://new.vip.weibo.cn/Linktodown?usid=002Y2X25jx07fjqruekv090f0100wbif0k01","cover":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/huang_yuanjiao.png","cover_fillet":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/huang_fangjiao.png","thumb":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/huang_tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/1071/632/2018/10/29/huang_huise.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"128","pkg_name":"邢昭林","down_url":"https://new.vip.weibo.cn/Linktodown?usid=001I9Bfjjx07oG750LNl090f0100tsfu0k01","cover":"https://vip.storage.weibo.com/gifimg_source/3813bb27ae4fc4e35868a63c3b7fae44.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/3813bb27ae4fc4e35868a63c3b7fae44.png","thumb":"https://vip.storage.weibo.com/gifimg_source/21c4eb3b73da9db97b9b500e775ea3c9.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/7e8a8e4aca7ef513e4b70a4775f48505.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"129","pkg_name":"任嘉伦","down_url":"https://new.vip.weibo.cn/Linktodown?usid=0028BR4Rjx07oEDVs8qA090f0100vs8f0k01","cover":"https://vip.storage.weibo.com/gifimg_source/bf2365758021541d28a1f5add7ed1a6c.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/bf2365758021541d28a1f5add7ed1a6c.png","thumb":"https://vip.storage.weibo.com/gifimg_source/d2e5bf010e31b3f19f5c3fc37f02b620.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/ec290c596c3ef0ab0b09ee64d2963fb6.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1},{"id":"134","pkg_name":"郭麒麟","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003DtkZ4jx07pf3IOcKz090f0100oqR90k01","cover":"https://vip.storage.weibo.com/gifimg_source/b9ddb92804f3cfbbd40a45bd4039bd11.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/b9ddb92804f3cfbbd40a45bd4039bd11.png","thumb":"https://vip.storage.weibo.com/gifimg_source/7a0b676f4e6b417e79fb4fc35241e847.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/211ec0ce05cebdb51adbde376e9f7050.png","version":"1","silence":"0","type":"1","cate_id":"5","jump_url":"","down_status":1}]},{"id":"2","name":"女明星","sort":"5","type":"1","type_desc":"会员","list":[{"id":"5","pkg_name":"赵丽颖","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/zhaoliying_10.zip","cover":"https://h5.sinaimg.cn/upload/2016/11/16/494/banner_248x248.png","cover_fillet":"https://h5.sinaimg.cn/upload/2016/11/16/494/banner_248x248.png","thumb":"https://h5.sinaimg.cn/upload/2016/11/16/494/72X72.png","thumb_gray":"https://h5.sinaimg.cn/upload/2016/11/16/494/72X72quse.png","version":"1.0","silence":"0","type":"1","cate_id":"2","jump_url":"","down_status":1},{"id":"36","pkg_name":"舒淇","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/shuqi_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/01/23/494/cover_shuqi.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/01/23/494/cover_shuqi.png","thumb":"https://h5.sinaimg.cn/upload/2017/01/23/494/tab_shuqi.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/01/23/494/tab2_shuqi.png","version":"1.0","silence":"0","type":"1","cate_id":"2","jump_url":"","down_status":1},{"id":"48","pkg_name":"刘涛","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/21_10.zip","cover":"http://wx1.sinaimg.cn/large/a1d3feably1ffaop9v54mj206w06wgmr.jpg","cover_fillet":"http://wx1.sinaimg.cn/large/a1d3feably1ffaop9v54mj206w06wgmr.jpg","thumb":"http://wx1.sinaimg.cn/large/a1d3feably1ffaop2zbm6j20200200sp.jpg","thumb_gray":"http://wx4.sinaimg.cn/large/a1d3feably1ffaop4yl59j2020020jr9.jpg","version":"1","silence":"0","type":"1","cate_id":"2","jump_url":"","down_status":1},{"id":"97","pkg_name":"迪丽热巴","down_url":"https://new.vip.weibo.cn/Linktodown?usid=000E0nJYjx07iUxe8HIH090f0100vvl40k01","cover":"http://vip.storage.weibo.com/gifimg_source/19ca554387afb87f55e331b0b225ff6f.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/19ca554387afb87f55e331b0b225ff6f.png","thumb":"http://vip.storage.weibo.com/gifimg_source/76c5214b20c383e5c1f3fb4ac3b1fa93.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/c9097c3559ad4d73384f155e1e9da7f2.png","version":"1","silence":"0","type":"1","cate_id":"2","jump_url":"","down_status":1}]},{"id":"10","name":"综艺","sort":"0","type":"1","type_desc":"会员","list":[{"id":"103","pkg_name":"黄子韬发起人表情","down_url":"https://new.vip.weibo.cn/Linktodown?usid=001Luso4jx07kI29tRMP090f0100rY8k0k01","cover":"http://vip.storage.weibo.com/gifimg_source/aec30351022747907540ccadb44fdee3.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/aec30351022747907540ccadb44fdee3.png","thumb":"http://vip.storage.weibo.com/gifimg_source/65004898a73ebe86b6adf2fdad57ff34.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/e21369626a12a79090a6efdf5f4aad32.png","version":"1","silence":"0","type":"1","cate_id":"10","jump_url":"","down_status":1},{"id":"30","pkg_name":"向往的生活","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/xiangwang_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/01/16/494/cover_xiaoh.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/01/16/494/cover_xiaoh.png","thumb":"https://h5.sinaimg.cn/upload/2017/01/16/494/tab_xiaoh.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/01/16/494/tab2_xiaoh.png","version":"1.0","silence":"0","type":"1","cate_id":"10","jump_url":"","down_status":1},{"id":"47","pkg_name":"脑sir的日常","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/25_15.zip","cover":"https://wx2.sinaimg.cn/large/005wxMGBly1ffbfkqrolmj306w06wgmv.jpg","cover_fillet":"https://wx2.sinaimg.cn/large/005wxMGBly1ffbfkqrolmj306w06wgmv.jpg","thumb":"https://wx4.sinaimg.cn/large/005wxMGBly1ffbfkyt4tfj3020020mx2.jpg","thumb_gray":"https://wx4.sinaimg.cn/large/005wxMGBly1ffbfis3y4lj3020020aab.jpg","version":"1.5","silence":"0","type":"1","cate_id":"10","jump_url":"","down_status":1}]},{"id":"11","name":"影视","sort":"0","type":"1","type_desc":"会员","list":[{"id":"80","pkg_name":"琅琊榜之风起长林","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003ixbqBjx07hdomEGIw090f0100wH2n0k01","cover":"http://vip.storage.weibo.com/gifimg_source/87ffed5e8ad8c49f33f2c5323064161a.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/87ffed5e8ad8c49f33f2c5323064161a.png","thumb":"http://vip.storage.weibo.com/gifimg_source/0e98fa1730fef8088afb0088ce2c2588.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/2d192326e8ff3d964c85c183b834f6af.png","version":"1","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1},{"id":"52","pkg_name":"欢乐颂五美","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/huanleshong_10.zip","cover":"https://h5.sinaimg.cn/upload/2017/05/27/545/huanlesong.png","cover_fillet":"https://h5.sinaimg.cn/upload/2017/05/27/545/huanlesong.png","thumb":"https://h5.sinaimg.cn/upload/2017/05/26/409/tab.png","thumb_gray":"https://h5.sinaimg.cn/upload/2017/05/26/409/tab2.png","version":"1.0","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1},{"id":"53","pkg_name":"欢乐颂男神","down_url":"https://h5.sinaimg.cn/apps/vip/img/gifimg/pkg/41_10.zip","cover":"http://wx1.sinaimg.cn/large/a1d3feably1ffys2wmxevj206w06w772.jpg","cover_fillet":"http://wx1.sinaimg.cn/large/a1d3feably1ffys2wmxevj206w06w772.jpg","thumb":"http://wx4.sinaimg.cn/large/a1d3feably1ffys1etjupj2020020dfr.jpg","thumb_gray":"http://wx3.sinaimg.cn/large/a1d3feably1ffys1h4dhvj2020020t8l.jpg","version":"1","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1},{"id":"93","pkg_name":"一路繁花相送","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003qU4RBjx07i9gh2KPS090f0100wQY30k01","cover":"http://vip.storage.weibo.com/gifimg_source/939e2140e3a6966584b3b3209345a5a1.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/939e2140e3a6966584b3b3209345a5a1.png","thumb":"http://vip.storage.weibo.com/gifimg_source/46e93e0a32bd5a1287fac3894c2a3c6f.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/08f0b129f2d42e14a2625d015c420c91.png","version":"1","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1},{"id":"94","pkg_name":"谢晓飞","down_url":"https://new.vip.weibo.cn/Linktodown?usid=00025FVcjx07iJDrf7aL090f0100s0RB0k01","cover":"http://vip.storage.weibo.com/gifimg_source/b36e7061fb3c5c8dad37ae21edb5b020.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/b36e7061fb3c5c8dad37ae21edb5b020.png","thumb":"http://vip.storage.weibo.com/gifimg_source/bde0e00347baee85d24dd29e4d680aff.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/af064e89df6700b06dd0db506a5517ac.png","version":"1","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1},{"id":"148","pkg_name":"陈情令","down_url":"https://new.vip.weibo.cn/Linktodown?usid=003dTBtjgx07vSr40FbO090f0100KNcV0k01","cover":"https://vip.storage.weibo.com/gifimg_source/3f20226258fe14f3fab32d957de67d81.png","cover_fillet":"https://vip.storage.weibo.com/gifimg_source/3f20226258fe14f3fab32d957de67d81.png","thumb":"https://vip.storage.weibo.com/gifimg_source/afb92577e49d3f60e5e67d971cf4460d.png","thumb_gray":"https://vip.storage.weibo.com/gifimg_source/d74c0d86b9be8d51d3fc48debc493b75.png","version":"1","silence":"0","type":"1","cate_id":"11","jump_url":"","down_status":1}]},{"id":"12","name":"其他","sort":"0","type":"1","type_desc":"会员","list":[{"id":"84","pkg_name":"平昌冬奥吉祥物","down_url":"https://new.vip.weibo.cn/Linktodown?usid=004iNkSijx07hKyKY45a090f010095vO0k01","cover":"http://vip.storage.weibo.com/gifimg_source/29fa0006f471f5349545c7fedf696519.png","cover_fillet":"http://vip.storage.weibo.com/gifimg_source/29fa0006f471f5349545c7fedf696519.png","thumb":"http://vip.storage.weibo.com/gifimg_source/e0b24e6ce5e159728e7ddaf97b1407ab.png","thumb_gray":"http://vip.storage.weibo.com/gifimg_source/bf1b37dd4ecffd1e1f7bdf5df73eafb5.png","version":"1","silence":"0","type":"1","cate_id":"12","jump_url":"","down_status":1}]}],"pkg_item":[{"pkg_id":"42","version":"1.0"},{"pkg_id":"44","version":"1.0"},{"pkg_id":"74","version":"1"},{"pkg_id":"50","version":"1"},{"pkg_id":"60","version":"1"},{"pkg_id":"68","version":"1"},{"pkg_id":"69","version":"1"},{"pkg_id":"70","version":"1"},{"pkg_id":"78","version":"1"},{"pkg_id":"144","version":"1"},{"pkg_id":"20","version":"1.0"},{"pkg_id":"49","version":"1"},{"pkg_id":"19","version":"1.0"},{"pkg_id":"46","version":"1.0"},{"pkg_id":"67","version":"1.0"},{"pkg_id":"79","version":"1"},{"pkg_id":"98","version":"1"},{"pkg_id":"146","version":"1"},{"pkg_id":"105","version":"1"},{"pkg_id":"18","version":"1.0"},{"pkg_id":"34","version":"1.0"},{"pkg_id":"38","version":"1.0"},{"pkg_id":"51","version":"1"},{"pkg_id":"62","version":"1"},{"pkg_id":"83","version":"1"},{"pkg_id":"145","version":"1"},{"pkg_id":"39","version":"1.3"},{"pkg_id":"40","version":"1.1"},{"pkg_id":"41","version":"1.2"},{"pkg_id":"24","version":"1.0"},{"pkg_id":"73","version":"1"},{"pkg_id":"76","version":"1"},{"pkg_id":"77","version":"1"},{"pkg_id":"128","version":"1"},{"pkg_id":"129","version":"1"},{"pkg_id":"134","version":"1"},{"pkg_id":"5","version":"1.0"},{"pkg_id":"36","version":"1.0"},{"pkg_id":"48","version":"1"},{"pkg_id":"97","version":"1"},{"pkg_id":"103","version":"1"},{"pkg_id":"30","version":"1.0"},{"pkg_id":"47","version":"1.5"},{"pkg_id":"80","version":"1"},{"pkg_id":"52","version":"1.0"},{"pkg_id":"53","version":"1"},{"pkg_id":"93","version":"1"},{"pkg_id":"94","version":"1"},{"pkg_id":"148","version":"1"},{"pkg_id":"84","version":"1"}],"banner":[{"content":""},{"content":""},{"content":""}],"callback":0,"uid":2316757461,"F":"","manageScheme":"sinaweibo://myvipemoticon?fromgifmall=1","pay_url":"sinaweibo://wbox?id=5cc40d2fb5fbd&return_url=https%3A%2F%2Fnew.vip.weibo.cn%2Fgifimg%2Fmall%3Fcallback%3D1&F=tq_pldt_dtsc"}} -------------------------------------------------------------------------------- /file/nobyda_api.js: -------------------------------------------------------------------------------- 1 | 2 | function nobyda() { 3 | const start = Date.now() 4 | const isRequest = typeof $request != "undefined" 5 | const isSurge = typeof $httpClient != "undefined" 6 | const isQuanX = typeof $task != "undefined" 7 | const isLoon = typeof $loon != "undefined" 8 | const isJSBox = typeof $app != "undefined" && typeof $http != "undefined" 9 | const isNode = typeof require == "function" && !isJSBox; 10 | const NodeSet = 'CookieSet.json' 11 | const node = (() => { 12 | if (isNode) { 13 | const request = require('request'); 14 | const fs = require("fs"); 15 | const path = require("path"); 16 | return ({ 17 | request, 18 | fs, 19 | path 20 | }) 21 | } else { 22 | return (null) 23 | } 24 | })() 25 | const notify = (title, subtitle, message, rawopts) => { 26 | const Opts = (rawopts) => { //Modified from https://github.com/chavyleung/scripts/blob/master/Env.js 27 | if (!rawopts) return rawopts 28 | if (typeof rawopts === 'string') { 29 | if (isLoon) return rawopts 30 | else if (isQuanX) return { 31 | 'open-url': rawopts 32 | } 33 | else if (isSurge) return { 34 | url: rawopts 35 | } 36 | else return undefined 37 | } else if (typeof rawopts === 'object') { 38 | if (isLoon) { 39 | let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] 40 | let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] 41 | return { 42 | openUrl, 43 | mediaUrl 44 | } 45 | } else if (isQuanX) { 46 | let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl 47 | let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl 48 | return { 49 | 'open-url': openUrl, 50 | 'media-url': mediaUrl 51 | } 52 | } else if (isSurge) { 53 | let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] 54 | return { 55 | url: openUrl 56 | } 57 | } 58 | } else { 59 | return undefined 60 | } 61 | } 62 | console.log(`${title}\n${subtitle}\n${message}`) 63 | if (isQuanX) $notify(title, subtitle, message, Opts(rawopts)) 64 | if (isSurge) $notification.post(title, subtitle, message, Opts(rawopts)) 65 | if (isJSBox) $push.schedule({ 66 | title: title, 67 | body: subtitle ? subtitle + "\n" + message : message 68 | }) 69 | } 70 | const write = (value, key) => { 71 | if (isQuanX) return $prefs.setValueForKey(value, key) 72 | if (isSurge) return $persistentStore.write(value, key) 73 | if (isNode) { 74 | try { 75 | if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) 76 | node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify({})); 77 | const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))); 78 | if (value) dataValue[key] = value; 79 | if (!value) delete dataValue[key]; 80 | return node.fs.writeFileSync(node.path.resolve(__dirname, NodeSet), JSON.stringify(dataValue)); 81 | } catch (er) { 82 | return AnError('Node.js持久化写入', null, er); 83 | } 84 | } 85 | if (isJSBox) { 86 | if (!value) return $file.delete(`shared://${key}.txt`); 87 | return $file.write({ 88 | data: $data({ 89 | string: value 90 | }), 91 | path: `shared://${key}.txt` 92 | }) 93 | } 94 | } 95 | const read = (key) => { 96 | if (isQuanX) return $prefs.valueForKey(key) 97 | if (isSurge) return $persistentStore.read(key) 98 | if (isNode) { 99 | try { 100 | if (!node.fs.existsSync(node.path.resolve(__dirname, NodeSet))) return null; 101 | const dataValue = JSON.parse(node.fs.readFileSync(node.path.resolve(__dirname, NodeSet))) 102 | return dataValue[key] 103 | } catch (er) { 104 | return AnError('Node.js持久化读取', null, er) 105 | } 106 | } 107 | if (isJSBox) { 108 | if (!$file.exists(`shared://${key}.txt`)) return null; 109 | return $file.read(`shared://${key}.txt`).string 110 | } 111 | } 112 | const adapterStatus = (response) => { 113 | if (response) { 114 | if (response.status) { 115 | response["statusCode"] = response.status 116 | } else if (response.statusCode) { 117 | response["status"] = response.statusCode 118 | } 119 | } 120 | return response 121 | } 122 | const get = (options, callback) => { 123 | options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' 124 | if (isQuanX) { 125 | if (typeof options == "string") options = { 126 | url: options 127 | } 128 | options["method"] = "GET" 129 | //options["opts"] = { 130 | // "hints": false 131 | //} 132 | $task.fetch(options).then(response => { 133 | callback(null, adapterStatus(response), response.body) 134 | }, reason => callback(reason.error, null, null)) 135 | } 136 | if (isSurge) { 137 | options.headers['X-Surge-Skip-Scripting'] = false 138 | $httpClient.get(options, (error, response, body) => { 139 | callback(error, adapterStatus(response), body) 140 | }) 141 | } 142 | if (isNode) { 143 | node.request(options, (error, response, body) => { 144 | callback(error, adapterStatus(response), body) 145 | }) 146 | } 147 | if (isJSBox) { 148 | if (typeof options == "string") options = { 149 | url: options 150 | } 151 | options["header"] = options["headers"] 152 | options["handler"] = function(resp) { 153 | let error = resp.error; 154 | if (error) error = JSON.stringify(resp.error) 155 | let body = resp.data; 156 | if (typeof body == "object") body = JSON.stringify(resp.data); 157 | callback(error, adapterStatus(resp.response), body) 158 | }; 159 | $http.get(options); 160 | } 161 | } 162 | const post = (options, callback) => { 163 | options.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)' 164 | if (options.body) options.headers['Content-Type'] = 'application/x-www-form-urlencoded' 165 | if (isQuanX) { 166 | if (typeof options == "string") options = { 167 | url: options 168 | } 169 | options["method"] = "POST" 170 | //options["opts"] = { 171 | // "hints": false 172 | //} 173 | $task.fetch(options).then(response => { 174 | callback(null, adapterStatus(response), response.body) 175 | }, reason => callback(reason.error, null, null)) 176 | } 177 | if (isSurge) { 178 | options.headers['X-Surge-Skip-Scripting'] = false 179 | $httpClient.post(options, (error, response, body) => { 180 | callback(error, adapterStatus(response), body) 181 | }) 182 | } 183 | if (isNode) { 184 | node.request.post(options, (error, response, body) => { 185 | callback(error, adapterStatus(response), body) 186 | }) 187 | } 188 | if (isJSBox) { 189 | if (typeof options == "string") options = { 190 | url: options 191 | } 192 | options["header"] = options["headers"] 193 | options["handler"] = function(resp) { 194 | let error = resp.error; 195 | if (error) error = JSON.stringify(resp.error) 196 | let body = resp.data; 197 | if (typeof body == "object") body = JSON.stringify(resp.data) 198 | callback(error, adapterStatus(resp.response), body) 199 | } 200 | $http.post(options); 201 | } 202 | } 203 | const AnError = (name, keyname, er, resp, body) => { 204 | if (typeof(merge) != "undefined" && keyname) { 205 | if (!merge[keyname].notify) { 206 | merge[keyname].notify = `${name}: 异常, 已输出日志 ‼️` 207 | } else { 208 | merge[keyname].notify += `\n${name}: 异常, 已输出日志 ‼️ (2)` 209 | } 210 | merge[keyname].error = 1 211 | } 212 | return console.log(`\n‼️${name}发生错误\n‼️名称: ${er.name}\n‼️描述: ${er.message}${JSON.stringify(er).match(/\"line\"/)?`\n‼️行列: ${JSON.stringify(er)}`:``}${resp&&resp.status?`\n‼️状态: ${resp.status}`:``}${body?`\n‼️响应: ${resp&&resp.status!=503?body:`Omit.`}`:``}`) 213 | } 214 | const time = () => { 215 | const end = ((Date.now() - start) / 1000).toFixed(2) 216 | return console.log('\n签到用时: ' + end + ' 秒') 217 | } 218 | const done = (value = {}) => { 219 | if (isQuanX) return $done(value) 220 | if (isSurge) isRequest ? $done(value) : $done() 221 | } 222 | return { 223 | AnError, 224 | isRequest, 225 | isJSBox, 226 | isSurge, 227 | isQuanX, 228 | isLoon, 229 | isNode, 230 | notify, 231 | write, 232 | read, 233 | get, 234 | post, 235 | time, 236 | done 237 | } 238 | }; -------------------------------------------------------------------------------- /file/skin-hebe.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/file/skin-hebe.zip -------------------------------------------------------------------------------- /file/skin-xwz.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/file/skin-xwz.zip -------------------------------------------------------------------------------- /file/wb_emoji.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 表情预览 7 | 8 | 10 | 12 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |
21 |
22 |
23 |
    24 |
  • 26 |
  • 27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
龙小可第一弹限免
35 |
36 | 37 | 38 | 44 | 50 | 51 | 57 |
58 |
59 |
60 | 61 | 我是一条小绿龙,我有好多的小秘密~ 62 |
63 |
64 | 我是一条小绿龙,我有好多的小秘密~ 65 |
66 |
67 | 长按图片可预览 68 |
69 |
70 |
71 |
73 |
74 | 76 |
77 |
78 |
80 |
81 | 83 |
84 |
85 |
87 |
88 | 90 |
91 |
92 |
94 |
95 | 97 |
98 |
99 |
101 |
102 | 104 |
105 |
106 |
108 |
109 | 111 |
112 |
113 |
115 |
116 | 118 |
119 |
120 |
122 |
123 | 125 |
126 |
127 |
129 |
130 | 132 |
133 |
134 |
136 |
137 | 139 |
140 |
141 |
143 |
144 | 146 |
147 |
148 |
150 |
151 | 153 |
154 |
155 |
157 |
158 | 160 |
161 |
162 |
164 |
165 | 167 |
168 |
169 |
171 |
172 | 174 |
175 |
176 |
178 |
179 | 181 |
182 |
183 |
184 |
185 |
186 |
187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 |
202 |
203 |
204 | 进入用户中心 206 |
207 |
208 |
209 | 210 | 211 | 212 | 220 | 228 | 229 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 560 | 561 | 562 | -------------------------------------------------------------------------------- /file/神机规则.txt: -------------------------------------------------------------------------------- 1 | 添加资源解析器(参考https://limbopro.com/archives/11131.html) 2 | [general] 3 | resource_parser_url=https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/resource-parser.js 4 | 5 | 分流,参考 https://github.com/DivineEngine/Profiles/tree/master 6 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Unbreak.list, tag=Unbreak, update-interval=172800, opt-parser=true, enabled=true 7 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Advertising.list, tag=🚦去广告, update-interval=172800, opt-parser=true, enabled=true 8 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Privacy.list, tag=🚦隐私, update-interval=172800, opt-parser=true, enabled=true 9 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Hijacking.list, tag=🚫运营商劫持, update-interval=172800, opt-parser=true, enabled=true 10 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/StreamingMedia/Streaming.list, tag=💻流媒体, update-interval=172800, opt-parser=true, enabled=true 11 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/China.list, tag=🐼国内网站, update-interval=172800, opt-parser=true, enabled=true 12 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Global.list, tag=🌍国外网站, update-interval=172800, opt-parser=true, enabled=true 13 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/ChinaIP.list, tag=CN-IP, update-interval=172800, opt-parser=true, enabled=true -------------------------------------------------------------------------------- /imgs/icon/bilibili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/icon/bilibili.png -------------------------------------------------------------------------------- /imgs/icon/weibo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/icon/weibo.png -------------------------------------------------------------------------------- /imgs/wb_group1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/wb_group1.jpg -------------------------------------------------------------------------------- /imgs/weibo/116/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/1.gif -------------------------------------------------------------------------------- /imgs/weibo/116/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/10.gif -------------------------------------------------------------------------------- /imgs/weibo/116/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/11.gif -------------------------------------------------------------------------------- /imgs/weibo/116/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/12.gif -------------------------------------------------------------------------------- /imgs/weibo/116/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/13.gif -------------------------------------------------------------------------------- /imgs/weibo/116/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/14.gif -------------------------------------------------------------------------------- /imgs/weibo/116/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/15.gif -------------------------------------------------------------------------------- /imgs/weibo/116/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/16.gif -------------------------------------------------------------------------------- /imgs/weibo/116/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/2.gif -------------------------------------------------------------------------------- /imgs/weibo/116/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/3.gif -------------------------------------------------------------------------------- /imgs/weibo/116/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/4.gif -------------------------------------------------------------------------------- /imgs/weibo/116/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/5.gif -------------------------------------------------------------------------------- /imgs/weibo/116/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/6.gif -------------------------------------------------------------------------------- /imgs/weibo/116/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/7.gif -------------------------------------------------------------------------------- /imgs/weibo/116/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/8.gif -------------------------------------------------------------------------------- /imgs/weibo/116/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/9.gif -------------------------------------------------------------------------------- /imgs/weibo/116/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/116/cover.png -------------------------------------------------------------------------------- /imgs/weibo/116/imgs.txt: -------------------------------------------------------------------------------- 1 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7q36u3g30740740u4.gif 2 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7pz9qlg3074074ab0.gif 3 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7prx26g3074074jsy.gif 4 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7pobq4g3074074dgj.gif 5 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7pkuntg30740740td.gif 6 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7pc5mdg3074074q3f.gif 7 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7p4qveg3074074abf.gif 8 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7p0y2ig3074074gna.gif 9 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7oxevug3074074mxt.gif 10 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7orms4g3074074q46.gif 11 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7okfehg3074074t9s.gif 12 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7ofcmsg3074074aar.gif 13 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7oah8tg3074074jtd.gif 14 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7o4u88g3074074ta8.gif 15 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7o17beg3074074t9u.gif 16 | http://ww4.sinaimg.cn/mw690/005EGbicly1ftcu7nwgddg30740743zm.gif 17 | -------------------------------------------------------------------------------- /imgs/weibo/156/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/1.gif -------------------------------------------------------------------------------- /imgs/weibo/156/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/10.gif -------------------------------------------------------------------------------- /imgs/weibo/156/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/11.gif -------------------------------------------------------------------------------- /imgs/weibo/156/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/12.gif -------------------------------------------------------------------------------- /imgs/weibo/156/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/13.gif -------------------------------------------------------------------------------- /imgs/weibo/156/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/14.gif -------------------------------------------------------------------------------- /imgs/weibo/156/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/15.gif -------------------------------------------------------------------------------- /imgs/weibo/156/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/16.gif -------------------------------------------------------------------------------- /imgs/weibo/156/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/17.gif -------------------------------------------------------------------------------- /imgs/weibo/156/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/18.gif -------------------------------------------------------------------------------- /imgs/weibo/156/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/19.gif -------------------------------------------------------------------------------- /imgs/weibo/156/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/2.gif -------------------------------------------------------------------------------- /imgs/weibo/156/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/20.gif -------------------------------------------------------------------------------- /imgs/weibo/156/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/21.gif -------------------------------------------------------------------------------- /imgs/weibo/156/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/22.gif -------------------------------------------------------------------------------- /imgs/weibo/156/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/23.gif -------------------------------------------------------------------------------- /imgs/weibo/156/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/24.gif -------------------------------------------------------------------------------- /imgs/weibo/156/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/3.gif -------------------------------------------------------------------------------- /imgs/weibo/156/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/4.gif -------------------------------------------------------------------------------- /imgs/weibo/156/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/5.gif -------------------------------------------------------------------------------- /imgs/weibo/156/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/6.gif -------------------------------------------------------------------------------- /imgs/weibo/156/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/7.gif -------------------------------------------------------------------------------- /imgs/weibo/156/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/8.gif -------------------------------------------------------------------------------- /imgs/weibo/156/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/9.gif -------------------------------------------------------------------------------- /imgs/weibo/156/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/156/cover.png -------------------------------------------------------------------------------- /imgs/weibo/156/imgs.txt: -------------------------------------------------------------------------------- 1 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez1040o6pg2074074wh1.gif 2 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez103omx6g2074074myd.gif 3 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez103gv4yg20740743zt.gif 4 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez1035xjpg207407476a.gif 5 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez102vdgbg2074074q4p.gif 6 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez102ir32g2074074wgi.gif 7 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez102aaiqg207407476g.gif 8 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez101aefyg2074074wh2.gif 9 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez100xvcng2074074mzo.gif 10 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez100myj1g2074074tbn.gif 11 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez100co3hg2074074q4i.gif 12 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez10064vbg2074074myv.gif 13 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zzqjgvg2074074q42.gif 14 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zzhg7bg20740740uj.gif 15 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zz8qvyg2074074tb7.gif 16 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zyvh3tg2074074415.gif 17 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zymh9vg2074074gmz.gif 18 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zyczlig2074074q4c.gif 19 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zy6ot3g2074074my3.gif 20 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zxrswsg2074074wfy.gif 21 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zxer3hg2074074gni.gif 22 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zx1obtg207407440l.gif 23 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zwry14g2074074q5f.gif 24 | http://ww4.sinaimg.cn/mw690/acf865f8ly1gez0zwj64fg2074074q4j.gif 25 | -------------------------------------------------------------------------------- /imgs/weibo/159/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/1.gif -------------------------------------------------------------------------------- /imgs/weibo/159/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/10.gif -------------------------------------------------------------------------------- /imgs/weibo/159/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/11.gif -------------------------------------------------------------------------------- /imgs/weibo/159/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/12.gif -------------------------------------------------------------------------------- /imgs/weibo/159/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/13.gif -------------------------------------------------------------------------------- /imgs/weibo/159/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/14.gif -------------------------------------------------------------------------------- /imgs/weibo/159/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/15.gif -------------------------------------------------------------------------------- /imgs/weibo/159/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/16.gif -------------------------------------------------------------------------------- /imgs/weibo/159/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/17.gif -------------------------------------------------------------------------------- /imgs/weibo/159/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/18.gif -------------------------------------------------------------------------------- /imgs/weibo/159/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/19.gif -------------------------------------------------------------------------------- /imgs/weibo/159/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/2.gif -------------------------------------------------------------------------------- /imgs/weibo/159/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/20.gif -------------------------------------------------------------------------------- /imgs/weibo/159/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/21.gif -------------------------------------------------------------------------------- /imgs/weibo/159/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/22.gif -------------------------------------------------------------------------------- /imgs/weibo/159/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/23.gif -------------------------------------------------------------------------------- /imgs/weibo/159/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/24.gif -------------------------------------------------------------------------------- /imgs/weibo/159/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/3.gif -------------------------------------------------------------------------------- /imgs/weibo/159/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/4.gif -------------------------------------------------------------------------------- /imgs/weibo/159/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/5.gif -------------------------------------------------------------------------------- /imgs/weibo/159/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/6.gif -------------------------------------------------------------------------------- /imgs/weibo/159/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/7.gif -------------------------------------------------------------------------------- /imgs/weibo/159/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/8.gif -------------------------------------------------------------------------------- /imgs/weibo/159/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/9.gif -------------------------------------------------------------------------------- /imgs/weibo/159/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/weibo/159/cover.png -------------------------------------------------------------------------------- /imgs/weibo/159/imgs.txt: -------------------------------------------------------------------------------- 1 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0xiz9g2074074tbk.gif 2 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0l1jsg2074074ab7.gif 3 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0f40qg2074074myw.gif 4 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm08lc7g2074074q5v.gif 5 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzuuo5g2074074n01.gif 6 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzl7oqg207407476m.gif 7 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzawwmg207407441d.gif 8 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlyvqu3g2074074goe.gif 9 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlym7dig2074074mzm.gif 10 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlydvb0g2074074778.gif 11 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywly572hg2074074acw.gif 12 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlxvsb2g207407440j.gif 13 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlxltceg2074074tbp.gif 14 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlx67pjg2074074q5x.gif 15 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlws6v8g2074074goj.gif 16 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlwkw9ig2074074778.gif 17 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlw33v9g2074074dia.gif 18 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlvul0jg2074074ju7.gif 19 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlvhbpag207407440t.gif 20 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlv773mg2074074tbq.gif 21 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywluvq88g2074074gol.gif 22 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlu5xujg2074074gok.gif 23 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywltdtcgg207407477b.gif 24 | http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlt2k73g2074074dhg.gif 25 | -------------------------------------------------------------------------------- /imgs/zsm3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zmqcherish/proxy-script/1d9f51bc9a0077d81998bb503ee6158ca83faa73/imgs/zsm3.jpg -------------------------------------------------------------------------------- /test.py: -------------------------------------------------------------------------------- 1 | from util import * 2 | 3 | class MainAddon: 4 | def __init__(self): 5 | self.other_urls = { 6 | # '/2/!/multimedia/playback/batch_get': 'playback_handler', #用户主页 7 | # '/remind/unread_count': 'unread_count_handler', #用户主页 8 | '/batch': 'wyy', #用户主页 9 | '/api/v3/song/detail': 'wyy', #用户主页 10 | '/api/v6/playlist/detail': 'wyy', #用户主页 11 | '/api/song/enhance/player/url': 'wyy', #用户主页 12 | } 13 | 14 | 15 | def unread_count_handler(self, data): 16 | pass 17 | 18 | 19 | def playback_handler(self, data): 20 | if 'list' not in data: 21 | return 22 | save_pickle('temp/playback', data) 23 | llist = data['list'] 24 | for item in llist: 25 | if 'ui' in item: 26 | item['ui']['cast_scheme'] = '' 27 | item['expire_time'] = 0 28 | item['media_id'] = 0 29 | if 'details' in item: 30 | details = item['details'] 31 | for detail in details: 32 | if 'play_info' in detail: 33 | del detail['play_info'] 34 | if 'meta' in detail: 35 | del detail['meta'] 36 | print(data) 37 | 38 | 39 | 40 | @except_decorative 41 | def skin_handler(self, data): 42 | skin_list = data['data']['list'] 43 | # skin_list_0 = skin_list[1] 44 | for skin in skin_list: 45 | # if skin.get('usetime'): 46 | # skin['usetime'] = 330 47 | skin['downloadlink'] = 'https://vip.storage.weibo.com/vip_lightskin/lightskin_79_1.0.zip' 48 | skin['downloadlink'] = 'https://vip.storage.weibo.com/vip_lightskin/lightskin_15_1.0.zip' 49 | skin['downloadlink'] = 'https://raw.fastgit.org/zmqcherish/proxy-script/main/file/skin-hebe.zip' 50 | # skin['skinid'] = skin_list_0['skinid'] 51 | skin['version'] = 112 52 | 53 | 54 | def payinfo_handler(self, data): 55 | res_data = get_json_file('temp/3.json') 56 | # data['data'] = res_data['data'] 57 | # data['data']['isVip'] = True 58 | # data['data']['vip_end_date']='2021-01-13' 59 | # data['data']['vip_level']= 7 60 | # data['data']['tipText']= '续费炫酷皮肤随心换~' 61 | # data['data']['tipUrl']='sinaweibo://mppopupwindow?wbx_hide_close_btn=true&wbx_bg_view_dismiss=true&scheme=sinaweibo%3A%2F%2Fwbox%3Fid%3Dn1htatg0fm%26page%3Dpages%2Fcashier%2Fcashier%26cashier_id%3D17%26F%3Dtq_skin_mppopupwindow' 62 | # data['data']['tipUrlNovip']='sinaweibo://mppopupwindow?wbx_hide_close_btn=true&wbx_bg_view_dismiss=true&scheme=sinaweibo%3A%2F%2Fwbox%3Fid%3Dn1htatg0fm%26page%3Dpages%2Fcashier%2Fcashier%26cashier_id%3D17%26F%3Dtq_skin_mppopupwindow' 63 | 64 | 65 | def wyy(self, data): 66 | # res_data = get_json_file('temp/1.json') 67 | # data['data'] = res_data['data'] 68 | a=1 69 | # user_info = data['data']['baseInfo']['user_info'] 70 | # user_info['identity'] = '1,0' 71 | # user_info['level'] = 7 72 | # user_info['mbtype'] = 12 73 | # user_info['desc'] = '2022年01月13日 到期' 74 | 75 | 76 | def get_method(self, url): 77 | for path, method in self.other_urls.items(): 78 | if path in url: 79 | return method 80 | 81 | 82 | def response(self, flow): 83 | req = flow.request 84 | res = flow.response 85 | 86 | 87 | # if '京东' in res_text: 88 | # print('aaaa', req.url) 89 | 90 | method = self.get_method(req.url) 91 | if not method: 92 | return 93 | res_text = res.text 94 | data = json.loads(res.text) 95 | print(f'match {method}...') 96 | eval("self." + method)(data) 97 | res.text = json.dumps(data) 98 | -------------------------------------------------------------------------------- /test/demo.js: -------------------------------------------------------------------------------- 1 | function log(msg) { 2 | console.log(new Date()); 3 | console.log(msg); 4 | } 5 | 6 | log($request.url); 7 | $notify('a', 'b', 'c'); 8 | var body = $response.body; 9 | log(body); 10 | // var obj = {} 11 | var obj = JSON.parse(body); 12 | obj['success'] = true; 13 | obj['cherish'] = 'only for hebetien'; 14 | body = JSON.stringify(obj, null, 2); 15 | $done(body); -------------------------------------------------------------------------------- /test/test.conf: -------------------------------------------------------------------------------- 1 | hostname = api.weibo.cn 2 | 3 | ^https://api.weibo.cn/2/!/multimedia/playback/batch_get url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/test/test.js -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | const version = 'v1026.1'; 2 | let $ = new nobyda(); 3 | const otherUrls = { 4 | // '/littleskin/lists': 'skin_list_handler', 5 | '/2/!/multimedia/playback/batch_get': 'playback_handler', 6 | // '/littleskin/preview': 'preview_handler' 7 | } 8 | // let storeMainConfig = $.read('mainConfig'); 9 | // //主要的选项配置 10 | // const mainConfig = JSON.parse(storeMainConfig); 11 | 12 | 13 | function playback_handler(data) { 14 | let items = data.list; 15 | for (let item of items) { 16 | item.expire_time = 0; 17 | } 18 | log('playback_handler') 19 | } 20 | 21 | 22 | function getModifyMethod(url) { 23 | for(const [path, method] of Object.entries(otherUrls)) { 24 | if(url.indexOf(path) > -1) { 25 | return method; 26 | } 27 | } 28 | return null; 29 | } 30 | 31 | 32 | function log(data) { 33 | console.log(data); 34 | } 35 | 36 | 37 | function nobyda() { 38 | const isQuanX = typeof $task != "undefined"; 39 | const isSurge = typeof $httpClient != "undefined"; 40 | const isRequest = typeof $request != "undefined"; 41 | const notify = (title, subtitle='', message='') => { 42 | if (isQuanX) $notify(title, subtitle, message) 43 | if (isSurge) $notification.post(title, subtitle, message); 44 | } 45 | const read = (key) => { 46 | if (isQuanX) return $prefs.valueForKey(key); 47 | if (isSurge) return $persistentStore.read(key); 48 | } 49 | const done = (value = {}) => { 50 | if (isQuanX) return $done(value); 51 | if (isSurge) isRequest ? $done(value) : $done(); 52 | } 53 | 54 | return { 55 | isRequest, 56 | isSurge, 57 | isQuanX, 58 | notify, 59 | read, 60 | done 61 | } 62 | } 63 | 64 | var body = $response.body; 65 | var url = $request.url; 66 | let method = getModifyMethod(url); 67 | if(method) { 68 | log(method); 69 | var func = eval(method); 70 | let data = JSON.parse(body); 71 | new func(data); 72 | body = JSON.stringify(data); 73 | } 74 | $.done(body); -------------------------------------------------------------------------------- /util.py: -------------------------------------------------------------------------------- 1 | from mitmproxy.options import Options 2 | from mitmproxy.tools.dump import DumpMaster 3 | 4 | import asyncio 5 | import logging 6 | import json 7 | import re 8 | import os 9 | import pickle 10 | import requests 11 | import random 12 | from jsonpath import jsonpath 13 | from time import sleep, time 14 | from urllib.request import urlretrieve 15 | from datetime import datetime, timedelta 16 | 17 | def except_decorative(func): 18 | def decorator(*args, **keyargs): 19 | try: 20 | return func(*args, **keyargs) 21 | except Exception as e: 22 | logging.error(f'handle {func.__name__} error: {e}') 23 | return decorator 24 | 25 | 26 | def append_txt_file(save_item, file_path='1.txt', end='\n'): 27 | with open(file_path, 'a', encoding='utf8') as txt_file: 28 | txt_file.write(save_item + end) 29 | 30 | 31 | @except_decorative 32 | def get_json_file(file_path): 33 | with open(file_path, 'r', encoding='utf-8') as json_file: 34 | return json.load(json_file) 35 | 36 | def save_json_file(file_path, save_item): 37 | with open(file_path, 'w', encoding='utf-8') as json_file: 38 | json.dump(save_item, json_file, ensure_ascii = False) 39 | 40 | 41 | def create_folder(path): 42 | if os.path.exists(path): 43 | return 44 | os.mkdir(path) 45 | 46 | 47 | def get_file_suffix(path): 48 | return os.path.splitext(path)[-1] 49 | 50 | 51 | def get_pickle_file(file_path): 52 | with open(file_path, 'rb') as pickle_file: 53 | return pickle.load(pickle_file) 54 | 55 | 56 | def save_pickle(file_path, data): 57 | with open(file_path, 'wb') as code_file: 58 | pickle.dump(data, code_file) 59 | 60 | 61 | def get_json_val(item, path, get_first=False): 62 | res = jsonpath(item, path) 63 | if res and get_first: 64 | return res[0] 65 | return res 66 | 67 | # mitmweb -p 8887 --listen-host 10.2.147.130 --set validate_inbound_headers=false 68 | async def start_proxy(add_on, ip="10.2.147.164", port=8887): 69 | # ip = '192.168.1.6' 70 | # ip = '127.0.0.1' 71 | opts = Options(listen_host=ip, listen_port=port) 72 | opts.add_option("body_size_limit", int, 0, "") 73 | # opts.add_option("validate_inbound_headers", bool, False, "") 74 | # opts.add_option("allow_hosts", list, ["api.weibo.cn"], "") 75 | # opts.add_option("ssl_insecure", bool, True, "") 76 | m = DumpMaster(opts, with_termlog=False, with_dumper=False) 77 | m.addons.add(add_on) 78 | 79 | try: 80 | print('\nproxy:', ip, port) 81 | await m.run() 82 | except KeyboardInterrupt: 83 | m.shutdown() 84 | return m -------------------------------------------------------------------------------- /wb_emoji.py: -------------------------------------------------------------------------------- 1 | from util import * 2 | from bs4 import BeautifulSoup 3 | 4 | #需要在config文件中配置cookie信息 5 | config = get_json_file('file/config_private.json') or get_json_file('file/config.json') 6 | cookie = config.get('cookie') 7 | 8 | headers = { 9 | 'Host': 'new.vip.weibo.cn', 10 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 11 | 'Cookie': cookie, 12 | 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Weibo (iPhone12,1__weibo__11.10.0__iphone__os15.0.2)' 13 | } 14 | 15 | def download_pkg(pid): 16 | path = f'imgs/weibo/{pid}' 17 | create_folder(path) 18 | res = requests.get(f'https://new.vip.weibo.cn/gifimg/detail?ua=iPhone12%2C1__weibo__11.10.0__iphone__os15.0.2&from=10BA093010&pkg_id={pid}', headers=headers) 19 | 20 | soup = BeautifulSoup(res.text) 21 | cover = soup.img 22 | urlretrieve(cover['src'], f'{path}/cover.png') 23 | imgs = soup.find(id='emojibox').find_all('div', {'node-type':True}) 24 | i = 1 25 | for img in imgs: 26 | src = img['data-src'] 27 | append_txt_file(src, f'{path}/imgs.txt') 28 | urlretrieve(src, f'{path}/{i}{get_file_suffix(src)}') 29 | # urlretrieve(src, f'{path}/{i}.gif') 30 | i += 1 31 | pk_list = [116, 156, 159] 32 | for pid in pk_list: 33 | download_pkg(pid) 34 | 35 | -------------------------------------------------------------------------------- /weibo.conf: -------------------------------------------------------------------------------- 1 | hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, 2 | 3 | # 微博去广告以及去除各部分推广模块 - cherish 4 | ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 5 | 6 | # 删除微博开屏广告 - cherish 7 | ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_launch.js 8 | 9 | # 自定义tab皮肤 10 | ^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 11 | 12 | # 非会员设置tab皮肤 - cherish 13 | ^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js -------------------------------------------------------------------------------- /weibo.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=微博配置 2 | #!desc=删除多数微博广告和一些自定义配置 3 | [Script] 4 | http-response ^https?://m?api\.weibo\.c(n|om)/2/(cardlist|searchall|page|messageflow|statuses/(unread_)?friends(/|_)timeline|groups/timeline|statuses/(container_timeline|unread_hot_timeline|extend|video_mixtimeline|repost_timeline)|profile/(me|container_timeline)|video/(community_tab|remind_info|tiny_stream_video_list)|checkin/show|\!/live/media_homelist|comments/build_comments|container/get_item|search/(finder|container_timeline|container_discover)) requires-body=1,script-path=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 5 | http-response ^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) requires-body=1,script-path=https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_launch.js 6 | [MITM] 7 | hostname = %APPEND% api.weibo.cn, mapi.weibo.com, *.uve.weibo.com -------------------------------------------------------------------------------- /weibo_config.js: -------------------------------------------------------------------------------- 1 | //主要的选项配置 2 | const mainConfig = { 3 | isDebug: true, //开启调试,会打印运行中部分日志 4 | 5 | //个人中心配置,其中多数是可以直接在更多功能里直接移除 6 | removeHomeVip: true, //个人中心头像旁边的vip样式 7 | removeHomeCreatorTask: true, //个人中心创作者中心下方的轮播图 8 | 9 | //微博详情页配置 10 | removeRelate: true, //相关推荐 11 | removeGood: true, //微博主好物种草 12 | removeFollow: true, //关注博主 13 | modifyMenus: true, //编辑上下文菜单 14 | removeRelateItem: true, //评论区相关内容 15 | removeRecommendItem: true, //评论区推荐内容 16 | removeRewardItem: true, //微博详情页打赏模块 17 | 18 | removeLiveMedia: true, //首页顶部直播 19 | removeNextVideo: true, //关闭自动播放下一个视频 20 | 21 | removePinedTrending: false, //删除热搜列表置顶条目 22 | 23 | removeInterestFriendInTopic: true, //超话:超话里的好友 24 | removeInterestTopic: true, //超话:可能感兴趣的超话 25 | removeInterestUser: true, //用户页:可能感兴趣的人 26 | 27 | removeLvZhou: true, //绿洲模块 28 | removeSearchWindow: true, //#搜索页滑动窗口,有的不是广告 29 | 30 | removeUnfollowTopic: true, //超话-未关注的 31 | removeUnusedPart: true, //超话-乱七八糟没用的部分 32 | 33 | 34 | blockIds: [], //屏蔽的用户id列表 35 | // profileSkin1: ["https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaingvoj6046046dg802.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaiuoxtj6046046dga02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaiytuyj60460463yv02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj19hvj6046046aac02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj5ka0j6046046jrp02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj9jfmj6046046dg502.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajd0hfj60460463yu02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajfce5j6046046wet02.jpg"], //用户页:自定义 我的相册 - 客服 8个图标(需要8项),如果不需要设置为profileSkin1: null 36 | // profileSkin2: ["https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajhmrnj6046046jro02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajmgs0j60460460t102.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajp9uuj6046046jrp02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajrwrwj6046046dg102.jpg"], //用户页:自定义 创作首页 - 任务中心 4个图标(需要4项),如果不需要设置为profileSkin2: null 37 | 38 | profileSkin1: ["http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0xiz9g2074074tbk.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0l1jsg2074074ab7.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm0f40qg2074074myw.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywm08lc7g2074074q5v.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzuuo5g2074074n01.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzl7oqg207407476m.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlzawwmg207407441d.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlyvqu3g2074074goe.gif"], 39 | profileSkin2: ["http://ww4.sinaimg.cn/mw690/acf865f8ly1geywluvq88g2074074gol.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlu5xujg2074074gok.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywltdtcgg207407477b.gif","http://ww4.sinaimg.cn/mw690/acf865f8ly1geywlt2k73g2074074dhg.gif"], 40 | 41 | tabIconVersion: 0, //配置大于100的数才生效 42 | tabIconPath: "http://5b0988e595225.cdn.sohucs.com/skin-hebe.zip", //配置图标路径 43 | } 44 | 45 | //菜单配置 46 | const itemMenusConfig = { 47 | creator_task:false, //转发任务 48 | mblog_menus_custom:false, //寄微博 49 | mblog_menus_video_later:true, //可能是稍后再看?没出现过 50 | mblog_menus_comment_manager:true, //评论管理 51 | mblog_menus_avatar_widget:false, //头像挂件 52 | mblog_menus_card_bg: false, //卡片背景 53 | mblog_menus_long_picture:true, //生成长图 54 | mblog_menus_delete:true, //删除 55 | mblog_menus_edit:true, //编辑 56 | mblog_menus_edit_history:true, //编辑记录 57 | mblog_menus_edit_video:true, //编辑视频 58 | mblog_menus_sticking:true, //置顶 59 | mblog_menus_open_reward:true, //赞赏 60 | mblog_menus_novelty:false, //新鲜事投稿 61 | mblog_menus_favorite:true, //收藏 62 | mblog_menus_promote:true, //推广 63 | mblog_menus_modify_visible:true, //设置分享范围 64 | mblog_menus_copy_url:true, //复制链接 65 | mblog_menus_follow:true, //关注 66 | mblog_menus_video_feedback:true, //播放反馈 67 | mblog_menus_shield:true, //屏蔽 68 | mblog_menus_report:true, //投诉 69 | mblog_menus_apeal:true, //申诉 70 | mblog_menus_home:true //返回首页 71 | } 72 | 73 | 74 | function nobyda() { 75 | const isQuanX = typeof $task != "undefined"; 76 | const isSurge = typeof $httpClient != "undefined"; 77 | const isRequest = typeof $request != "undefined"; 78 | const notify = (title, subtitle='', message='') => { 79 | if (isQuanX) $notify(title, subtitle, message) 80 | if (isSurge) $notification.post(title, subtitle, message); 81 | } 82 | const write = (value, key) => { 83 | if (isQuanX) return $prefs.setValueForKey(value, key); 84 | if (isSurge) return $persistentStore.write(value, key); 85 | } 86 | const read = (key) => { 87 | if (isQuanX) return $prefs.valueForKey(key); 88 | if (isSurge) return $persistentStore.read(key); 89 | } 90 | const done = (value = {}) => { 91 | if (isQuanX) return $done(value); 92 | if (isSurge) isRequest ? $done(value) : $done(); 93 | } 94 | 95 | return { 96 | isRequest, 97 | isSurge, 98 | isQuanX, 99 | notify, 100 | write, 101 | read, 102 | done 103 | } 104 | } 105 | 106 | let $ = new nobyda(); 107 | // $.write(JSON.stringify(isDebug), 'isDebug'); 108 | $.write(JSON.stringify(mainConfig), 'mainConfig'); 109 | $.write(JSON.stringify(itemMenusConfig), 'itemMenusConfig'); 110 | // console.log($.read('isDebug')); 111 | console.log($.read('mainConfig')); 112 | console.log($.read('itemMenusConfig')); 113 | console.log('success'); 114 | $.notify('微博自定义配置更改成功'); 115 | $.done(); 116 | -------------------------------------------------------------------------------- /weibo_launch.js: -------------------------------------------------------------------------------- 1 | //参考@yichahucha 的脚本 2 | 3 | const launchAdUrl1 = '/interface/sdk/sdkad.php'; 4 | const launchAdUrl2 = '/wbapplua/wbpullad.lua'; 5 | 6 | // function needModify(url) { 7 | // if(url.indexOf(launchAdUrl1) > -1 || url.indexOf(launchAdUrl2) > -1) { 8 | // return true; 9 | // } 10 | // return false; 11 | // } 12 | 13 | function modifyMain(url, data) { 14 | if(url.indexOf(launchAdUrl1) > -1) { 15 | let temp = data.match(/\{.*\}/); 16 | if(!temp) return data; 17 | data = JSON.parse(temp); 18 | if (data.ads) data.ads = []; 19 | if (data.background_delay_display_time) data.background_delay_display_time = 60 * 60 * 24 * 1000; 20 | if (data.show_push_splash_ad) data.show_push_splash_ad = false; 21 | return JSON.stringify(data) + 'OK'; 22 | } 23 | if(url.indexOf(launchAdUrl2) > -1) { 24 | data = JSON.parse(data); 25 | if (data.cached_ad && data.cached_ad.ads) { 26 | data.cached_ad.ads = []; 27 | } 28 | return JSON.stringify(data); 29 | } 30 | return data; 31 | } 32 | 33 | var body = $response.body; 34 | var url = $request.url; 35 | // if(needModify(url)) { 36 | body = modifyMain(url, body); 37 | // } 38 | 39 | $done({ body }); -------------------------------------------------------------------------------- /weibo_main.js: -------------------------------------------------------------------------------- 1 | const version = 'v0515.1'; 2 | 3 | const $ = new Env("微博去广告"); 4 | let storeMainConfig = $.getdata('mainConfig'); 5 | let storeItemMenusConfig = $.getdata('itemMenusConfig'); 6 | 7 | //主要的选项配置 8 | const mainConfig = storeMainConfig ? JSON.parse(storeMainConfig) : { 9 | isDebug: false, //开启调试,会打印运行中部分日志 10 | //个人中心配置,其中多数是可以直接在更多功能里直接移除 11 | removeHomeVip: true, //个人中心的vip栏 12 | removeHomeCreatorTask: true, //个人中心创作者中心下方的轮播图 13 | 14 | //微博详情页配置 15 | removeRelate: true, //相关推荐 16 | removeGood: true, //微博主好物种草 17 | removeFollow: true, //关注博主 18 | modifyMenus: true, //编辑上下文菜单 19 | removeRelateItem: false, //评论区相关内容 20 | removeRecommendItem: true, //评论区推荐内容 21 | removeRewardItem: false, //微博详情页打赏模块 22 | 23 | removeLiveMedia: true, //首页顶部直播 24 | removeNextVideo: false, //关闭自动播放下一个视频 25 | 26 | removePinedTrending: true, //删除热搜列表置顶条目 27 | 28 | removeInterestFriendInTopic: false, //超话:超话里的好友 29 | removeInterestTopic: false, //超话:可能感兴趣的超话 + 好友关注 30 | removeInterestUser: false, //用户页:可能感兴趣的人 31 | 32 | removeLvZhou: false, //绿洲模块 33 | 34 | profileSkin1: null, //用户页:自定义图标1 35 | profileSkin2: null, //用户页:自定义图标2 36 | tabIconVersion: 0, //配置大于100的数 37 | tabIconPath: '' //配置图标路径 38 | } 39 | 40 | 41 | //菜单配置 42 | const itemMenusConfig = storeItemMenusConfig ? JSON.parse(storeItemMenusConfig) : { 43 | creator_task:false, //转发任务 44 | mblog_menus_custom:false, //寄微博 45 | mblog_menus_video_later:true, //可能是稍后再看?没出现过 46 | mblog_menus_comment_manager:true, //评论管理 47 | mblog_menus_avatar_widget:false, //头像挂件 48 | mblog_menus_card_bg: false, //卡片背景 49 | mblog_menus_long_picture:true, //生成长图 50 | mblog_menus_delete:true, //删除 51 | mblog_menus_edit:true, //编辑 52 | mblog_menus_edit_history:true, //编辑记录 53 | mblog_menus_edit_video:true, //编辑视频 54 | mblog_menus_sticking:true, //置顶 55 | mblog_menus_open_reward:true, //赞赏 56 | mblog_menus_novelty:false, //新鲜事投稿 57 | mblog_menus_favorite:true, //收藏 58 | mblog_menus_promote:true, //推广 59 | mblog_menus_modify_visible:true, //设置分享范围 60 | mblog_menus_copy_url:true, //复制链接 61 | mblog_menus_follow:true, //关注 62 | mblog_menus_video_feedback:true, //播放反馈 63 | mblog_menus_shield:true, //屏蔽 64 | mblog_menus_report:true, //投诉 65 | mblog_menus_apeal:true, //申诉 66 | mblog_menus_home:true //返回首页 67 | } 68 | 69 | const modifyCardsUrls = ['/cardlist', 'video/community_tab',]; 70 | const modifyStatusesUrls = ['statuses/friends/timeline', 'statuses/unread_friends_timeline', 'statuses/unread_hot_timeline', 'groups/timeline']; 71 | 72 | const otherUrls = { 73 | '/profile/me': 'removeHome', //个人页模块 74 | '/statuses/extend': 'itemExtendHandler', //微博详情页 75 | '/video/remind_info': 'removeVideoRemind', //tab2菜单上的假通知 76 | '/checkin/show': 'removeCheckin', //签到任务 77 | '/live/media_homelist': 'removeMediaHomelist', //首页直播 78 | '/comments/build_comments': 'removeComments', //微博详情页评论区相关内容 79 | '/container/get_item': 'containerHandler', //列表相关 80 | '/profile/container_timeline': 'userHandler', //用户主页 81 | '/video/tiny_stream_video_list': 'nextVideoHandler', //取消自动播放下一个视频 82 | '/2/statuses/video_mixtimeline': 'nextVideoHandler', 83 | '/!/client/light_skin': 'tabSkinHandler', 84 | '/littleskin/preview': 'skinPreviewHandler', 85 | '/search/finder': 'removeSearchMain', 86 | '/search/container_timeline': 'removeSearch', 87 | '/search/container_discover': 'removeSearch', 88 | '/2/searchall': 'removeSearch', //搜索 89 | '/2/messageflow': 'removeMsgAd', 90 | '/2/page?': 'removePage', //超话签到的按钮 /2/page/button 加?区别 91 | '/statuses/container_timeline_topic': 'topicHandler', //超话tab 92 | '/statuses/container_timeline?': 'removeMain', //首页 93 | '/statuses/container_timeline_unread': 'removeMain', //首页 94 | '/statuses/repost_timeline': 'removeRepost', //转发流 95 | } 96 | 97 | 98 | function getModifyMethod(url) { 99 | for (const s of modifyCardsUrls) { 100 | if(url.indexOf(s) > -1) { 101 | return 'removeCards'; 102 | } 103 | } 104 | for (const s of modifyStatusesUrls) { 105 | if(url.indexOf(s) > -1) { 106 | return 'removeTimeLine'; 107 | } 108 | } 109 | for(const [path, method] of Object.entries(otherUrls)) { 110 | if(url.indexOf(path) > -1) { 111 | return method; 112 | } 113 | } 114 | return null; 115 | } 116 | 117 | 118 | function isAd(data) { 119 | if(!data) { 120 | return false; 121 | } 122 | if(data.mblogtypename == '广告' || data.mblogtypename == '热推') {return true}; 123 | if(data.promotion && data.promotion.type == 'ad') {return true}; 124 | return false; 125 | } 126 | 127 | // 判断首页流 感兴趣的超话 128 | function checkJunkTopic(item) { 129 | if(item.category != 'group') { 130 | return false; 131 | } 132 | try { 133 | if(['super_topic_recommend_card', 'recommend_video_card'].indexOf(item.trend_name) > -1) { 134 | return true; 135 | } 136 | } catch (error) { 137 | } 138 | return false; 139 | } 140 | 141 | 142 | function removeRepost(data) { 143 | if(data.reposts) { 144 | let newItems = []; 145 | for (let item of data.reposts) { 146 | if(!isAd(item)) { 147 | newItems.push(item); 148 | } 149 | } 150 | data.reposts = newItems; 151 | } 152 | 153 | if(data.hot_reposts) { 154 | let newItems = []; 155 | for (let item of data.hot_reposts) { 156 | if(!isAd(item)) { 157 | newItems.push(item); 158 | } 159 | } 160 | data.hot_reposts = newItems; 161 | } 162 | log('removeRepost success'); 163 | return data; 164 | } 165 | 166 | function removeMain(data) { 167 | if(!data.items) { 168 | return data; 169 | } 170 | let newItems = []; 171 | for (let item of data.items) { 172 | if(checkJunkTopic(item)) { 173 | continue; 174 | } 175 | if(!isAd(item.data)) { 176 | newItems.push(item); 177 | } 178 | } 179 | data.items = newItems; 180 | log('removeMain success'); 181 | return data; 182 | } 183 | 184 | function topicHandler(data) { 185 | log('topicHandler start'); 186 | const items = data.items; 187 | if (!items) return data; 188 | if(!mainConfig.removeUnfollowTopic && !mainConfig.removeUnusedPart) return data; 189 | let newItems = []; 190 | for(let c of items) { 191 | let addFlag = true; 192 | let category = c.category; 193 | if(category == 'feed') { 194 | if(!mainConfig.removeUnfollowTopic) { 195 | continue; 196 | } 197 | let btns = c?.data?.buttons; 198 | if(btns && btns.length > 0 && btns[0].type == 'follow') { 199 | addFlag = false; 200 | } 201 | } else { 202 | if(!mainConfig.removeUnusedPart) { 203 | continue; 204 | } 205 | 206 | if(category == 'group') { 207 | const cc = c.header?.title?.content; 208 | if(cc && cc.indexOf('空降发帖') > -1) { 209 | addFlag = false; 210 | continue; 211 | } 212 | let subItems = c.items; 213 | if(!subItems) { 214 | continue; 215 | } 216 | let newSubItems = []; 217 | for(let sub of subItems) { 218 | let anchorId = sub?.itemExt?.anchorId; 219 | if(!anchorId || ['sg_bottom_tab_search_input', 'multi_feed_entrance', 'bottom_mix_activity', 'cats_top_content', 'chaohua_home_readpost_samecity_title', 'chaohua_discovery_banner_1', 'chaohua_home_readpost_samecity_content'].indexOf(anchorId) == -1) { 220 | newSubItems.push(sub); 221 | } 222 | } 223 | c.items = newSubItems; 224 | } else if (category == 'card') { 225 | let cData = c.data 226 | if(cData?.top?.title == '正在活跃') { 227 | addFlag = false; 228 | } else if(cData?.itemid.indexOf('infeed_may_interest_in') > -1) { 229 | addFlag = false; 230 | } 231 | } 232 | } 233 | if(addFlag) { 234 | newItems.push(c); 235 | } 236 | } 237 | data.items = newItems; 238 | log('topicHandler success'); 239 | return data; 240 | } 241 | 242 | 243 | function removeSearchMain(data) { 244 | let channels = data.channelInfo.channels; 245 | if (!channels) {return data;} 246 | for(let channel of channels) { 247 | let payload = channel.payload; 248 | if (!payload) {continue;} 249 | removeSearch(payload) 250 | } 251 | log('remove_search main success'); 252 | return data; 253 | } 254 | 255 | 256 | function checkSearchWindow(item) { 257 | if(!mainConfig.removeSearchWindow) return false; 258 | if(item.category != 'card') return false; 259 | return item.data?.itemid == 'finder_window' || item.data?.itemid == 'more_frame'; 260 | } 261 | 262 | 263 | //发现页 264 | function removeSearch(data) { 265 | if(!data.items) { 266 | return data; 267 | } 268 | let newItems = []; 269 | for (let item of data.items) { 270 | if(item.category == 'feed') { 271 | if(!isAd(item.data)) { 272 | newItems.push(item); 273 | } 274 | } else { 275 | if(!checkSearchWindow(item)) { 276 | newItems.push(item); 277 | } 278 | } 279 | } 280 | data.items = newItems; 281 | log('remove_search success'); 282 | return data; 283 | } 284 | 285 | 286 | function removeMsgAd(data) { 287 | if(!data.messages) { 288 | return; 289 | } 290 | let newMsgs = []; 291 | for (let msg of data.messages) { 292 | if(msg.msg_card?.ad_tag) { 293 | continue; 294 | } 295 | newMsgs.push(msg) 296 | } 297 | data.messages = newMsgs; 298 | return data; 299 | } 300 | 301 | function removePage(data){ 302 | removeCards(data); 303 | 304 | // 删除热搜列表置顶条目 305 | if (mainConfig.removePinedTrending && data.cards && data.cards.length > 0) { 306 | if (data.cards[0].card_group) { 307 | data.cards[0].card_group = data.cards[0].card_group.filter(c=>!c.itemid.includes("t:51")); 308 | } 309 | } 310 | 311 | return data; 312 | } 313 | 314 | function removeCards(data) { 315 | if(!data.cards) { 316 | return; 317 | } 318 | let newCards = []; 319 | for (const card of data.cards) { 320 | let cardGroup = card.card_group; 321 | if(cardGroup && cardGroup.length > 0) { 322 | let newGroup = []; 323 | for (const group of cardGroup) { 324 | let cardType = group.card_type; 325 | if(cardType != 118) { 326 | newGroup.push(group); 327 | } 328 | } 329 | card.card_group = newGroup; 330 | newCards.push(card); 331 | } else { 332 | let cardType = card.card_type; 333 | if([9,165].indexOf(cardType) > -1) { 334 | if(!isAd(card.mblog)) { 335 | newCards.push(card); 336 | } 337 | } else { 338 | newCards.push(card); 339 | } 340 | } 341 | } 342 | data.cards = newCards; 343 | } 344 | 345 | 346 | function lvZhouHandler(data) { 347 | if(!mainConfig.removeLvZhou) return; 348 | if(!data) return; 349 | let struct = data.common_struct; 350 | if(!struct) return; 351 | let newStruct = []; 352 | for (const s of struct) { 353 | if(s.name != '绿洲') { 354 | newStruct.push(s); 355 | } 356 | } 357 | data.common_struct = newStruct; 358 | } 359 | 360 | 361 | function isBlock(data) { 362 | let blockIds = mainConfig.blockIds || []; 363 | if(blockIds.length === 0) { 364 | return false; 365 | } 366 | let uid = data.user.id; 367 | for (const blockId of blockIds) { 368 | if(blockId == uid) { 369 | return true; 370 | } 371 | } 372 | return false; 373 | } 374 | 375 | function removeTimeLine(data) { 376 | for (const s of ["ad", "advertises", "trends"]) { 377 | if(data[s]) { 378 | delete data[s]; 379 | } 380 | } 381 | if(!data.statuses) { 382 | return; 383 | } 384 | let newStatuses = []; 385 | for (const s of data.statuses) { 386 | if(!isAd(s)) { 387 | lvZhouHandler(s); 388 | if(!isBlock(s)) { 389 | newStatuses.push(s); 390 | } 391 | } 392 | } 393 | data.statuses = newStatuses; 394 | } 395 | 396 | 397 | function removeHomeVip(data) { 398 | if(!data.header) { 399 | return data; 400 | } 401 | // let vipCenter = data.header.vipCenter; 402 | // if(vipCenter) { 403 | // vipCenter.icon = ''; 404 | // vipCenter.title.content = '会员中心'; 405 | // } 406 | if(data.header.vipView) { 407 | data.header.vipView = null; 408 | } 409 | return data; 410 | } 411 | 412 | //移除tab2的假通知 413 | function removeVideoRemind(data) { 414 | data.bubble_dismiss_time = 0; 415 | data.exist_remind = false; 416 | data.image_dismiss_time = 0; 417 | data.image = ''; 418 | data.tag_image_english = ''; 419 | data.tag_image_english_dark = ''; 420 | data.tag_image_normal = ''; 421 | data.tag_image_normal_dark = ''; 422 | } 423 | 424 | 425 | //微博详情页 426 | function itemExtendHandler(data) { 427 | if(mainConfig.removeRelate || mainConfig.removeGood) { 428 | if(data.trend && data.trend.titles) { 429 | let title = data.trend.titles.title; 430 | if(mainConfig.removeRelate && title === '相关推荐') { 431 | delete data.trend; 432 | } else if (mainConfig.removeGood && title === '博主好物种草') { 433 | delete data.trend; 434 | } 435 | } 436 | } 437 | if(mainConfig.removeFollow) { 438 | if(data.follow_data) { 439 | data.follow_data = null; 440 | } 441 | } 442 | 443 | if(mainConfig.removeRewardItem) { 444 | if(data.reward_info) { 445 | data.reward_info = null; 446 | } 447 | } 448 | 449 | //删除超话新帖和新用户通知 450 | if(data.page_alerts) { 451 | data.page_alerts = null; 452 | } 453 | 454 | // 06.29 删除新版广告 455 | if(data.head_cards) { 456 | data.head_cards = null; 457 | } 458 | 459 | //广告 暂时判断逻辑根据图片 https://h5.sinaimg.cn/upload/1007/25/2018/05/03/timeline_icon_ad_delete.png 460 | try { 461 | let picUrl = data.trend.extra_struct.extBtnInfo.btn_picurl; 462 | if(picUrl.indexOf('timeline_icon_ad_delete') > -1) { 463 | delete data.trend; 464 | } 465 | } catch (error) { 466 | 467 | } 468 | 469 | 470 | if(mainConfig.modifyMenus && data.custom_action_list) { 471 | let newActions = []; 472 | for (const item of data.custom_action_list) { 473 | let _t = item.type; 474 | let add = itemMenusConfig[_t] 475 | if(add === undefined) { 476 | newActions.push(item); 477 | } else if(_t === 'mblog_menus_copy_url') { 478 | newActions.unshift(item); 479 | } else if(add) { 480 | newActions.push(item); 481 | } 482 | } 483 | data.custom_action_list = newActions; 484 | } 485 | } 486 | 487 | function updateFollowOrder(item) { 488 | try { 489 | for (let d of item.items) { 490 | if(d.itemId === 'mainnums_friends') { 491 | let s = d.click.modules[0].scheme; 492 | d.click.modules[0].scheme = s.replace('231093_-_selfrecomm', '231093_-_selffollowed'); 493 | log('updateFollowOrder success'); 494 | return; 495 | } 496 | } 497 | } catch (error) { 498 | console.log('updateFollowOrder fail'); 499 | } 500 | } 501 | 502 | function updateProfileSkin(item, k) { 503 | try { 504 | let profileSkin = mainConfig[k]; 505 | if(!profileSkin) {return;} 506 | let i = 0; 507 | for (let d of item.items) { 508 | if(!d.image) { 509 | continue; 510 | } 511 | try { 512 | dm = d.image.style.darkMode 513 | if(dm != 'alpha') { 514 | d.image.style.darkMode = 'alpha' 515 | } 516 | d.image.iconUrl = profileSkin[i++]; 517 | if(d.dot) { 518 | d.dot = []; 519 | } 520 | } catch (error) { 521 | 522 | } 523 | } 524 | log('updateProfileSkin success'); 525 | } catch (error) { 526 | console.log('updateProfileSkin fail'); 527 | } 528 | } 529 | 530 | 531 | function removeHome(data) { 532 | if(!data.items) { 533 | return data; 534 | } 535 | let newItems = []; 536 | for (let item of data.items) { 537 | let itemId = item.itemId; 538 | if(itemId == 'profileme_mine') { 539 | if(mainConfig.removeHomeVip) { 540 | item = removeHomeVip(item); 541 | } 542 | updateFollowOrder(item); 543 | newItems.push(item); 544 | } else if (itemId == '100505_-_top8') { 545 | updateProfileSkin(item, 'profileSkin1'); 546 | newItems.push(item); 547 | } else if (itemId == '100505_-_newcreator') { 548 | if(item.type == 'grid') { 549 | updateProfileSkin(item, 'profileSkin2'); 550 | newItems.push(item); 551 | } else { 552 | if(!mainConfig.removeHomeCreatorTask) { 553 | newItems.push(item); 554 | } 555 | } 556 | } else if(['mine_attent_title', '100505_-_meattent_pic', '100505_-_newusertask', '100505_-_vipkaitong', '100505_-_hongbao2022', '100505_-_adphoto', '100505_-_hongrenjie2022', '100505_-_weibonight2023'].indexOf(itemId) > -1) { 557 | continue; 558 | } else if (itemId == '100505_-_advideo') { 559 | if(item?.header?.title?.content == '微博之夜') { 560 | continue; 561 | } 562 | } else if (itemId.match(/100505_-_meattent_-_\d+/)) { 563 | continue; 564 | } else { 565 | newItems.push(item); 566 | } 567 | } 568 | data.items = newItems; 569 | return data; 570 | } 571 | 572 | 573 | //移除tab1签到 574 | function removeCheckin(data) { 575 | log('remove tab1签到'); 576 | data.show = 0; 577 | } 578 | 579 | 580 | //首页直播 581 | function removeMediaHomelist(data) { 582 | if(mainConfig.removeLiveMedia) { 583 | log('remove 首页直播'); 584 | data.data = {}; 585 | } 586 | } 587 | 588 | //评论区相关和推荐内容 589 | function removeComments(data) { 590 | let delType = ['广告']; 591 | if(mainConfig.removeRelateItem) delType.push('相关内容'); 592 | if(mainConfig.removeRecommendItem) delType.push(...['推荐', '热推']); 593 | // if(delType.length === 0) return; 594 | let items = data.datas || []; 595 | if(items.length === 0) return; 596 | let newItems = []; 597 | for (const item of items) { 598 | let adType = item.adType || ''; 599 | if(delType.indexOf(adType) == -1) { 600 | newItems.push(item); 601 | } 602 | } 603 | log('remove 评论区相关和推荐内容'); 604 | data.datas = newItems; 605 | } 606 | 607 | 608 | //处理感兴趣的超话和超话里的好友 609 | function containerHandler(data) { 610 | if(mainConfig.removeInterestFriendInTopic) { 611 | if(data.card_type_name === '超话里的好友') { 612 | log('remove 超话里的好友'); 613 | data.card_group = []; 614 | } 615 | } 616 | if(mainConfig.removeInterestTopic && data.itemid) { 617 | if(data.itemid.indexOf('infeed_may_interest_in') > -1) { 618 | log('remove 感兴趣的超话'); 619 | data.card_group = []; 620 | } else if(data.itemid.indexOf('infeed_friends_recommend') > -1) { 621 | log('remove 超话好友关注'); 622 | data.card_group = []; 623 | } 624 | } 625 | } 626 | 627 | //可能感兴趣的人 628 | function userHandler(data) { 629 | data = removeMain(data); 630 | if(!mainConfig.removeInterestUser) { 631 | return data; 632 | } 633 | 634 | if(!data.items) { 635 | return data; 636 | } 637 | let newItems = []; 638 | for (let item of data.items) { 639 | let isAdd = true; 640 | if(item.category == 'group') { 641 | try { 642 | if(item.items[0]['data']['desc'] == '可能感兴趣的人') { 643 | isAdd = false; 644 | } 645 | } catch (error) { 646 | } 647 | } 648 | if(isAdd) { 649 | newItems.push(item); 650 | } 651 | } 652 | data.items = newItems; 653 | log('removeMain sub success'); 654 | return data; 655 | } 656 | 657 | 658 | function nextVideoHandler(data) { 659 | if(mainConfig.removeNextVideo) { 660 | data.statuses = []; 661 | data.tab_list = []; 662 | console.log('nextVideoHandler'); 663 | } 664 | } 665 | 666 | function tabSkinHandler(data) { 667 | try { 668 | let iconVersion = mainConfig.tabIconVersion; 669 | data['data']['canUse'] = 1 670 | if(!iconVersion || !mainConfig.tabIconPath) return; 671 | if(iconVersion < 100) return; 672 | 673 | let skinList = data['data']['list'] 674 | for (let skin of skinList) { 675 | // if(skin.usetime) { 676 | // skin['usetime'] = 330 677 | // } 678 | skin['version'] = iconVersion; 679 | skin['downloadlink'] = mainConfig.tabIconPath; 680 | } 681 | log('tabSkinHandler success') 682 | } catch (error) { 683 | log('tabSkinHandler fail') 684 | } 685 | } 686 | 687 | 688 | function skinPreviewHandler(data) { 689 | data['data']['skin_info']['status'] = 1 690 | } 691 | 692 | 693 | // function unreadCountHandler(data) { 694 | // let ext = data.ext_new; 695 | // if(!ext) return; 696 | // if(!ext.creator_task) return; 697 | // ext.creator_task.text = ''; 698 | // } 699 | 700 | function log(data) { 701 | if(mainConfig.isDebug) { 702 | console.log(data); 703 | } 704 | } 705 | 706 | 707 | 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)} 708 | 709 | var body = $response.body; 710 | var url = $request.url; 711 | let method = getModifyMethod(url); 712 | if(method) { 713 | log(method); 714 | var func = eval(method); 715 | let data = JSON.parse(body); 716 | new func(data); 717 | body = JSON.stringify(data); 718 | } 719 | 720 | $.done({ body }); -------------------------------------------------------------------------------- /weibo_main.py: -------------------------------------------------------------------------------- 1 | from util import * 2 | 3 | #微博详情页配置 4 | main_config = { 5 | 'removeRelate': True, #相关推荐 6 | 'removeGood': True, #微博主好物种草 7 | 'removeFollow': True, #关注博主 8 | 'removeRelateItem': True, #评论区相关内容 9 | 'removeRecommendItem': True, #评论区推荐内容 10 | 'removeSearchWindow' : True, #搜索页滑动窗口 11 | 'profileSkin1': ["https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaingvoj6046046dg802.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaiuoxtj6046046dga02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaiytuyj60460463yv02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj19hvj6046046aac02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj5ka0j6046046jrp02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeaj9jfmj6046046dg502.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajd0hfj60460463yu02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajfce5j6046046wet02.jpg"], 12 | 'profileSkin2': ["https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajhmrnj6046046jro02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajmgs0j60460460t102.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajp9uuj6046046jrp02.jpg","https://wx2.sinaimg.cn/large/006Y6guWly1gvjeajrwrwj6046046dg102.jpg"], 13 | 'tabIconVersion': 11, 14 | 'tabIconPath': 'http://5b0988e595225.cdn.sohucs.com/skin-hebe.zip', 15 | } 16 | 17 | # 'profileSkin1': ['https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_2.png', 'https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_1.png', 'https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_1.png', 'https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_4.png', 'https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_4.png', 'https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_3.png', 'https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_4.png', 'https://wx1.sinaimg.cn/large/006Y6guWly1gvjc93r3yzj605k05kjs102.jpg'], 18 | # 'profileSkin2': ['https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_1.png', 'https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_5.png', 'https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_3.png', 'https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_5.png'] 19 | 20 | item_menus_config = { 21 | 'creator_task':False, #转发任务 22 | 'mblog_menus_custom':False, #寄微博 23 | 'mblog_menus_video_later':True, #可能是稍后再看?没出现过 24 | 'mblog_menus_comment_manager':True, #评论管理 25 | 'mblog_menus_avatar_widget':False, #头像挂件 26 | 'mblog_menus_card_bg': False, #卡片背景 27 | 'mblog_menus_long_picture':True, #生成长图 28 | 'mblog_menus_delete':True, #删除 29 | 'mblog_menus_edit':True, #编辑 30 | 'mblog_menus_edit_history':True, #编辑记录 31 | 'mblog_menus_edit_video':True, #编辑视频 32 | 'mblog_menus_sticking':True, #置顶 33 | 'mblog_menus_open_reward':True, #赞赏 34 | 'mblog_menus_novelty':False, #新鲜事投稿 35 | 'mblog_menus_favorite':True, #收藏 36 | 'mblog_menus_promote':True, #推广 37 | 'mblog_menus_modify_visible':True, #设置分享范围 38 | 'mblog_menus_copy_url':True, #复制链接 39 | 'mblog_menus_follow':True, #关注 40 | 'mblog_menus_video_feedback':True, #播放反馈 41 | 'mblog_menus_shield':True, #屏蔽 42 | 'mblog_menus_report':True, #投诉 43 | 'mblog_menus_apeal':True, #申诉 44 | 'mblog_menus_home':True #返回首页 45 | } 46 | 47 | 48 | 49 | class MainAddon: 50 | def __init__(self): 51 | self.launch_ad_url1 = '/interface/sdk/sdkad.php' 52 | self.launch_ad_url2 = '/wbapplua/wbpullad.lua' 53 | 54 | self.card_urls = ['/cardlist', '2/page?', 'video/community_tab',] 55 | self.statuses_urls = ['statuses/friends/timeline', 'statuses/unread_friends_timeline', 'statuses/unread_hot_timeline', 'groups/timeline'] 56 | self.other_urls = { 57 | '/profile/me': 'remove_home', 58 | '/statuses/extend': 'item_extend_handler', 59 | '/video/remind_info': 'remove_video_remind', 60 | '/checkin/show': 'remove_checkin', 61 | '/live/media_homelist': 'remove_media_homelist', 62 | '/comments/build_comments': 'remove_comments', 63 | '/container/get_item': 'container_handler', #列表相关 64 | '/profile/container_timeline': 'user_handler', #用户主页 65 | '/video/tiny_stream_video_list': 'next_video_handler', #自动下一条视频 66 | '/2/statuses/video_mixtimeline': 'next_video_handler', #自动下一条视频 67 | '/!/client/light_skin': 'skin_handler', #更改tab图标 68 | '/littleskin/preview': 'skin_preview_handler', 69 | '/search/finder': 'remove_search_main', 70 | '/search/container_timeline': 'remove_search', 71 | '/search/container_discover': 'remove_search', 72 | '/searchall': 'remove_search', #搜索 73 | '/2/messageflow': 'remove_msg_ad', 74 | '/statuses/container_timeline_topicpage': 'topic_handler', #超话tab 75 | '/push/active': 'handle_push', # 处理一些界面设置,目前只有首页右上角红包通知 76 | '/statuses/container_timeline?': 'remove_main', 77 | '/statuses/container_timeline_unread': 'remove_main', 78 | '/statuses/repost_timeline': 'remove_repost', # 转发列表的广告 79 | # '/remind/unread_count': 'unread_count_handler', 80 | } 81 | 82 | 83 | def remove_repost(self, data): 84 | items = data.get('reposts', []) 85 | new_items = [] 86 | for item in items: 87 | if not self.is_ad(item): 88 | new_items.append(item) 89 | data['reposts'] = new_items 90 | 91 | hot_items = data.get('hot_reposts', []) 92 | new_hot_items = [] 93 | for item in hot_items: 94 | if not self.is_ad(item): 95 | new_hot_items.append(item) 96 | data['hot_reposts'] = new_hot_items 97 | print('remove_repost success') 98 | 99 | 100 | # 新版主页广告地址 101 | def remove_main(self, data): 102 | items = data['items'] 103 | new_items = [] 104 | for item in items: 105 | if self.check_junk_topic(item): 106 | continue 107 | if not self.is_ad(item.get('data')): 108 | new_items.append(item) 109 | data['items'] = new_items 110 | print('remove_main success') 111 | 112 | 113 | def topic_handler(self, data): 114 | # print('topic_handler ing') 115 | items = data['items'] 116 | new_items = [] 117 | for c in items: 118 | add_flag = True 119 | category = c.get('category') 120 | if category == 'feed': 121 | feed_type = get_json_val(c, '$.data.buttons[0].type', True) 122 | if feed_type == 'follow': # 未关注的 123 | add_flag = False 124 | elif category == 'group': 125 | t_content = get_json_val(c, '$.header.title.content', True) 126 | if t_content and '空降发帖' in t_content: 127 | add_flag = False 128 | continue 129 | sub_items = c.get('items') 130 | new_sub_items = [] 131 | if not sub_items: 132 | continue 133 | for sub in sub_items: 134 | anchor_id = get_json_val(sub, '$.itemExt.anchorId', True) 135 | if anchor_id not in ['sg_bottom_tab_search_input', 'multi_feed_entrance', 'bottom_mix_activity', 'cats_top_content', 'chaohua_home_readpost_samecity_title', 'chaohua_discovery_banner_1', 'chaohua_home_readpost_samecity_content']: #bottom_mix_activity-征集打卡活动 cats_top_content-超话分类 chaohua_home_readpost_samecity_title-正在讨论 banner图-banner图 chaohua_home_readpost_samecity_content-xx 136 | new_sub_items.append(sub) 137 | c['items'] = new_sub_items 138 | elif category == 'card': 139 | c_data = c.get('data', {}) 140 | if c_data.get('top', {}).get('title') == '正在活跃': 141 | add_flag = False 142 | elif 'infeed_may_interest_in' in c_data.get('itemid', ''): #更多超话 143 | print('remove 你可能感兴趣的超话') 144 | add_flag = False 145 | if add_flag: 146 | new_items.append(c) 147 | data['items'] = new_items 148 | print('remove topic success'); 149 | save_json_file(f'temp/topic-{time()}.json', new_items) 150 | 151 | 152 | def remove_search_main(self, data): 153 | channels = data.get('channelInfo', {}).get('channels') 154 | if not channels: 155 | return 156 | for channel in channels: 157 | payload = channel.get('payload') 158 | if not payload: 159 | continue 160 | self.remove_search(payload) 161 | print('remove_search main success'); 162 | 163 | 164 | def check_search_window(self, item): 165 | if not main_config['removeSearchWindow']: 166 | return False 167 | if item.get('category') != 'card': 168 | return False 169 | item_data = item.get('data', {}) 170 | if 'adid' in item_data: 171 | return True 172 | return item_data.get('itemid') in ["finder_window", "more_frame"] 173 | 174 | 175 | # 发现页 176 | def remove_search(self, data): 177 | items = data.get('items') 178 | if not items: 179 | return 180 | new_items = [] 181 | for item in items: 182 | if item.get('category') == 'feed': 183 | item_data = item.get('data') 184 | if not self.is_ad(item_data): 185 | new_items.append(item) 186 | else: 187 | if not self.check_search_window(item): 188 | new_items.append(item) 189 | data['items'] = new_items 190 | print('remove_search success') 191 | 192 | 193 | def remove_msg_ad(self, data): 194 | msgs = data.get('messages') 195 | if not msgs: 196 | return 197 | new_msgs = [] 198 | for msg in msgs: 199 | if not msg.get('msg_card', {}).get('ad_tag'): 200 | new_msgs.append(msg) 201 | data['messages'] = new_msgs 202 | 203 | 204 | def remove_card_list(self, data): 205 | cards = data.get('cards') 206 | if not cards: 207 | return 208 | new_cards = [] 209 | for c in cards: 210 | card_group = c.get('card_group') 211 | if card_group and len(card_group) > 0: 212 | new_group = [] 213 | for g in card_group: 214 | card_type = g.get('card_type') 215 | if card_type not in [118, ]: 216 | new_group.append(g) 217 | c['card_group'] = new_group 218 | new_cards.append(c) 219 | else: 220 | if c.get('card_type') in [9, 165]: 221 | if not self.is_ad(c.get('mblog')): 222 | new_cards.append(c) 223 | else: 224 | # 广告 225 | pass 226 | else: 227 | new_cards.append(c) 228 | data['cards'] = new_cards 229 | 230 | 231 | # 判断首页流 感兴趣的超话 "常看的视频号" 232 | def check_junk_topic(self, item): 233 | if item.get('category') != 'group': 234 | return False 235 | try: 236 | if item.get('trend_name') in ['super_topic_recommend_card', 'recommend_video_card']: 237 | return True 238 | except Exception as e: 239 | pass 240 | return False 241 | 242 | 243 | def is_ad(self, data): 244 | if not data: 245 | return False 246 | a = data.get('mblogtypename') 247 | if a and a in ['广告', '热推']: 248 | return True 249 | if data.get('promotion', {}).get('type') == 'ad': 250 | return True 251 | # if data.get('readtimetype') == 'adMblog': #不准,很多实际非广告 252 | # return False 253 | 254 | 255 | def handle_comment_struct(self, data): 256 | if not data: 257 | return 258 | struct = data.get('common_struct') 259 | if not struct: 260 | return 261 | data['common_struct'] = [s for s in struct if s.get('name') != '绿洲'] 262 | 263 | 264 | def remove_tl(self, data): 265 | for k in ['advertises', 'ad', 'trends']: 266 | if k in data: 267 | del data[k] 268 | statuses = data.get('statuses') 269 | if not statuses: 270 | return 271 | new_statuses = [] 272 | for s in statuses: 273 | if self.is_ad(s): 274 | continue 275 | self.handle_comment_struct(s) 276 | new_statuses.append(s) 277 | data['statuses'] = new_statuses 278 | 279 | 280 | @except_decorative 281 | def remove_vip(self, item): 282 | header = item.get('header') 283 | if not header: 284 | return 285 | # vip_center = header.get('vipCenter', {}) 286 | # if 'icon' in vip_center: 287 | # del vip_center['icon'] 288 | # vip_center['title']['content'] = '会员中心' 289 | 290 | if 'vipView' in header: 291 | del header['vipView'] 292 | 293 | 294 | # 将个人主页【关注】按钮默认值由【推荐】改为【关注的人】 295 | @except_decorative 296 | def update_follow_order(self, item): 297 | for d in item.get('items'): 298 | if d.get('itemId') != 'mainnums_friends': 299 | continue 300 | s = d['click']['modules'][0]['scheme'] 301 | d['click']['modules'][0]['scheme'] = s.replace('231093_-_selfrecomm', '231093_-_selffollowed') 302 | print('update_follow_order success'); 303 | return 304 | 305 | 306 | # 更改个人主页图标 307 | @except_decorative 308 | def update_profile_skin(self, item, k): 309 | profile_skin = main_config[k] 310 | if not profile_skin: 311 | return 312 | items = item.get('items') 313 | i = 0 314 | for d in items: 315 | if 'image' not in d: 316 | continue 317 | dm = d['image'].get('style', {}).get('darkMode') 318 | if dm != 'alpha': 319 | d['image']['style']['darkMode'] = 'alpha' 320 | d['image']['iconUrl'] = profile_skin[i] 321 | i += 1 322 | if 'dot' in d: 323 | del d['dot'] 324 | print('update_profile_skin success'); 325 | 326 | 327 | # 微博个人中心 328 | def remove_home(self, data): 329 | items = data.get('items') 330 | if not items: 331 | return 332 | new_items = [] 333 | for item in items: 334 | item_id = item.get('itemId') 335 | print(item_id) 336 | if item_id == 'profileme_mine': 337 | self.remove_vip(item) 338 | self.update_follow_order(item) 339 | new_items.append(item) 340 | elif item_id == '100505_-_top8': 341 | self.update_profile_skin(item, 'profileSkin1') 342 | new_items.append(item) 343 | elif item_id == '100505_-_newcreator': #创作者中心 344 | if item.get('type') == 'grid': 345 | self.update_profile_skin(item, 'profileSkin2') 346 | new_items.append(item) 347 | elif item_id in ['mine_attent_title', '100505_-_meattent_pic', '100505_-_newusertask', '100505_-_vipkaitong', '100505_-_hongbao2022', '100505_-_adphoto', '100505_-_hongrenjie2022', '100505_-_weibonight2023']: #为你推荐 为你推荐图片 用户任务 让红包飞 红人节 微博之夜 348 | continue 349 | elif item_id == '100505_-_advideo': 350 | title = get_json_val(item, '$.header.title.content', True) 351 | if title == '微博之夜': 352 | continue 353 | elif re.search(r'100505_-_meattent_-_\d+', item_id): 354 | continue 355 | else: 356 | new_items.append(item) 357 | # ['profileme_mine', '100505_-_top8', '100505_-_recentlyuser', '100505_-_chaohua', '100505_-_manage', '100505_-_manage2', '100505_-_footprint', ]: # 个人头像 常用操作 最常访问 超话 更多功能 签到足迹 358 | data['items'] = new_items 359 | 360 | 361 | # 微博详情 362 | def item_extend_handler(self, data): 363 | save_json_file(f'temp/item-{time()}.json', data) 364 | if main_config['removeRelate'] or main_config['removeGood']: 365 | title = data.get('trend', {}).get('titles', {}).get('title') 366 | if main_config['removeRelate'] and title == '相关推荐': 367 | del data['trend'] 368 | elif main_config['removeGood'] and title == '博主好物种草': 369 | del data['trend'] 370 | if main_config['removeFollow']: 371 | if 'follow_data' in data: 372 | del data['follow_data'] 373 | for k in ['head_cards' ,'reward_info', 'page_alerts']: # head_cards 06.29 新版广告, reward_info 打赏作者, highlight 高亮的词 374 | if k in data: 375 | del data[k] 376 | 377 | # if 'display_info' in data: 378 | # for dis_item in data['display_info']: 379 | # for k in dis_item.keys(): 380 | # dis_item[k] = None 381 | data["extend_info"] = { 382 | "bg_cards": [{ 383 | "adid": "KA-20969", 384 | "keywords": "感冒" 385 | }] 386 | } 387 | data['highlight'] = {"adids": ["KA-20969"]} 388 | data["display_info"] = [{"KA-20969": {"pic_front": "", "type": 1, "screening_strategy": 1, "delivery_scope": 255, "word_url": "", "key_words": "感冒"}}] 389 | #广告 暂时判断逻辑根据图片 https://h5.sinaimg.cn/upload/1007/25/2018/05/03/timeline_icon_ad_delete.png 390 | if 'timeline_icon_ad_delete' in data.get('trend', {}).get('extra_struct', {}).get('extBtnInfo', {}).get('btn_picurl', {}): 391 | del data['trend'] 392 | 393 | if 'custom_action_list' in data: 394 | new_actions = [] 395 | for action in data['custom_action_list']: 396 | _type = action.get('type') 397 | if _type in item_menus_config and not item_menus_config[_type]: 398 | pass 399 | else: 400 | # print(_type) 401 | if _type == 'mblog_menus_copy_url': 402 | new_actions.insert(0, action) 403 | else: 404 | new_actions.append(action) 405 | data['custom_action_list'] = new_actions 406 | 407 | 408 | #测试 暂不知道各字段控制逻辑 409 | def remove_video_remind(self, data): 410 | data['bubble_dismiss_time'] = 0 411 | data['exist_remind'] = False 412 | data['image_dismiss_time'] = 0 413 | data['image'] = '' 414 | data['tag_image_english'] = '' 415 | data['tag_image_english_dark'] = '' 416 | data['tag_image_normal'] = '' 417 | data['tag_image_normal_dark'] = '' 418 | 419 | 420 | def remove_checkin(self, data): 421 | data['show'] = 0 422 | # data['show_time'] = 20000 423 | 424 | 425 | def remove_media_homelist(self, data): 426 | data['data'] = {} 427 | 428 | 429 | def remove_comments(self, data): 430 | del_type = ['广告',] 431 | if main_config['removeRelateItem']: 432 | del_type.append('相关内容') 433 | if main_config['removeRecommendItem']: 434 | del_type.append('推荐') 435 | if len(del_type) == 0: 436 | return 437 | items = data.get('datas') 438 | if not items: 439 | return 440 | data['datas'] = [item for item in items if item.get('adType') not in del_type] 441 | 442 | #超话相关 443 | def container_handler(self, data): 444 | if data.get('card_type_name') == '超话里的好友': 445 | print('remove 超话里的好友') 446 | data['card_group'] = [] 447 | elif 'infeed_may_interest_in' in data.get('itemid', ''): 448 | print('remove 你可能感兴趣的超话') 449 | data['card_group'] = [] 450 | elif 'infeed_friends_recommend' in data.get('itemid', ''): 451 | print('remove 超话好友关注') 452 | data['card_group'] = [] 453 | 454 | 455 | def user_handler(self, data): 456 | self.remove_main(data) 457 | 458 | items = data['items'] 459 | new_items = [] 460 | for item in items: 461 | is_add = True 462 | if item.get('category') == 'group': 463 | try: 464 | if item.get('items')[0]['data']['desc'] == '可能感兴趣的人': 465 | is_add = False 466 | except Exception as e: 467 | pass 468 | if is_add: 469 | new_items.append(item) 470 | data['items'] = new_items 471 | print('remove_main_sub success'); 472 | 473 | 474 | def next_video_handler(self, data): 475 | data['statuses'] = [] 476 | data['tab_list'] = [] 477 | 478 | 479 | @except_decorative 480 | def skin_handler(self, data): 481 | version = main_config.get('tabIconVersion') 482 | data['data']['canUse'] = 1 483 | if not version or version < 100: 484 | return 485 | skinList = data['data']['list'] 486 | for skin in skinList: 487 | # if skin.usetime: 488 | # skin['usetime'] = 330 489 | skin['version'] = version 490 | skin['downloadlink'] = main_config['tabIconPath'] 491 | print('tabSkinHandler success') 492 | 493 | 494 | def skin_preview_handler(self, data): 495 | data['data']['skin_info']['status'] = 1 496 | 497 | 498 | def unread_count_handler(self, data): 499 | ext = data.get('ext_new', {}) 500 | if 'creator_task' in ext: 501 | ext['creator_task']['text'] = '' 502 | 503 | 504 | def handle_push(self, data): 505 | if 'floating_windows' in data: 506 | del data['floating_windows'] 507 | 508 | # data['traceroute_time_interval'] = 1000 509 | # data['push_version'] = '1000dsadadsa' 510 | # data['version'] = 'version_20210128' # 应该是这个控制版本 511 | # data['launch_app_config_version'] = '08e94a37bdae64de40ba6ecb16cbaa41' 512 | if 'feed_redpacket' in data: # 首页右上角红包 513 | # data['feed_redpacket']['icon'] = 'http://h5.sinaimg.cn/upload/2016/02/04/196/helper_redpacket_valentine_compose.png' 514 | # data['feed_redpacket']['icon'] = 'http://p1.itc.cn/mpbp/dev/20210716/436a8ef98c8941f3ba62452b1ed4842f.jpeg' 515 | print(data['feed_redpacket']) 516 | 517 | 518 | def get_method(self, url): 519 | for path in self.card_urls: 520 | if path in url: 521 | return 'remove_card_list' 522 | for path in self.statuses_urls: 523 | if path in url: 524 | return 'remove_tl' 525 | for path, method in self.other_urls.items(): 526 | if path in url: 527 | print(url) 528 | return method 529 | 530 | 531 | def remove_launch_ad(self, url, data): 532 | imgs = ["006Y6guWly1gdc0r26dwdj30ku114n4p","006Y6guWly1gdc0r1nj1oj30n01dstla","006Y6guWly1gdc0r2h1p5j30n01ds4qp","006Y6guWly1gemhviru7rj30n01dsnpe","006Y6guWly1gemhvj5se8j30n01dsag4","006Y6guWly1gdc0r3gv3sj30n01dsu0y","006Y6guWly1gdc0r3ujlxj30n01ds7qq","006Y6guWly1gdc0r4cgzwj30n01dsn3t","006Y6guWly1gdc0r4ish2j30n01dsafk"] 533 | 534 | if self.launch_ad_url1 in url: 535 | temp = re.search(r'{.*}', data) 536 | if not temp: 537 | return data 538 | res = json.loads(temp.group()) 539 | if 'ads' in res: 540 | res['ads'] = [] 541 | # ads = res['ads'] 542 | # for ad in ads: 543 | # ad['imageurl'] = f'https://wx4.sinaimg.cn/mw2000/{random.choice(imgs)}.jpg' 544 | # if 'click_rects' in ad: 545 | # del ad['click_rects'] 546 | if 'background_delay_display_time' in res: 547 | res['background_delay_display_time'] = 60 * 60 * 24 * 1000 548 | if 'show_push_splash_ad' in res: 549 | res['show_push_splash_ad'] = False 550 | return json.dumps(res) + 'OK' 551 | if self.launch_ad_url2 in url: 552 | res = json.loads(data) 553 | if res.get('cached_ad', {}).get('ads'): 554 | res['cached_ad']['ads'] = [] 555 | return json.dumps(res) 556 | return data 557 | 558 | def test(self, flow): 559 | req = flow.request 560 | res = flow.response 561 | data = res.text 562 | # print('url', req.url) 563 | if '你感兴趣的超话' in data: 564 | print('url', req.url) 565 | append_txt_file(data, 'temp/4.json') 566 | # if('container_discover' in req.url): 567 | # append_txt_file(data, 'temp/4.json') 568 | # if('search/finder' in req.url): 569 | # append_txt_file(data, 'temp/5.json') 570 | 571 | 572 | def response(self, flow): 573 | req = flow.request 574 | 575 | # self.test(flow) 576 | # print('\nurl:', req.url) 577 | if self.launch_ad_url1 in req.url or self.launch_ad_url2 in req.url: 578 | res = flow.response 579 | res.text = self.remove_launch_ad(req.url, res.text) 580 | return 581 | 582 | method = self.get_method(req.url) 583 | if not method: 584 | return 585 | res = flow.response 586 | data = json.loads(res.text) 587 | print(f'match {method}...') 588 | eval("self." + method)(data) 589 | res.text = json.dumps(data) 590 | 591 | 592 | asyncio.run(start_proxy(MainAddon())) -------------------------------------------------------------------------------- /底部tab.md: -------------------------------------------------------------------------------- 1 | # 说明 2 | - 此功能已突破会员限制,**非会员**也可设置,但需要前置操作,详见文末**非会员前置操作** 3 | - 操作略微繁琐,效果图如下 4 | - ![alt 效果图](https://wx4.sinaimg.cn/large/002wMSrPly1gvqvdxjs8jg60go09uhdu02.gif) 5 | 6 | # 关闭方法 7 | - 在weibo_config.js中设置tabIconVersion = 0,运行后即可关闭自定义皮肤 8 | 9 | # 打开方法 10 | 1. 在微博app中进入会员中心 -> 个性皮肤,选择一个你喜欢的皮肤进行设置 11 | 2. 非会员用户,如果只是想使用微博自带的皮肤,完成第1步即可 12 | 3. 设置完成后,后台关闭微博app 13 | 4. 在Quan-X App做相应配置,见文末。如果使用订阅weibo.conf方式可忽略。 14 | 5. 在weibo_config.js中设置tabIconVersion为大于100的任意数,每次需要更新皮肤时候设置为与上一次**不同值**即可。比如第一次tabIconVersion=101,第二次tabIconVersion=110 15 | 6. 在weibo_config.js中设置tabIconPath值为具体的皮肤文件路径,具体方法参考下文 16 | 7. 运行修改后的配置文件 17 | 8. 重新进入微博app,会提示“**您使用的皮肤已更新**”,点击更新即可。如果未弹出对话框,尝试重新退出再进入app 18 | 19 | 20 | # 皮肤文件 - 准备 21 | - 方法一:使用别人提供的zip文件,可忽略这一步 22 | - 方法二:自定义,下载[示例皮肤](https://vip.storage.weibo.com/vip_lightskin/lightskin_79_1.0.zip),然后解压后使用自己的图片替换文件夹中的图片(文件名不变),然后打包获得一个zip文件。其中,dropdown_lightskin.png为首页下拉对应的图片,tabbar_lightskin_1.png - tabbar_lightskin_5.png 为底部5个tab对应的图片,其他文件可忽略不做替换 23 | 24 | # 皮肤文件 - 链接 25 | > 若有强烈需求,可联系我进行帮忙配置 26 | - 方法一:使用别人提供的zip文件,获得一个xxx.zip链接 27 | - 方法二:将自定义的zip文件上传到[七牛云](https://portal.qiniu.com/)的对象存储中,然后在文件详情中获取文件链接。上传步骤详见下文 28 | - 方法三(不稳定):将zip文件上传到自己的GitHub项目中获取对应的raw,此方法不稳定 29 | - 方法四:需要大家集思广益,如有合适方法烦请告知[@甄星cherish](https://weibo.com/zmqcherish) 30 | 31 | 32 | # 七牛云上传步骤 33 | 1. 注册[七牛云](https://www.qiniu.com/?cps_key=1hifrwd2d5ope)账号 34 | 2. 在[空间管理](https://portal.qiniu.com/kodo/bucket)中新建空间。每个空间对应域名有效期30天,过期后可再次创建新的空间已获取新的域名(不影响配置过的皮肤) 35 | 3. 在空间管理中找到新建的空间,进入**文件管理** -> **上传文件**,上传自定义zip文件 36 | 4. 在对应的文件**详情**中获取**文件链接** 37 | 38 | # Quan-X 文本模式配置 39 | > 如果使用订阅weibo.conf方式可忽略此步骤 40 | ```properties 41 | [rewrite_local] 42 | # 微博自定义底部tab 43 | ^https://api.weibo.cn/2/!/client/light_skin url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 44 | [mitm] 45 | hostname = api.weibo.cn 46 | ``` 47 | 48 | # 非会员前置操作 49 | > 如果使用订阅weibo.conf方式可忽略此步骤 50 | ```properties 51 | [rewrite_local] 52 | # 非会员设置tab皮肤 - cherish 53 | ^https://new.vip.weibo.cn/littleskin/preview url script-response-body https://raw.githubusercontent.com/zmqcherish/proxy-script/main/weibo_main.js 54 | [mitm] 55 | hostname = new.vip.weibo.cn 56 | ``` 57 | -------------------------------------------------------------------------------- /微博皮肤.md: -------------------------------------------------------------------------------- 1 | # 设置方法 2 | - 在weibo_config.js中设置mainConfig.profileSkin1(我的相册 - 客服 8个图标)和mainConfig.profileSkin2(创作首页 - 任务中心 4个图标)两个值 3 | - 如果不需要设置mainConfig.profileSkin1 = null,mainConfig.profileSkin2 = null即可 4 | - 如果需要自定义,配置对应的图片路径,图片大小建议150 * 150,图片地址可以通过发布到自己的微博获取,或者使用微博的皮肤图标,详见下文 5 | 6 | # 全部 7 | - 所有皮肤可在文件[微博皮肤.json](https://github.com/zmqcherish/proxy-script/blob/main/file/微博皮肤.json)中查找,里面有微博目前(截至2021.10.19)的所有皮肤,文件是json格式,如需帮助可单独联系 8 | - [imgs目录](https://github.com/zmqcherish/proxy-script/tree/main/imgs/weibo)里也有部分微博商店表情包动图,每个子目录下中的imgs.txt中有url路径可供使用 9 | - 以下给出小王子、吾皇巴扎黑、长草颜团子、Fat4四组皮肤图片 10 | - 自定义皮肤效果图 11 | - ![alt 效果图1](https://wx1.sinaimg.cn/large/002wMSrPly1gvjejwovmzj60mz0k776p02.jpg) 12 | - ![alt 效果图2](https://wx4.sinaimg.cn/large/002wMSrPly1gvkw9nhexgg60go0ex1kx02.gif) 13 | 14 | # 小王子 15 | - https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_1.png 16 | ![alt 小王子1](https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_1.png) 17 | - https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_2.png 18 | ![alt 小王子2](https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_2.png) 19 | - https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_3.png 20 | ![alt 小王子3](https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_3.png) 21 | - https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_4.png 22 | ![alt 小王子4](https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_4.png) 23 | - https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_5.png 24 | ![alt 小王子5](https://h5.sinaimg.cn/upload/108/914/2019/04/16/xiaowangzi_tabbar_lightskin_5.png) 25 | 26 | # 吾皇巴扎黑 27 | - https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_1.png 28 | ![alt 吾皇巴扎黑1](https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_1.png) 29 | - https://h5.sinaimg.cn/upload/1071/632/2018/12/11/mario_tabbar_lightskin_2new1.png 30 | ![alt 吾皇巴扎黑2](https://h5.sinaimg.cn/upload/1071/632/2018/12/11/mario_tabbar_lightskin_2new1.png) 31 | - https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_3.png 32 | ![alt 吾皇巴扎黑3](https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_3.png) 33 | - https://h5.sinaimg.cn/upload/1071/632/2018/12/11/mario_tabbar_lightskin_4new1.png 34 | ![alt 吾皇巴扎黑4](https://h5.sinaimg.cn/upload/1071/632/2018/12/11/mario_tabbar_lightskin_4new1.png) 35 | - https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_5.png 36 | ![alt 吾皇巴扎黑5](https://h5.sinaimg.cn/upload/108/914/2018/11/26/mario_tabbar_lightskin_5.png) 37 | 38 | # 长草颜团子 39 | - https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_1.png 40 | ![alt 长草颜团子1](https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_1.png) 41 | - https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_2.png 42 | ![alt 长草颜团子2](https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_2.png) 43 | - https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_3.png 44 | ![alt 长草颜团子3](https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_3.png) 45 | - https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_4.png 46 | ![alt 长草颜团子4](https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_4.png) 47 | - https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_5.png 48 | ![alt 长草颜团子5](https://h5.sinaimg.cn/upload/1071/632/2018/11/06/zhangcaoyantuanzi_tabbar_lighskin_5.png) 49 | 50 | # Fat4(猫) 51 | - https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_1.png 52 | ![alt Fat4(猫)1](https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_1.png) 53 | - https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_2.png 54 | ![alt Fat4(猫)2](https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_2.png) 55 | - https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_3.png 56 | ![alt Fat4(猫)3](https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_3.png) 57 | - https://h5.sinaimg.cn/upload/1071/632/2019/02/18/tab_4.png 58 | ![alt Fat4(猫)4](https://h5.sinaimg.cn/upload/1071/632/2019/02/18/tab_4.png) 59 | - https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_5.png 60 | ![alt Fat4(猫)5](https://h5.sinaimg.cn/upload/1071/632/2019/01/11/Fat4_tabbar_lightskin_5.png) --------------------------------------------------------------------------------