├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── YTMod.sgmodule ├── config ├── Clash │ ├── 922proxy.ini │ ├── ACL4SSR_Online_Full_Games.ini │ ├── ACL4SSR_Online_Games.ini │ ├── ACL4SSR_Online_Mini_Games.ini │ ├── ES.ini │ ├── ES_Online_MultiCountry.ini │ ├── ES_ShellClash.ini │ ├── ShellClash.ini │ ├── ShellClash_Block.ini │ ├── ShellClash_Full.ini │ ├── ShellClash_Full_Block.ini │ ├── ShellClash_Nano.ini │ ├── added.list │ └── ai.list ├── Loon │ └── README.md ├── Shadowrocket │ ├── 254now.conf │ ├── Color │ │ ├── Dark_Blue_88C0FF.cfg │ │ ├── Dark_Pink_CC9B9B.cfg │ │ ├── Dark_Pink_F5C3C2.cfg │ │ ├── Dark_SepiaBlue_224478.cfg │ │ ├── Light_Blue_2784F0.cfg │ │ ├── Light_Pink_F5C3C2.cfg │ │ ├── Light_SepiaBlue_224478.cfg │ │ └── README.md │ ├── LOWERTOP.conf │ ├── eslco.conf │ └── lazy_group.conf ├── V2ray │ ├── README.md │ ├── V2rayDNScfg.json │ ├── singboxDNS.json │ └── v2rayDNS.json ├── demo.conf ├── linux │ └── ssh │ │ └── sshd_config ├── sing-box │ └── config.json └── win │ ├── .wslconfig │ └── Microsoft.PowerShell_profile.ps1 ├── hosts ├── domain.list └── translate_google.list ├── module ├── Clash │ ├── ACL4SSR_Online_Full_WithIcon.yaml │ └── eslco_ACL44SSR_Online_Full_WithIcon.yaml ├── QuantumultX │ ├── Demo.MD │ └── tc.conf ├── Stash │ ├── Talkatone_Opt.stoverride │ ├── TwitchOmega.stoverride │ ├── dns.stoverride │ ├── picsart.stoverride │ └── rates.stoverride └── Surge │ ├── LOWERTOP.sgmodule │ ├── Netflix.sgmodule │ ├── README.md │ ├── Talkatone_Opt.sgmodule │ ├── TwitchOmega.sgmodule │ ├── TwitchOpt.sgmodule │ ├── UltraMobileWiFiCalling.sgmodule │ ├── YTMod.sgmodule │ └── Youtube.Enhance.sgmodule ├── override ├── clash │ └── override.ymal └── singbox │ └── README.md ├── rule ├── Clash │ ├── Bilibili │ │ └── BiliBili.list │ ├── DEX │ │ └── DEX.list │ ├── DNS │ │ └── DNS.list │ ├── README.md │ ├── Streaming │ │ └── Streaming.list │ ├── Talkatone │ │ ├── ttblock.list │ │ ├── ttdirect.list │ │ └── ttproxy.list │ ├── Telegram │ │ └── Telegram.list │ ├── YouTube │ │ └── YouTube.list │ └── wargaming │ │ └── wg_login.list ├── QuantumultX │ ├── Bilibili │ │ └── Bilibili.list │ ├── Talkatone │ │ ├── ttblock.list │ │ ├── ttdirect.list │ │ └── ttproxy.list │ └── YouTube │ │ └── YouTube.list ├── Shadowrocket │ ├── Bilibili │ │ └── Bilibili.list │ ├── Streaming │ │ └── Streaming.list │ ├── Telegram │ │ └── Telegram.list │ ├── Twitch │ │ ├── Direct.list │ │ ├── Proxy.list │ │ └── Reject.list │ ├── UnBan.list │ ├── Wotb.list │ ├── YouTube │ │ └── YouTube.list │ ├── idomain │ │ └── domain.list │ └── talkatone │ │ ├── ttblock.list │ │ ├── ttdirect.list │ │ └── ttproxy.list ├── Surge │ ├── Apple │ │ └── Apple.list │ ├── Blockchain │ │ ├── Domain.list │ │ └── Exchange.list │ ├── Telegram │ │ └── Telegram.list │ ├── Twitch │ │ ├── TD.list │ │ ├── TP.list │ │ └── TR.list │ ├── Twitter │ │ └── Twitter.list │ └── YouTube │ │ └── YouTube.list ├── Tele_Codes.txt ├── general │ ├── AI.list │ ├── AIDE.list │ ├── Apple │ │ ├── 013229.csv │ │ ├── 101555.list │ │ ├── Apple.list │ │ ├── support.apple.com101555.html │ │ └── support.apple.com103229.html │ ├── AppleID.list │ ├── AppleNews.list │ ├── Bilibili │ │ └── Bilibili.list │ ├── Bitwarden.list │ ├── CryptoDEX.list │ ├── DEX │ │ └── DEX.list │ ├── DirectN.list │ ├── Facebook │ │ └── Facebook.list │ ├── Global │ │ └── Global.list │ ├── IPTV_Global │ │ └── IPTV_Global.list │ ├── IPTV_Mainland │ │ └── IPTV_Mainland.list │ ├── InstantChat │ │ └── InstantChat.list │ ├── Paypal.list │ ├── Streaming │ │ └── Streaming.list │ ├── Talkatone │ │ ├── ttblock.list │ │ ├── ttdirect.list │ │ └── ttproxy.list │ ├── Telegram │ │ └── Telegram.list │ ├── Twitter │ │ └── Twitter.list │ ├── UnBan.list │ ├── WeChat │ │ └── Tags_Code.txt │ ├── XianYu │ │ └── XianYu.list │ ├── XiaoHongShu │ │ └── XiaoHongShu.list │ ├── YouTube │ │ ├── YouTube.list │ │ └── YouTubeM.list │ ├── bank.list │ ├── onlinepay.list │ └── wargaming │ │ ├── wg_login.list │ │ └── wotb.txt └── swh_data.json ├── script ├── clash │ ├── clash_set.js │ └── eslco_Script.js ├── linux │ ├── 254c_kejilion.sh │ ├── ResolveSetup.md │ ├── TG-SSH-check-notify.sh │ ├── TG-check-notify.sh │ ├── debian │ │ └── rootpw.sh │ ├── dnsconfig.sh │ ├── exp │ │ ├── TG-SSH-check-notify_CCS.sh │ │ ├── TG-SSH-notify_test.sh │ │ ├── dnsconf-test.sh │ │ └── setup_demo.sh │ ├── pkiller.sh │ ├── restore-apt.sh │ ├── rootpw.sh │ └── rootsetup.sh └── win │ └── pkiller.sh ├── source ├── MISC │ ├── FlagCode.html │ └── ytimg_format.html ├── Maasea │ ├── README.md │ ├── sgmodule-master │ │ ├── Alidns.sgmodule │ │ ├── Bilibili.Helper.sgmodule │ │ ├── KeepAds.sgmodule │ │ ├── LICENSE │ │ ├── README.md │ │ ├── SRSS.sgmodule │ │ ├── Script │ │ │ ├── Bilibili │ │ │ │ ├── README.md │ │ │ │ ├── build.js │ │ │ │ ├── dist │ │ │ │ │ ├── bilibili.helper.beta.js │ │ │ │ │ └── bilibili.helper.v2.beta.js │ │ │ │ ├── jsonMain.js │ │ │ │ ├── lib │ │ │ │ │ ├── client.d.ts │ │ │ │ │ ├── client.js │ │ │ │ │ ├── decode-grpc.js │ │ │ │ │ ├── google │ │ │ │ │ │ └── protobuf │ │ │ │ │ │ │ ├── any.d.ts │ │ │ │ │ │ │ └── any.js │ │ │ │ │ ├── protos │ │ │ │ │ │ ├── dmView.d.ts │ │ │ │ │ │ ├── dmView.js │ │ │ │ │ │ ├── dynAll.d.ts │ │ │ │ │ │ ├── dynAll.js │ │ │ │ │ │ ├── mainReply.d.ts │ │ │ │ │ │ ├── mainReply.js │ │ │ │ │ │ ├── modeStatus.d.ts │ │ │ │ │ │ ├── modeStatus.js │ │ │ │ │ │ ├── playerUnite.d.ts │ │ │ │ │ │ ├── playerUnite.js │ │ │ │ │ │ ├── playerUrl.d.ts │ │ │ │ │ │ ├── playerUrl.js │ │ │ │ │ │ ├── searchAll.d.ts │ │ │ │ │ │ ├── searchAll.js │ │ │ │ │ │ ├── view.d.ts │ │ │ │ │ │ ├── view.js │ │ │ │ │ │ ├── viewProgress.d.ts │ │ │ │ │ │ ├── viewProgress.js │ │ │ │ │ │ ├── viewUnite.d.ts │ │ │ │ │ │ └── viewUnite.js │ │ │ │ │ ├── text-polyfill.js │ │ │ │ │ ├── time-polyfill.js │ │ │ │ │ └── urls.js │ │ │ │ ├── main.js │ │ │ │ ├── package.json │ │ │ │ ├── protos │ │ │ │ │ ├── dmView.proto │ │ │ │ │ ├── dynAll.proto │ │ │ │ │ ├── mainReply.proto │ │ │ │ │ ├── modeStatus.proto │ │ │ │ │ ├── playerUnite.proto │ │ │ │ │ ├── playerUrl.proto │ │ │ │ │ ├── searchAll.proto │ │ │ │ │ ├── view.proto │ │ │ │ │ ├── viewProgress.proto │ │ │ │ │ └── viewUnite.proto │ │ │ │ ├── src │ │ │ │ │ ├── handler.js │ │ │ │ │ ├── jsonHandler.js │ │ │ │ │ └── utils.js │ │ │ │ └── types │ │ │ │ │ ├── builtIn.d.ts │ │ │ │ │ ├── global.d.ts │ │ │ │ │ ├── quantumultX.d.ts │ │ │ │ │ └── surge.d.ts │ │ │ ├── Hptoon │ │ │ │ └── common.js │ │ │ ├── Keep │ │ │ │ ├── basic.js │ │ │ │ ├── course.js │ │ │ │ ├── kad.js │ │ │ │ └── my.js │ │ │ ├── SRSS │ │ │ │ ├── README.md │ │ │ │ ├── build.js │ │ │ │ ├── dist │ │ │ │ │ └── srss.js │ │ │ │ ├── index.js │ │ │ │ ├── jsconfig.json │ │ │ │ ├── lib │ │ │ │ │ ├── client.d.ts │ │ │ │ │ ├── client.js │ │ │ │ │ ├── env.js │ │ │ │ │ ├── textPolyfill.js │ │ │ │ │ └── urls.js │ │ │ │ ├── package.json │ │ │ │ ├── script │ │ │ │ │ └── decodeProtobuf.js │ │ │ │ ├── src │ │ │ │ │ ├── constant.js │ │ │ │ │ ├── httpUtil.js │ │ │ │ │ ├── rssUtil.js │ │ │ │ │ └── x.js │ │ │ │ └── types │ │ │ │ │ ├── env.d.ts │ │ │ │ │ └── type.d.ts │ │ │ ├── Tools │ │ │ │ └── alidns.js │ │ │ ├── WeChat │ │ │ │ └── wechat.json │ │ │ ├── WeRead │ │ │ │ └── weread.js │ │ │ └── Youtube │ │ │ │ ├── .eslintignore │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── README.md │ │ │ │ ├── buf.gen.yaml │ │ │ │ ├── build.mjs │ │ │ │ ├── dist │ │ │ │ ├── youtube.request.preview.js │ │ │ │ └── youtube.response.preview.js │ │ │ │ ├── index.ts │ │ │ │ ├── lib │ │ │ │ ├── client.ts │ │ │ │ ├── env.ts │ │ │ │ ├── factory.ts │ │ │ │ ├── googleTranslate.ts │ │ │ │ ├── protobuf │ │ │ │ │ ├── component │ │ │ │ │ │ ├── context_pb.d.ts │ │ │ │ │ │ ├── context_pb.js │ │ │ │ │ │ ├── framework_pb.d.ts │ │ │ │ │ │ ├── framework_pb.js │ │ │ │ │ │ ├── label_pb.d.ts │ │ │ │ │ │ └── label_pb.js │ │ │ │ │ ├── request │ │ │ │ │ │ ├── common_pb.d.ts │ │ │ │ │ │ └── common_pb.js │ │ │ │ │ └── response │ │ │ │ │ │ ├── browse_pb.d.ts │ │ │ │ │ │ ├── browse_pb.js │ │ │ │ │ │ ├── frameworkUpdate_pb.d.ts │ │ │ │ │ │ ├── frameworkUpdate_pb.js │ │ │ │ │ │ ├── guide_pb.d.ts │ │ │ │ │ │ ├── guide_pb.js │ │ │ │ │ │ ├── next_pb.d.ts │ │ │ │ │ │ ├── next_pb.js │ │ │ │ │ │ ├── player_pb.d.ts │ │ │ │ │ │ ├── player_pb.js │ │ │ │ │ │ ├── search_pb.d.ts │ │ │ │ │ │ ├── search_pb.js │ │ │ │ │ │ ├── setting_pb.d.ts │ │ │ │ │ │ ├── setting_pb.js │ │ │ │ │ │ ├── shorts_pb.d.ts │ │ │ │ │ │ ├── shorts_pb.js │ │ │ │ │ │ ├── watch_pb.d.ts │ │ │ │ │ │ └── watch_pb.js │ │ │ │ └── text-polyfill.mjs │ │ │ │ ├── package-lock.json │ │ │ │ ├── package.json │ │ │ │ ├── protobuf │ │ │ │ ├── component │ │ │ │ │ ├── context.proto │ │ │ │ │ ├── framework.proto │ │ │ │ │ └── label.proto │ │ │ │ ├── request │ │ │ │ │ └── common.proto │ │ │ │ └── response │ │ │ │ │ ├── browse.proto │ │ │ │ │ ├── guide.proto │ │ │ │ │ ├── next.proto │ │ │ │ │ ├── player.proto │ │ │ │ │ ├── search.proto │ │ │ │ │ ├── setting.proto │ │ │ │ │ ├── shorts.proto │ │ │ │ │ └── watch.proto │ │ │ │ ├── src │ │ │ │ ├── response.ts │ │ │ │ └── youtube.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── types │ │ │ │ ├── builtIn.d.ts │ │ │ │ ├── client.d.ts │ │ │ │ ├── quantumultX.d.ts │ │ │ │ └── surge.d.ts │ │ ├── URLRewrite.sgmodule │ │ ├── WeRead.sgmodule │ │ ├── YouTube.Enhance.sgmodule │ │ └── assets │ │ │ └── button.svg │ └── sgmodule │ │ └── Youtube │ │ └── dist │ │ ├── youtube.request.preview.js │ │ └── youtube.response.preview.js ├── ResPlay.py ├── ShellCrash │ ├── README.md │ └── rules │ │ ├── clash_providers │ │ ├── DustinWin_Geo_Ads.yaml │ │ ├── DustinWin_Geo_Full.yaml │ │ ├── DustinWin_RS_Ads.yaml │ │ ├── DustinWin_RS_Full.yaml │ │ ├── DustinWin_RS_Light.yaml │ │ ├── ShellCrash_Geo_Nano.yaml │ │ └── clash_providers.list │ │ └── singbox_providers │ │ ├── DustinWin_Geo_Ads.json │ │ ├── DustinWin_Geo_Full.json │ │ ├── DustinWin_RS_Ads.json │ │ ├── DustinWin_RS_Full.json │ │ ├── DustinWin_RS_Light.json │ │ ├── ShellCrash_Geo_Nano.json │ │ └── singbox_providers.list ├── bulianglin │ └── psub │ │ └── frontend.html ├── cmliu │ ├── CF-Workers-SUB │ │ ├── .github │ │ │ └── workflows │ │ │ │ └── sync.yml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _worker.js │ │ ├── cfwsub_v0.js │ │ └── sub.png │ └── SUBWEB │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitattributes │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── dist │ │ ├── css │ │ │ └── main.css │ │ ├── favicon.ico │ │ ├── index.html │ │ └── js │ │ │ └── main.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ │ ├── src │ │ ├── assets │ │ │ └── css │ │ │ │ └── index.less │ │ ├── config.ts │ │ ├── index.ts │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js ├── eslco │ ├── cfwp.js │ └── es_cfwsub.js ├── fscarmen │ └── warp_fscarmen.sh ├── ipcheck │ ├── PublicDNS.txt │ ├── skk.moe.list │ └── v2ray.local.txt ├── sublink │ ├── clash.yaml │ └── surge.conf └── subs │ └── 193bb2685cf.yaml └── test ├── CMS_AD_cache.html ├── hello_world.bats └── helloworld.html /.gitignore: -------------------------------------------------------------------------------- 1 | config/Shadowrocket/254now_Latest.conf 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "dotnetAcquisitionExtension.proxyUrl": "https://127.0.0.1:20010" 3 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 📝 Basic Introduction 2 | This Repository is a open storage used for a lots of network proxy tools like Shadowrocket, SingBox, V2ray, Clash, Surge, QuantumultX, Loon etc. 3 | # 🔰 License 4 | [![](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](https://creativecommons.org/licenses/by-sa/4.0/deed.en) 5 | * CC-BY-SA-4.0 6 | 7 | 8 | ## Starry Stars! 9 | 10 | 11 | 12 | 13 | Star History Chart 14 | 15 | 16 | -------------------------------------------------------------------------------- /config/Clash/ACL4SSR_Online_Games.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;acl4SSR规则-在线更新版 4 | 5 | ;去广告:支持 6 | ;自动测速:支持 7 | ;微软分流:支持 8 | ;苹果分流:支持 9 | ;增强中国IP段:不支持 10 | ;增强国外GFW:不支持 11 | 12 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 13 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list 14 | ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 15 | ruleset=🍃 应用净化,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 16 | ruleset=📢 谷歌FCM,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list 17 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list 18 | ruleset=Ⓜ️ 微软服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list 19 | ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list 20 | ruleset=📲 电报信息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list 21 | ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list 22 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list 23 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 24 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list 25 | ruleset=🎮 游戏服务,https://raw.githubusercontent.com/LM-Firefly/Rules/master/Game.list 26 | ruleset=🎯 全球直连,[]GEOIP,CN 27 | ruleset=🐟 漏网之鱼,[]FINAL 28 | 29 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]DIRECT`.* 30 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 31 | custom_proxy_group=🎮 游戏服务`select`[]🎮 游戏节点`[]🎯 全球直连`.* 32 | custom_proxy_group=🎮 游戏节点`select`(游戏|Game|game|加速)` 33 | custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🎯 全球直连`.* 34 | custom_proxy_group=📲 电报信息`select`[]🚀 节点选择`[]🎯 全球直连`.* 35 | custom_proxy_group=Ⓜ️ 微软服务`select`[]🎯 全球直连`[]🚀 节点选择`.* 36 | custom_proxy_group=🍎 苹果服务`select`[]🚀 节点选择`[]🎯 全球直连`.* 37 | custom_proxy_group=📢 谷歌FCM`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.* 38 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 39 | custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT 40 | custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT 41 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.* 42 | 43 | enable_rule_generator=true 44 | overwrite_original_rules=true 45 | 46 | -------------------------------------------------------------------------------- /config/Clash/ACL4SSR_Online_Mini_Games.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;acl4SSR规则-在线版 4 | 5 | ;去广告:支持 6 | ;自动测速:支持 7 | ;微软分流:不支持 8 | ;苹果分流:不支持 9 | ;增强中国IP段:不支持 10 | ;增强国外GFW:不支持 11 | 12 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 13 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list 14 | ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 15 | ruleset=🛑 全球拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 16 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list 17 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list 18 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list 19 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list 20 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 21 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list 22 | ruleset=🎮 游戏服务,https://raw.githubusercontent.com/LM-Firefly/Rules/master/Game.list 23 | ruleset=🎯 全球直连,[]GEOIP,CN 24 | ruleset=🐟 漏网之鱼,[]FINAL 25 | 26 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]DIRECT`.* 27 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 28 | custom_proxy_group=🎮 游戏服务`select`[]🎮 游戏节点`[]🎯 全球直连`.* 29 | custom_proxy_group=🎮 游戏节点`select`(游戏|Game|game|加速)` 30 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 31 | custom_proxy_group=🛑 全球拦截`select`[]REJECT`[]DIRECT 32 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]🎯 全球直连`[]♻️ 自动选择`.* 33 | 34 | enable_rule_generator=true 35 | overwrite_original_rules=true 36 | -------------------------------------------------------------------------------- /config/Clash/ShellClash_Nano.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 3 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list 4 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyLite.list 5 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 6 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list 7 | ruleset=🎯 全球直连,[]GEOIP,CN 8 | ruleset=🐟 漏网之鱼,[]FINAL 9 | 10 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`select`.* 11 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 12 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 13 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]♻️ 自动选择`[]DIRECT 14 | 15 | enable_rule_generator=true 16 | overwrite_original_rules=true 17 | -------------------------------------------------------------------------------- /config/Clash/added.list: -------------------------------------------------------------------------------- 1 | DOMAIN-SUFFIX,922proxy.com 2 | DOMAIN-SUFFIX,proxys5.net 3 | DOMAIN-SUFFIX,adspower.net 4 | -------------------------------------------------------------------------------- /config/Clash/ai.list: -------------------------------------------------------------------------------- 1 | DOMAIN-KEYWORD,openai 2 | DOMAIN-SUFFIX,AI.com 3 | DOMAIN-SUFFIX,cdn.auth0.com 4 | DOMAIN-SUFFIX,openaiapi-site.azureedge.net 5 | DOMAIN-SUFFIX,opendns.com 6 | DOMAIN-SUFFIX,bing.com 7 | DOMAIN-SUFFIX,civitai.com 8 | DOMAIN,bard.google.com 9 | DOMAIN,ai.google.dev 10 | DOMAIN,gemini.google.com 11 | DOMAIN-SUFFIX,googleapis.com 12 | DOMAIN-SUFFIX,sentry.io 13 | DOMAIN-SUFFIX,intercom.io 14 | DOMAIN-SUFFIX,featuregates.org 15 | DOMAIN-SUFFIX,statsigapi.net 16 | DOMAIN-SUFFIX,claude.ai 17 | DOMAIN-SUFFIX,Anthropic.com 18 | DOMAIN-SUFFIX,opera-api.com 19 | DOMAIN-SUFFIX,aistudio.google.com 20 | DOMAIN-SUFFIX,ciciai.com 21 | DOMAIN-KEYWORD,chatgpt 22 | -------------------------------------------------------------------------------- /config/Loon/README.md: -------------------------------------------------------------------------------- 1 | # “” Loon DIR“” -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Dark_Blue_88C0FF.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%231F1F1F&NavigationBar2Color=%23000000&NavigationBarTextColor=%23FFFFFF&NavigationBar2TextColor=%23FFFFFF&TabBarColor=%231F1F1F&TabBarBorderColor=%2300000000&TabBarSelectedColor=%2380C0FF&TabBarUnselectedColor=%23B1B1B3&TableBackgroundColor=%23000000&TableCellBackgroundColor=%231A1A1A&TableCellSelectedBackgroundColor=%23404040&TableSeparatorColor=%23333333&TextFieldTextColor=%23CCCCCC&PlaceholderColor=%23CCCCCC&TextLabelTextColor=%23FFFFFF&DetailLabelTextColor=%23CCCCCC&TextLabelDeleteColor=%23ED402E&HeaderFooterTextColor=%23808080&SearchFieldBackgroundColor=%23333333&IndicatorColor=%23FFFFFF&ButtonIconColor=%2388C0FF&ButtonNormalColor=%23FFFFFF&ButtonNormal2Color=%23CCFFFFFF&ButtonNormal3Color=%23808080&ButtonHighlightedColor=%2399FFFFFF&ButtonHighlighted2Color=%23FFFFFF&ButtonHighlighted3Color=%23000000&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2380FFFFFF&PingSuccessTextColor=%232473BD&PingTimeoutTextColor=%23DAC0CB&DefaultDotColor=%23FE9400&HUDBackgroundColor=%232F2F2F&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Dark_Pink_CC9B9B.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%23CF9B9B&NavigationBar2Color=%23D99C9C&NavigationBarTextColor=%23FFFFFF&NavigationBar2TextColor=%23FFFFFF&TabBarColor=%23CC9B9B&TabBarBorderColor=%23E5C3C2&TabBarSelectedColor=%23EFF2EF&TabBarUnselectedColor=%23505050&TableBackgroundColor=%23AA8B8B&TableCellBackgroundColor=%23CA9C9C&TableCellSelectedBackgroundColor=%23DDB9B9&TableSeparatorColor=%23EAC3C2&TextFieldTextColor=%23EFEFEF&PlaceholderColor=%23FF0000&TextLabelTextColor=%23202020&DetailLabelTextColor=%23ECECEC&TextLabelDeleteColor=%23ED402E&HeaderFooterTextColor=%23404040&SearchFieldBackgroundColor=%23E5C3C2&IndicatorColor=%23FFC3C2&ButtonIconColor=%23FFC8C9&ButtonNormalColor=%23FFFFFF&ButtonNormal2Color=%23CCFFFFFF&ButtonNormal3Color=%23FCC8C9&ButtonHighlightedColor=%23CD8989&ButtonHighlighted2Color=%23F98B8B&ButtonHighlighted3Color=%23000000&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2380FFFFFF&PingSuccessTextColor=%23F4F3F4&PingTimeoutTextColor=%23794540&DefaultDotColor=%23FF9400&HUDBackgroundColor=%23D5B6B7&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Dark_Pink_F5C3C2.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%23F5C3C2&NavigationBar2Color=%23F6C3C2&NavigationBarTextColor=%23FEFEFE&NavigationBar2TextColor=%23EFEFEF&TabBarColor=%23EFC3C2&TabBarBorderColor=%23AA9B9B&TabBarSelectedColor=%23EFF2EF&TabBarUnselectedColor=%23505050&TableBackgroundColor=%23AA8B8B&TableCellBackgroundColor=%23E9C3C2&TableCellSelectedBackgroundColor=%23D8B8B9&TableSeparatorColor=%23D98B8B&TextFieldTextColor=%23F3F3F3&PlaceholderColor=%23DF9898&TextLabelTextColor=%23202020&DetailLabelTextColor=%23303030&TextLabelDeleteColor=%23ED402E&HeaderFooterTextColor=%23FAFAFA&SearchFieldBackgroundColor=%23E5C3C2&IndicatorColor=%23CD8989&ButtonIconColor=%23CF8989&ButtonNormalColor=%23FFFFFF&ButtonNormal2Color=%23CCFFFFFF&ButtonNormal3Color=%23FCC8C9&ButtonHighlightedColor=%23CD8989&ButtonHighlighted2Color=%23A98B8B&ButtonHighlighted3Color=%23AF4629&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2380FFFFFF&PingSuccessTextColor=%23EFF1F2&PingTimeoutTextColor=%23794540&DefaultDotColor=%23FF9400&HUDBackgroundColor=%23D9B9BA&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Dark_SepiaBlue_224478.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%23224478&NavigationBar2Color=%23224478&NavigationBarTextColor=%23E5E5E5&NavigationBar2TextColor=%23F5F5F5&TabBarColor=%23B09078&TabBarBorderColor=%23785748&TabBarSelectedColor=%23224476&TabBarUnselectedColor=%23D4D4D5&TableBackgroundColor=%23A08069&TableCellBackgroundColor=%23C0A089&TableCellSelectedBackgroundColor=%23B29888&TableSeparatorColor=%23785748&TextFieldTextColor=%23EAEAE0&PlaceholderColor=%23DEC490&TextLabelTextColor=%23101010&DetailLabelTextColor=%23224478&TextLabelDeleteColor=%23CF5747&HeaderFooterTextColor=%23224478&SearchFieldBackgroundColor=%23C0A289&IndicatorColor=%23FFEDDD&ButtonIconColor=%23224878&ButtonNormalColor=%23EFFFFE&ButtonNormal2Color=%23EEEEEE&ButtonNormal3Color=%23224878&ButtonHighlightedColor=%23A08069&ButtonHighlighted2Color=%23A08069&ButtonHighlighted3Color=%23784829&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2360FFFFFF&PingSuccessTextColor=%23225499&PingTimeoutTextColor=%23594440&DefaultDotColor=%23FC9400&HUDBackgroundColor=%23A89080&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Light_Blue_2784F0.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%232473BD&NavigationBar2Color=%232475BD&NavigationBarTextColor=%23FEFEFE&NavigationBar2TextColor=%23F5F5F5&TabBarColor=%23CFCFCF&TabBarBorderColor=%23E7E7E7&TabBarSelectedColor=%232473BD&TabBarUnselectedColor=%23808080&TableBackgroundColor=%23CFCFCF&TableCellBackgroundColor=%23DFDFDF&TableCellSelectedBackgroundColor=%23E6E6E6&TableSeparatorColor=%23C4C4C4&TextFieldTextColor=%234D4D4D&PlaceholderColor=%23AAAAAA&TextLabelTextColor=%23000000&DetailLabelTextColor=%23808080&TextLabelDeleteColor=%23ED402E&HeaderFooterTextColor=%23808080&SearchFieldBackgroundColor=%23FFFFFF&IndicatorColor=%238F8F8F&ButtonIconColor=%232784F0&ButtonNormalColor=%23FFFFFF&ButtonNormal2Color=%23CCFFFFFF&ButtonNormal3Color=%23808080&ButtonHighlightedColor=%23FEFEFE&ButtonHighlighted2Color=%23FFFFFF&ButtonHighlighted3Color=%23000000&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2380FFFFFF&PingSuccessTextColor=%232872BD&PingTimeoutTextColor=%23DC9191&DefaultDotColor=%23FF9400&HUDBackgroundColor=%23888888&v=1.0 2 | -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Light_Pink_F5C3C2.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%23F5C3C2&NavigationBar2Color=%23F9C3C2&NavigationBarTextColor=%23FFFFFF&NavigationBar2TextColor=%23FFFFFF&TabBarColor=%23EFC3C2&TabBarBorderColor=%239A9A9A&TabBarSelectedColor=%23EFF2EF&TabBarUnselectedColor=%23505050&TableBackgroundColor=%23AA8B8B&TableCellBackgroundColor=%23E9C0C2&TableCellSelectedBackgroundColor=%23DDB9B9&TableSeparatorColor=%23D98B8B&TextFieldTextColor=%23EFEFEF&PlaceholderColor=%23FF0000&TextLabelTextColor=%23FCFCFC&DetailLabelTextColor=%23FAFAFA&TextLabelDeleteColor=%23ED402E&HeaderFooterTextColor=%23404040&SearchFieldBackgroundColor=%23E5C3C2&IndicatorColor=%23CD8989&ButtonIconColor=%23CD8989&ButtonNormalColor=%23FFFFFF&ButtonNormal2Color=%23CCFFFFFF&ButtonNormal3Color=%23FCC8C9&ButtonHighlightedColor=%23CD8989&ButtonHighlighted2Color=%23A98B8B&ButtonHighlighted3Color=%23000000&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2380FFFFFF&PingSuccessTextColor=%23F4F3F4&PingTimeoutTextColor=%23794540&DefaultDotColor=%23FF9400&HUDBackgroundColor=%23D5B6B7&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/Light_SepiaBlue_224478.cfg: -------------------------------------------------------------------------------- 1 | shadowrocket://color?NavigationBarColor=%23224478&NavigationBar2Color=%23224489&NavigationBarTextColor=%23E5E5E5&NavigationBar2TextColor=%23F5F5F5&TabBarColor=%23B9A089&TabBarBorderColor=%23AA9989&TabBarSelectedColor=%23224476&TabBarUnselectedColor=%23D0D0D0&TableBackgroundColor=%23A69080&TableCellBackgroundColor=%23BEA999&TableCellSelectedBackgroundColor=%23B0A099&TableSeparatorColor=%23333333&TextFieldTextColor=%23EAECEC&PlaceholderColor=%23DEC490&TextLabelTextColor=%23101010&DetailLabelTextColor=%23224478&TextLabelDeleteColor=%23CF5747&HeaderFooterTextColor=%23224478&SearchFieldBackgroundColor=%23BEAA9A&IndicatorColor=%23224578&ButtonIconColor=%23224878&ButtonNormalColor=%23EFFFFE&ButtonNormal2Color=%23EEEEEE&ButtonNormal3Color=%23224878&ButtonHighlightedColor=%23A69089&ButtonHighlighted2Color=%23DDC490&ButtonHighlighted3Color=%23785748&ButtonDisabledColor=%2380FFFFFF&ButtonDisabled2Color=%2360FFFFFF&PingSuccessTextColor=%23225499&PingTimeoutTextColor=%23593044&DefaultDotColor=%23FC9400&HUDBackgroundColor=%23A89080&v=1.0 -------------------------------------------------------------------------------- /config/Shadowrocket/Color/README.md: -------------------------------------------------------------------------------- 1 | # Name: [__README.md__](https://raw.githubusercontent.com/254c/base/main/Shadowrocket/Color/README.md) 2 | 3 | 4 | 5 | 6 | ## Usage Tips: 7 | > Copy the **CONTENT** of url of any example.ini and paste it to Shadowrocket's ADD button and download it. 8 | > 9 | 10 | > ## !(Caution) (***Shadowrocket still does not support directly parsing from the URL of Github repository***) 11 | - [Light_Blue_2784F0.cfg](https://raw.githubusercontent.com/254c/base/main/Shadowrocket/Color/Light_Blue_2784F0.cfg) 12 | 13 | - [Dark_Blue_88C0FF.cfg](https://raw.githubusercontent.com/254c/base/main/Shadowrocket/Color/Dark_Blue_88C0FF.cfg) 14 | 15 | - . . . . 16 | 17 | ## Well Done! 18 | 19 | > You can create a similar Theme cfg like them! 20 | 21 | 22 | # To be Updated 23 | -------------------------------------------------------------------------------- /config/V2ray/README.md: -------------------------------------------------------------------------------- 1 | # This is a Dir of V2ray Repo storages. 2 | 3 | ## Disclaimer 4 | - Just for test and study usages only. Do not share with others plz! 5 | > Test template and related config files. Uploaded by author eslco. 6 | ## License 7 | - CC BY 4.0 LICENCE 8 | -------------------------------------------------------------------------------- /config/V2ray/V2rayDNScfg.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosts": { 3 | "dns.google": "8.8.4.4", 4 | "cloudflare-dns.com": "1.0.0.1", 5 | "security.cloudflare-dns.com": "1.0.0.2", 6 | "dns.twnic.tw": ["101.102.103.104","101.101.101.101"], 7 | "dns.adguard-dns.com": ["94.140.14.14","94.140.15.15"], 8 | "www.chaturbate.com": ["104.16.41.196", "104.16.42.196", "104.16.43.196", "104.16.44.196", "104.16.45.196"], 9 | "www.gold.org": ["104.16.183.15", "104.16.35.67"], 10 | "geosite:category-ads-all": "127.0.0.1" 11 | }, 12 | "servers": [ 13 | { 14 | "address": "https://doh.apad.pro/dns-query", 15 | "domains": [ 16 | "geosite:steam","geosite:cloudflare","geosite:geolocation-!cn","www.apple.com","speedtest.cn", 17 | "la.visa.nyc.mn","gh.esin.cloud","aesin.sbs","esdns.ggff.net","wotblitz.aisa","wotblitz.com" 18 | ], 19 | "expectIPs": ["geoip:!cn"], 20 | "skipFallback": false, 21 | "clientIp": "1.34.1.0", 22 | "queryStrategy": "UseIPv4" 23 | }, 24 | { 25 | "address": "https://public.dns.iij.jp/dns-query", 26 | "domains": [ 27 | "geosite:geolocation-cn","geoip:private","geosite:cn" 28 | ], 29 | "expectIPs": ["geoip:cn"], 30 | "skipFallback": false, 31 | "clientIp": "1.0.1.0", 32 | "queryStrategy": "UseIPv4" 33 | }, 34 | { 35 | "address": "https://dns.google/dns-query", 36 | "domains": ["geosite:disney","geosite:openai","geosite:netflix" 37 | ], 38 | "expectIPs": ["geoip:!cn"], 39 | "skipFallback": true, 40 | "clientIp": "1.34.1.0", 41 | "queryStrategy": "UseIP" 42 | }, 43 | { 44 | "address": "localhost", 45 | "skipFallback": true 46 | } 47 | ], 48 | "queryStrategy": "UseIP", 49 | "disableCache": true, 50 | "disableFallback": true, 51 | "disableFallbackIfMatch": false, 52 | "tag": "dns_inbound" 53 | } -------------------------------------------------------------------------------- /config/V2ray/singboxDNS.json: -------------------------------------------------------------------------------- 1 | { 2 | "servers": [ 3 | { 4 | "tag": "dns-resolver", 5 | "address": "101.102.103.104", 6 | "detour": "direct" 7 | }, 8 | { 9 | "tag": "dns_proxy", 10 | "address": "https://doh.apad.pro/dns-query", 11 | "address_resolver": "dns-resolver", 12 | "strategy": "ipv4_only", 13 | "detour": "proxy" 14 | }, 15 | { 16 | "tag": "dns_direct", 17 | "address": "https://dns.adguard-dns.com/dns-query", 18 | "address_resolver": "dns-resolver", 19 | "strategy": "ipv4_only", 20 | "detour": "direct" 21 | }, 22 | { 23 | "tag": "dns_block", 24 | "address": "rcode://success" 25 | } 26 | ], 27 | "rules": [ 28 | { 29 | "rule_set": [ 30 | "geosite-geolocation-!cn" 31 | ], 32 | "server": "dns_proxy" 33 | }, 34 | { 35 | "outbound": "any", 36 | "server": "dns_direct" 37 | }, 38 | { 39 | "rule_set": [ 40 | "geosite-category-ads-all" 41 | ], 42 | "server": "dns_block", 43 | "query_type": [ 44 | "A", 45 | "AAAA" 46 | ] 47 | } 48 | ], 49 | "final": "dns_proxy", 50 | "strategy": "ipv4_only" 51 | } -------------------------------------------------------------------------------- /config/V2ray/v2rayDNS.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosts": { 3 | "la.visa.nyc.mn": "142.171.88.212", 4 | "dns.google": "8.8.4.4", 5 | "cloudflare-dns.com": "1.0.0.1", 6 | "security.cloudflare-dns.com": "1.0.0.2", 7 | "dns.twnic.tw": ["101.102.103.104","101.101.101.101"], 8 | "dns.adguard-dns.com": ["94.140.14.14","94.140.15.15"], 9 | "geosite:category-ads-all": "127.0.0.1" 10 | }, 11 | "servers": [ 12 | { 13 | "address": "https://1.0.0.1/dns-query", 14 | "domains": [ 15 | "geosite:cloudflare","geosite:geolocation-!cn", 16 | "www.apple.com","la.visa.nyc.mn" 17 | ], 18 | "expectIPs": ["geoip:!cn"], 19 | "skipFallback": false, 20 | "clientIp": "1.34.1.0", 21 | "queryStrategy": "AsIs" 22 | }, 23 | { 24 | "address": "https://dns.adguard-dns.com/dns-query", 25 | "domains": [ 26 | "geosite:geolocation-cn","geoip:private","geosite:cn","la.visa.nyc.mn" 27 | ], 28 | "expectIPs": ["geoip:cn"], 29 | "skipFallback": false, 30 | "clientIp": "1.34.1.0", 31 | "queryStrategy": "AsIs" 32 | }, 33 | { 34 | "address": "https://dns.google/dns-query", 35 | "domains": [ 36 | "geosite:openai","geosite:netflix" 37 | ], 38 | "expectIPs": ["geoip:!cn"], 39 | "skipFallback": true, 40 | "clientIp": "1.34.1.0", 41 | "queryStrategy": "AsIs" 42 | }, 43 | { 44 | "address": "localhost", 45 | "skipFallback": true 46 | } 47 | ], 48 | "queryStrategy": "AsIs", 49 | "disableCache": true, 50 | "disableFallback": false, 51 | "disableFallbackIfMatch": false, 52 | "tag": "dns_inbound" 53 | } -------------------------------------------------------------------------------- /config/win/.wslconfig: -------------------------------------------------------------------------------- 1 | # Settings apply across all Linux distros running on WSL 2 2 | [wsl2] 3 | 4 | # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB 5 | memory=4GB 6 | 7 | # Sets amount of swap storage space to 8GB, default is 25% of available RAM 8 | swap=4GB 9 | 10 | # Sets the VM to use two virtual processors 11 | processors=4 12 | 13 | # Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel 14 | #/ kernel=C:\\temp\\myCustomKernel 15 | 16 | # Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6 17 | # kernelCommandLine = vsyscall=emulate 18 | 19 | # Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx 20 | # swapfile=S:\\WSL\\wsl-swap.vhdx 21 | 22 | # Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free 23 | # pageReporting=false 24 | 25 | # Turn on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored 26 | localhostforwarding=true 27 | 28 | # networkingMode=Nat 29 | 30 | firewall=false 31 | 32 | # Disables nested virtualization 33 | # nestedVirtualization=false 34 | 35 | # Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging 36 | debugConsole=true 37 | defaultVhdSize=107374182400 38 | 39 | # Enable experimental features 40 | [experimental] 41 | sparseVhd=true 42 | bestEffortDnsParsing=true -------------------------------------------------------------------------------- /hosts/domain.list: -------------------------------------------------------------------------------- 1 | # URL: https://raw.github.com/eslco/base/refs/heads/main/hosts/domain.list 2 | # URL: https://raw.githubusercontent.com/eslco/base/refs/heads/main/hosts/domain.list 3 | # Author: @eslco https://github.com/eslco/base/main/hosts 4 | 5 | # First time Created: 2025-02-06T15:30:00+08:00 6 | # GitHub520 Host Start 7 | # Public DNS Resolver # 8 | 74.82.42.42 ordns.he.net 9 | 8.8.4.4 dns.google 10 | 101.101.101.101 dns.twnic.tw 11 | 101.102.103.104 dns.twnic.tw 12 | 52.246.182.50 dnslow.me 13 | 14 | # YogaDNS # 15 | 172.66.47.7 cf.090227.xyz 16 | 172.66.46.249 cf.090227.xyz 17 | 172.66.45.8 doh.090227.xyz 18 | 172.66.46.248 doh.090227.xyz 19 | 20 | # CF CDN # 21 | 104.16.41.196 www.chaturbate.com 22 | 23 | 104.16.45.196 www.chaturbate.com 24 | 172.64.150.71 www.ecosia.org 25 | 104.18.37.185 www.ecosia.org 26 | 104.16.183.15 gold.org 27 | 104.16.183.15 www.gold.org 28 | 104.16.35.67 www.gold.org 29 | 104.16.35.67 gold.org 30 | 31 | #Bili CDN 32 | # 163.181.66.243 i0.hdslb.com.w.kunlunno.com 33 | # 163.181.66.242 i0.hdslb.com.w.kunlunno.com 34 | # 163.181.66.241 i0.hdslb.com.w.kunlunno.com 35 | # 163.181.66.246 i0.hdslb.com.w.kunlunno.com 36 | # 163.181.66.238 i0.hdslb.com.w.kunlunno.com 37 | # 163.181.66.239 i0.hdslb.com.w.kunlunno.com 38 | # 163.181.66.240 i0.hdslb.com.w.kunlunno.com 39 | # 163.181.66.245 i0.hdslb.com.w.kunlunno.com 40 | 41 | i0.hdslb.com.w.kunlunno.com i0.hdslb.com 42 | 43 | # 23.236.112.179 i0.hdslb.com 44 | # 98.98.201.152 i0.hdslb.com 45 | 46 | # Linux.do 47 | 104.18.2.161 linux.do 48 | 104.18.3.161 linux.do 49 | 162.159.152.2 linux.do 50 | 162.159.153.2 linux.do 51 | 52 | 53 | # Wotb # 54 | 92.223.16.59 login0.wotblitz.asia 55 | 92.223.16.81 login0.wotblitz.asia 56 | 92.223.16.30 login1.wotblitz.asia 57 | 92.223.16.145 login1.wotblitz.asia 58 | 92.223.16.147 login1.wotblitz.asia 59 | 60 | 95.85.94.91 login2.wotblitz.asia 61 | 95.85.94.170 login2.wotblitz.asia 62 | 63 | # Update time: 2024-11-16T10:45:31+08:00 64 | # Update url: https://raw.hellogithub.com/hosts 65 | # Star me: https://github.com/eslco/base/hosts 66 | # GitHub520 Host End 67 | -------------------------------------------------------------------------------- /module/QuantumultX/Demo.MD: -------------------------------------------------------------------------------- 1 | # Header 2 | ## Titles 3 | ## Test -------------------------------------------------------------------------------- /module/Stash/TwitchOmega.stoverride: -------------------------------------------------------------------------------- 1 | # SUBSCRIBED https://raw.githubusercontent.com/eslco/base/main/module/Stash/TwitchOmega.stoverride 2 | 3 | name: |- 4 | TwitchOmega 5 | desc: |- 6 | HD+ Guaranteed & NoAD(update) 7 | icon: |- 8 | https://github.com/Toperlock/Quantumult/raw/main/icon/Doraemon/Doraemon-1062.png 9 | url: |- 10 | https://raw.githubusercontent.com/eslco/base/main/module/Stash/TwitchOmega.stoverride 11 | 12 | rules: 13 | # Twitch static CDN 14 | - DOMAIN-SUFFIX,jtvnw.net,Direct 15 | - DOMAIN-SUFFIX,live-video.net,Direct 16 | - DOMAIN-SUFFIX,playlist.ttvnw.net,Direct 17 | - DOMAIN-SUFFIX,global.poe.live-video.net,Direct 18 | # Final Matches 19 | - DOMAIN-SUFFIX,hls.ttvnw.net,Direct 20 | - RULE-SET,https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Twitch/TD.list,Direct 21 | 22 | 23 | # ======== Critical Subdomains (API/Player) 24 | - DOMAIN-SUFFIX,pubsub-edge.twitch.tv,Proxy 25 | - DOMAIN-SUFFIX,player.twitch.tv,Proxy 26 | - DOMAIN-SUFFIX,assets.twitch.tv,Proxy 27 | - DOMAIN-SUFFIX,api.twitch.tv,Proxy 28 | - DOMAIN-SUFFIX,gql.twitch.tv,Proxy 29 | 30 | # ======== Third-Party Extensions 31 | - DOMAIN-SUFFIX,twitch-ext.rootonline.de,Proxy 32 | 33 | # ======== Dynamic Subdomains (Regex) 34 | # 匹配所有 ext-twitch.tv 的动态子域名(如 *.ext-twitch.tv) 35 | - DOMAIN-SUFFIX,ext-twitch.tv,Proxy 36 | # URL-REGEX,^https?:\/\/(?:[a-z0-9-]+\.)+ext-twitch\.tv\/.*$,Proxy 37 | 38 | # ======== Twitch Core Services 39 | - DOMAIN-SUFFIX,ext-twitch.tv,Proxy 40 | - DOMAIN-SUFFIX,twitchcdn.net,Proxy 41 | - DOMAIN-SUFFIX,twitchsvc.net,Proxy 42 | - DOMAIN-SUFFIX,twitch.tv,Proxy 43 | - RULE-SET,https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Twitch/TP.list,Proxy 44 | 45 | http: 46 | 47 | mitm: 48 | - "*.scorecardresearch.com" 49 | - "*.amazon-adsystem.com" 50 | - "spade.twitch.tv" 51 | - "*.ads.twitch.tv" 52 | - "*.twitch.tv" 53 | 54 | url-rewrite: 55 | 56 | # TTVNW 57 | - >- 58 | ^https?:\/\/[^\/]* ttvnw[^\/]*\.akamaized\.net(?:\/.*)?$ _ Direct 59 | 60 | # Amazon 廣告攔截 (配合MITM) 61 | - >- 62 | ^https?:\/\/[\w-]+\.amazon-adsystem\.com\/(px|aax|ads)\/.*$ - reject-img 63 | # 拦截亚马逊AI广告脚本 64 | - >- 65 | ^https?:\/\/s\.amazon-adsystem\.com\/amazonai\/.*_ads\.js - reject-200 66 | # 广告追踪阻断 (合并v1/v2版本) 67 | - >- 68 | ^https?:\/\/spade\.twitch\.tv\/v\d\/(track|event) - reject-dict 69 | # 广告资源拦截 (合并区域前缀) 70 | - >- 71 | ^https?:\/\/(us\|eu)?\.?ads\.twitch\.tv\/(?:v\d/)? - reject-img 72 | # 广告配置文件拦截 73 | - >- 74 | ^https?:\/\/static\.twitch\.tv\/assets\/ads-\w+\.js - reject-200 75 | # DoubleClick广告网络 76 | - >- 77 | ^https?:\/\/(?:(pubads\.g)?\.doubleclick\.net\/gampad\/ads - reject-img 78 | - >- 79 | ^https?:\/\/ad\.doubleclick\.net\/ddm\/track\/.$ - reject-img 80 | # 用户行为追踪屏蔽 81 | - >- 82 | ^https?:\/\/b\.scorecardresearch\.com\/.$ - reject-200 83 | - >- 84 | ^https?:\/\/secure\.imrworldwide\.com\/cgi-bin\/gn\?cid= - reject-drop -------------------------------------------------------------------------------- /module/Stash/dns.stoverride: -------------------------------------------------------------------------------- 1 | name: DNS Resolve 2 | desc: HKTNet Domestic TWNIC & IIJ.JP | Global ADGuard & CF DNS 3 | icon: "https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Global.png" 4 | category: "General" 5 | 6 | dns: 7 | enable: true 8 | ipv6: true 9 | listen: 0.0.0.0:53 10 | default-nameserver: 11 | - 202.67.240.222 12 | - 103.2.57.5 13 | enhanced-mode: fake-ip 14 | fake-ip-range: 198.18.0.1/16 15 | fake-ip-filter: 16 | - '*.lan' 17 | - localhost.ptlogin2.qq.com 18 | - '+.srv.nintendo.net' 19 | - '+.stun.playstation.net' 20 | - '+.msftconnecttest.com' 21 | - '+.msftncsi.com' 22 | - '+.xboxlive.com' 23 | - 'msftconnecttest.com' 24 | - 'xbox.*.microsoft.com' 25 | - '*.battlenet.com.cn' 26 | - '*.battlenet.com' 27 | - '*.blzstatic.cn' 28 | - '*.battle.net' 29 | nameserver: 30 | - https://public.dns.iij.jp/dns-query 31 | - https://101.101.101.101/dns-query 32 | fallback: 33 | - https://dns.adguard-dns.com/dns-query 34 | - https://1.0.0.1/dns-query 35 | fallback-filter: 36 | geoip: true 37 | geoip-code: CN 38 | ipcidr: 39 | - 240.0.0.0/4 40 | -------------------------------------------------------------------------------- /module/Stash/picsart.stoverride: -------------------------------------------------------------------------------- 1 | SUBSCRIBED: https://whatshub.top/module/picsart.module | https://github.com/eslco/base 2 | 3 | name: |- 4 | Picsart Unlock APPL 5 | desc: |- 6 | picsart 解鎖會員 7 | author: |- 8 | NobyDa 9 | icon: |- 10 | https://raw.githubusercontent.com/deezertidal/private/main/icons/picsart.png 11 | url: |- 12 | https://raw.githubusercontent.com/eslco/base/main/module/Stash/picsart.stoverride 13 | 14 | homepage: |- 15 | https://whatshub.top 16 | 17 | http: 18 | 19 | mitm: 20 | - "api.picsart.c*" 21 | - "api.meiease.c*" 22 | 23 | script: 24 | - match: https:\/\/api\.(picsart|meiease)\.c(n|om)\/users\/show\/me\.json 25 | name: "Picsart_7" 26 | type: response 27 | require-body: true 28 | max-size: 0 29 | 30 | script-providers: 31 | "Picsart_7": 32 | url: https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/PicsArt.js 33 | interval: 86400 34 | -------------------------------------------------------------------------------- /module/Stash/rates.stoverride: -------------------------------------------------------------------------------- 1 | # OR: https://whatshub.top/stoverride/rates.stoverride 2 | name: |- 當前匯率 3 | desc: |- 匯率面板 4 | url: |- https://raw.githubusercontent.com/eslco/base/main/module/Stash/rates.stoverride 5 | category: tiles 6 | icon: https://telegraph.19940731.xyz/file/9671fec8f736d76ea0004.png 7 | tiles: 8 | - name: currency-exchange-rate 9 | argument: "icon=theatermasks.circle.fill&color=#D4AF37" 10 | backgroundColor: '#D4AF37' 11 | interval: 3600 12 | script-providers: 13 | currency-exchange-rate: 14 | # url: https://raw.githubusercontent.com/deezertidal/Surge_Module/master/files/rates.js 15 | url: https://raw.githubusercontent.com/qsoyq/shell/main/config/stash/script/tiles/rates.js 16 | 17 | interval: 86400 -------------------------------------------------------------------------------- /module/Surge/LOWERTOP.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=Talkatone 2 | #!desc=Talkatone 代理规则模块,使 Talkatone 服务不再对不同代理节点过于敏感 3 | # 本模块主要为解决使用某些节点无法直接使用 Talkatone 的问题,使用本模块进行策略分流,并附带去广告规则。本模块仅适用于登陆 Talkatone 后使用,不适用于软件注册。 4 | # 仓库地址:https://github.com/LOWERTOP/Shadowrocket-First 5 | # 规则来源:https://t.me/ShadowrocketApp 6 | 7 | [Rule] 8 | # 以下为该软件部分去广告规则 9 | DOMAIN-SUFFIX,ads.inmobi.com,REJECT-DROP 10 | DOMAIN-SUFFIX,tappx.com,REJECT-DROP 11 | DOMAIN-SUFFIX,criteo.com,REJECT-DROP 12 | DOMAIN-SUFFIX,pubmatic.com,REJECT-DROP 13 | DOMAIN-SUFFIX,smaato.net,REJECT-DROP 14 | DOMAIN-SUFFIX,amazon-adsystem.com,REJECT-DROP 15 | DOMAIN-SUFFIX,googleads.g.doubleclick.net,REJECT-DROP 16 | DOMAIN-SUFFIX,adsappier.com,REJECT-DROP 17 | DOMAIN-SUFFIX,appier.net,REJECT-DROP 18 | DOMAIN-SUFFIX,appiersig.com,REJECT-DROP 19 | 20 | # tktn.be 需要走代理 21 | DOMAIN-SUFFIX,tktn.be,PROXY 22 | 23 | # 以下需要走直连 24 | DOMAIN-SUFFIX,inner-active.mobi,DIRECT 25 | DOMAIN-SUFFIX,mobilefuse.com,DIRECT 26 | DOMAIN-SUFFIX,inmobi.com,DIRECT 27 | DOMAIN-SUFFIX,crashlytics.com,DIRECT 28 | DOMAIN-SUFFIX,talkatone.com,DIRECT 29 | DOMAIN-SUFFIX,kochava.com,DIRECT 30 | DOMAIN-SUFFIX,cohere.com,DIRECT 31 | DOMAIN-SUFFIX,ip-api.com,DIRECT 32 | DOMAIN-SUFFIX,agkn.com,DIRECT 33 | DOMAIN-SUFFIX,tktn.at,DIRECT 34 | IP-CIDR,50.117.27.0/24,DIRECT 35 | IP-CIDR,69.46.75.0/24,DIRECT 36 | IP-CIDR,205.164.56.0/24,DIRECT 37 | IP-CIDR,63.251.124.0/24,DIRECT 38 | -------------------------------------------------------------------------------- /module/Surge/Netflix.sgmodule: -------------------------------------------------------------------------------- 1 | #!name= NetflixMod 2 | #!desc= Dual Subtitles+Douban Rating 3 | #!url=https://raw.githubusercontent.com/eslco/base/main/module/Surge/Netflix.sgmodule 4 | #!icon=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Netflix.png 5 | 6 | # Public Template URL = https://raw.githubusercontent.com/eslco/base/main/Shadowrocket/NetflixMod.sgmodule 7 | 8 | [Script] 9 | 奈菲迪士尼评分=type=http-request,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js, requires-body=true, timeout=10 10 | 奈菲迪士尼评分1=type=http-response,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D,requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js, requires-body=true, timeout=10 11 | 奈菲迪士尼评分2=type=http-response,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/warmer/.+type=show-ath,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating_season.js, requires-body=true, timeout=10 12 | Netflix-Dualsub= type=http-response,pattern=https:\/\/.+nflxvideo.net\/\?o=\d+&v=\d+&e=.+,requires-body=1,max-size=0,timeout=30,script-path=https://raw.githubusercontent.com/Neurogram-R/Surge/master/Dualsub.js 13 | Netflix-Dualsub-Setting= type=http-request,pattern=https:\/\/setting.nflxvideo.net\/\?action=(g|s)et,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Neurogram-R/Surge/master/Dualsub.js 14 | 15 | [MITM] 16 | hostname= %APPEND% ios.prod.ftl.netflix.com, *.nflxvideo.net, *.media.dssott.com, *.media.starott.com, *.api.hbo.com, *.hbomaxcdn.com, *.huluim.com, *.nflxvideo.net, *.cbsaavideo.com, *.cbsivideo.com, *.cloudfront.net, *.akamaihd.net, *.avi-cdn.net, *.youtube.com 17 | -------------------------------------------------------------------------------- /module/Surge/README.md: -------------------------------------------------------------------------------- 1 | rm -rf 2 | -------------------------------------------------------------------------------- /module/Surge/UltraMobileWiFiCalling.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=UltraMobileWiFiCalling 2 | #!desc=Ultra Mobile Paygo wificalling 配置模块,使用本模块后打开飞行模式后关闭飞行模式即可正常开启 WiFi calling,并可以正常使用配置模式 3 | # 仓库地址:https://github.com/LOWERTOP/Shadowrocket-First 4 | # 规则来源于互联网收集 5 | # ---------- 6 | [General] 7 | # dns-server = 199.85.126.10,199.85.127.10 8 | # ---------- 9 | [Rule] 10 | DOMAIN-SUFFIX,depdg.epc.mnc260.mcc310.pub.3gppnetwork.org,PROXY 11 | DOMAIN-SUFFIX,ss.epdg.epc.mnc260.mcc310.pub.3gppnetwork.org,PROXY 12 | DOMAIN-SUFFIX,epdg.epc.mnc260.mcc310.pub.3gppnetwork.org,PROXY 13 | DOMAIN-SUFFIX,ss.epdg.epc.geo.mnc260.mcc310.pub.3gppnetwork.org,PROXY 14 | DOMAIN-SUFFIX,eas3.msg.t-mobile.com,PROXY 15 | DOMAIN-SUFFIX,redirect.ultra.me,PROXY 16 | DOMAIN-SUFFIX,ultramobile.com,PROXY 17 | DOMAIN-SUFFIX,optimizely.com,PROXY 18 | -------------------------------------------------------------------------------- /module/Surge/Youtube.Enhance.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=Youtube Enhance M 2 | #!desc= Youtube&YTMusic Module @eslco 3 | #!arguments=屏蔽上传按钮:true,屏蔽选段按钮:true,字幕翻译语言:zh-Hant,歌词翻译语言:zh-Hant,脚本执行引擎:auto,启用调试模式:false 4 | #! Arguments-desc=- 遮蔽引數:[true, false] \n- 翻譯引數:[語言程式碼, off] \n- 指令碼引擎:[auto, jsc, webview]\n\n1. 語言程式碼遵循谷歌翻譯語言程式碼,當填入關閉時關閉翻譯\n2。 推薦使用jsc引擎,但你仍然可以切換成webview體驗Surge新特性\n3。 開啟调试模式用於輸出更多日誌 5 | 6 | # > Note 7 | # Origin Repo URL: https://raw.githubusercontent.com/Maasea/sgmodule/master/YouTube.Enhance.sgmodule 8 | # Youtube 畫中畫和後臺播放可在客戶內端關閉 9 | # - 设置 -> 播放 -> 画中画 10 | # - 设置 -> 后台播放和下载 -> 后台播放 11 | 12 | 13 | [Rule] 14 | AND,((DOMAIN-SUFFIX,googlevideo.com), (PROTOCOL,UDP)),REJECT 15 | AND,((DOMAIN,youtubei.googleapis.com), (PROTOCOL,UDP)),REJECT 16 | 17 | [Script] 18 | youtube.response = type=http-response,pattern=^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence|guide|account\/get_setting|get_watch),requires-body=1,max-size=-1,binary-body-mode=1,engine={{{脚本执行引擎}}},script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Youtube/dist/youtube.response.preview.js,argument="{"lyricLang":"{{{歌词翻译语言}}}","captionLang":"{{{字幕翻译语言}}}","blockUpload":{{{屏蔽上传按钮}}},"blockImmersive":{{{屏蔽选段按钮}}},"debug":{{{启用调试模式}}}}" 19 | 20 | [Map Local] 21 | ^https?:\/\/[\w-]+\.googlevideo\.com\/initplayback.+&oad data-type=text data="" status-code=502 22 | 23 | [MITM] 24 | hostname = %APPEND% *.googlevideo.com, youtubei.googleapis.com -------------------------------------------------------------------------------- /override/singbox/README.md: -------------------------------------------------------------------------------- 1 | # git init 2 | - git add 3 | - git -u branch -------------------------------------------------------------------------------- /rule/Clash/DNS/DNS.list: -------------------------------------------------------------------------------- 1 | # NAME: DNS.list 2 | # URL: https://github.com/eslco/base/raw/main/rule/Clash/DNS/DNS.list 3 | # Repo: https://github.com/eslco/base//main/ 4 | DOMAIN-SUFFIX,doh.pub 5 | DOMAIN-SUFFIX,dns.rubyfish.cn 6 | DOMAIN-SUFFIX,dns.alidns.com 7 | 8 | DOMAIN-SUFFIX,one.one.one.one 9 | DOMAIN-SUFFIX,cloudflare-dns.com 10 | DOMAIN-SUFFIX,public.dns.iij.jp 11 | DOMAIN-SUFFIX,iphone-ld.apple.com 12 | # NoAD DoH 13 | DOMAIN-SUFFIX,doh.apad.pro 14 | 15 | # Cloudflare DNS 16 | IP-CDIR,1.0.0.1/32,no-resolve 17 | IP-CDIR,1.0.0.1/32,no-resolve 18 | IP-CDIR,1.1.1.2/32,no-resolve 19 | IP-CDIR,1.1.1.3/32,no-resolve 20 | 21 | # Google 22 | IP-CDIR,8.8.8.8/32,no-resolve 23 | IP-CDIR,8.8.4.4/32,no-resolve 24 | 25 | # ADGuard 26 | IP-CDIR,94.140.14.15/32,no-resolve 27 | IP-CDIR,94.140.14.140/32,no-resolve 28 | IP-CDIR,94.140.14.14/32,no-resolve 29 | 30 | # PUBLIC.DNS.IIJ.JP 31 | IP-CDIR,103.2.57.5/32,no-resolve 32 | IP-CDIR,103.2.57.6/32,no-resolve 33 | 34 | # TW Hinet 35 | IP-CDIR,168.95.1.1/32,no-resolve 36 | IP-CDIR,168.95.192.1/32,no-resolve 37 | # DNS.TWNIC.TW 38 | IP-CDIR,101.101.101.101/32,no-resolve 39 | IP-CDIR,101.102.103.104/32,no-resolve -------------------------------------------------------------------------------- /rule/Clash/Talkatone/ttblock.list: -------------------------------------------------------------------------------- 1 | # Name: ttblock.list 2 | # DESC: Talkatone NoAD 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Shadowrocket/talkatone/ttblock.list 4 | # Ref List URL: https://raw.githubusercontent.com/baiitang/Sakura/main/Loon/Rules/TalkatoneAD.list 5 | # 规则来源于 6 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 7 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 8 | # Talkatone如果发现有剩余的广告,可以引用上面两个分流,自行排查(欢迎反馈,Thx) 9 | 10 | DOMAIN-SUFFIX,impression-asia.liftoff.io 11 | DOMAIN-SUFFIX,cdn2.inner-active.mobi 12 | DOMAIN-SUFFIX,wv.inner-active.mobi 13 | DOMAIN-SUFFIX,cdn-f.adsmoloco.com 14 | DOMAIN-SUFFIX,impression.link 15 | 16 | # API接口類請求 17 | DOMAIN-SUFFIX,ads.pubmatic.com 18 | DOMAIN-SUFFIX,amazon-adsystem.com 19 | DOMAIN-SUFFIX,app-analytics-services.com 20 | DOMAIN-SUFFIX,appier.net 21 | DOMAIN-SUFFIX,appiersig.com 22 | DOMAIN-SUFFIX,aax.amazon-adsystem.com 23 | DOMAIN-SUFFIX,aax-fe.amazon-adsystem.com 24 | DOMAIN-SUFFIX,aax-fe-sin.amazon-adsystem.com 25 | DOMAIN-SUFFIX,adsappier.com 26 | DOMAIN-SUFFIX,bidder.criteo.com 27 | DOMAIN-SUFFIX,c.amazon-adsystem.com 28 | DOMAIN-SUFFIX,cr.adsappier.com 29 | DOMAIN-SUFFIX,ets-ap-southeast-1.track.smaato.net 30 | DOMAIN-SUFFIX,exchange-b-events.inner-active.mobi 31 | DOMAIN-SUFFIX,firebaseinstallations.googleapis.com 32 | DOMAIN-SUFFIX,firebaseremoteconfig.googleapis.com 33 | DOMAIN-SUFFIX,firebase-settings.crashlytics.com 34 | DOMAIN-SUFFIX,gum.criteo.com 35 | DOMAIN-SUFFIX,i.l.inmobicdn.net 36 | DOMAIN-SUFFIX,i.l-dsp.inmobicdn.net 37 | DOMAIN-SUFFIX,ins.track.tappx.com 38 | DOMAIN-SUFFIX,mads.amazon-adsystem.com 39 | DOMAIN-SUFFIX,mfx.mobilefuse.com 40 | DOMAIN-SUFFIX,mt-usw.appiersig.com 41 | DOMAIN-SUFFIX,sdk-dnt.ad.smaato.net 42 | DOMAIN-SUFFIX,sdk-events.inner-active.mobi 43 | DOMAIN-SUFFIX,sdk-files.smaato.net 44 | DOMAIN-SUFFIX,sdk-hb-cfg.smaato.net 45 | DOMAIN-SUFFIX,skadnetworks.fyber.com 46 | DOMAIN-SUFFIX,ssp.api.tappx.com 47 | DOMAIN-SUFFIX,supply.inmobicdn.net 48 | DOMAIN-SUFFIX,tappx.com 49 | DOMAIN-SUFFIX,view.adjust.com 50 | DOMAIN-SUFFIX,vst.c.appier.net 51 | 52 | # 完全阻止的請求 - Google Ads 及相关 53 | DOMAIN-KEYWORD,googleads 54 | DOMAIN-SUFFIX,googleads.g.doubleclick.net 55 | DOMAIN-SUFFIX,googleads.g.doubleclick-cn.net 56 | DOMAIN-SUFFIX,lh3.googleadsserving.cn 57 | DOMAIN-SUFFIX,pagead2.googlesyndication-cn.com 58 | DOMAIN-SUFFIX,tpc.googlesyndication-cn.com 59 | DOMAIN-SUFFIX,www.googletagservices-cn.com 60 | 61 | # 完全阻止的請求 - 通用广告平台 62 | DOMAIN-SUFFIX,ow.pubmatic.com 63 | DOMAIN-SUFFIX,pubmatic.com 64 | DOMAIN-SUFFIX,smaato.net 65 | DOMAIN-SUFFIX,criteo.com 66 | DOMAIN-SUFFIX,inmobi.com 67 | 68 | # [URL Rewrite] 69 | # hostname = alt-r.my.com, imgx.jampp.com 70 | # URL-Regex,^https?:\/\/alt-r\.my\.com\/mobile url reject-dict 71 | # URL-Regex,^https?:\/\/imgx\.jampp\.com\/imgsrv\/tn url reject-img -------------------------------------------------------------------------------- /rule/Clash/Talkatone/ttdirect.list: -------------------------------------------------------------------------------- 1 | # Name: ttdirect.list 2 | # Author: eslco 3 | ## DOMAIN-SUFFIX,tktn.be 4 | ## DOMAIN-SUFFIX,talkatone.com 5 | ## DOMAIN-SUFFIX,tenor.com 6 | ## DOMAIN-SUFFIX,agkn.com 7 | ## DOMAIN-SUFFIX,tktn.at 8 | ## The above domain name must be set up with Proxy 9 | 10 | 11 | # Direct rules 12 | DOMAIN-SUFFIX,inmobi.com 13 | DOMAIN-SUFFIX,mobilefuse.com 14 | DOMAIN-SUFFIX,crashlytics.com 15 | DOMAIN-SUFFIX,kochava.com 16 | # DOMAIN-SUFFIX,cohere.com 17 | # DOMAIN-SUFFIX,ip-api.com 18 | # IP-CIDR 19 | IP-CIDR,50.117.27.0/24 20 | IP-CIDR,63.251.124.0/24 21 | IP-CIDR,69.46.75.0/24 22 | IP-CIDR,205.164.56.0/24 23 | IP-CIDR,205.164.56.29/24 24 | IP-CIDR,63.251.124.0/24 25 | 26 | -------------------------------------------------------------------------------- /rule/Clash/Talkatone/ttproxy.list: -------------------------------------------------------------------------------- 1 | # Talkatone Proxy Rule(Update) 2 | # Author: eslco 3 | # Updated at 2024.10.29 05:31 PM 4 | # './n' 5 | 6 | DOMAIN-SUFFIX,talkatone.com 7 | DOMAIN-SUFFIX,tenor.com 8 | DOMAIN-SUFFIX,agkn.com 9 | DOMAIN-SUFFIX,tktn.at 10 | DOMAIN-SUFFIX,tktn.be 11 | # DOMAIN-SUFFIX,cohere.com 12 | # DOMAIN-SUFFIX,ip-api.com -------------------------------------------------------------------------------- /rule/Clash/wargaming/wg_login.list: -------------------------------------------------------------------------------- 1 | #! Name: wg_login.list 2 | #! Author: eslco 3 | #Wotb Login Server Domain Records 4 | # Asia Servers 5 | #SG_C0, 92.223.16.81:20016, login0.wotblitz.asia, Singapore (Singapore) 6 | #IP-CIDR,92.223.16.59/32 7 | #IP-CIDR,92.223.16.81/32 8 | #IP-CIDR,92.223.16.143/32 9 | #IP-CIDR,92.223.16.0/24 10 | #SG_C1, 92.223.16.145:20016, login1.wotblitz.asia, Singapore (Singapore) 11 | 12 | #SG_C2, 95.85.94.91:20016, login2.wotblitz.asia, Japan (Tokyo) 13 | #IP-CIDR,95.85.94.91/32 14 | #IP-CIDR,95.85.94.170/32 15 | #IP-CIDR,95.85.94.114/32 16 | #IP-CIDR,95.85.94.115/32 17 | #IP-CIDR,95.85.94.131/32 18 | #IP-CIDR,95.85.94.205/32 19 | #IP-CIDR,95.85.94.0/24 20 | 21 | #Europe Servers 22 | #EU_C0, 92.223.31.136:20016, login0.wotblitz.eu, Netherlands (Kingdom of the) (Amsterdam) 23 | #EU_C0, 92.223.31.132:20016, login0.wotblitz.eu, Netherlands (Kingdom of the) (Amsterdam) 24 | #IP-CIDR,92.223.31.132/32 25 | #IP-CIDR,92.223.31.0/24 26 | 27 | #EU_C1, 92.223.31.138 28 | #IP-CIDR,92.223.31.138/32 29 | #IP-CIDR,92.223.31.139/32 30 | 31 | #EU_C2,80.240.112.16:20016, login2.wotblitz.eu, Germany (Frankfurt am Main) 32 | #EU_C2,80.240.112.201:20016, login2.wotblitz.eu, Germany (Frankfurt am Main) 33 | #IP-CIDR,80.240.112.16/32 34 | #IP-CIDR,80.240.112.24/32 35 | #IP-CIDR,80.240.112.184/32 36 | #IP-CIDR,80.240.112.201/32 37 | #IP-CIDR,80.240.112.203/32 38 | #IP-CIDR,80.240.112.210/32 39 | #IP-CIDR,80.240.112.0/24 40 | 41 | #EU_C3, 94.156.45.237:20016, login3.wotblitz.eu, Poland (Warsaw) 42 | #IP-CIDR,94.156.45.149/32 43 | #IP-CIDR,94.156.45.176/32 44 | #IP-CIDR,94.156.45.237/32 45 | #IP-CIDR,94.156.45.0/24 46 | 47 | #EU_C4,83.229.15.195:20016, login4.wotblitz.eu, Kazakhstan (Almaty) 48 | #IP-CIDR,83.229.15.137/32 49 | #IP-CIDR,83.229.15.0/24 50 | 51 | 52 | #RULE-SET 53 | DOMAIN-SUFFIX,login0.wotblitz.eu 54 | DOMAIN-SUFFIX,login1.wotblitz.eu 55 | DOMAIN-SUFFIX,login2.wotblitz.eu 56 | DOMAIN-SUFFIX,login3.wotblitz.eu 57 | DOMAIN-SUFFIX,login4.wotblitz.eu 58 | DOMAIN-SUFFIX,login0.wotblitz.com 59 | DOMAIN-SUFFIX,login1.wotblitz.com 60 | DOMAIN-SUFFIX,login2.wotblitz.com 61 | DOMAIN-SUFFIX,login0.wotblitz.asia 62 | DOMAIN-SUFFIX,login1.wotblitz.asia 63 | DOMAIN-SUFFIX,login2.wotblitz.asia 64 | URL-REGEX,^login\d+\.wotblitz\.(eu|com|asia|net)$ 65 | URL-REGEX,^login-[a-z]{2,3}\.worldofwarplanes\.com$ 66 | URL-REGEX,^(wotasia\d+|wotna\d+)\.login\.wargaming\.net$|^login\.(p\d+)\.worldoftanks\.eu$ 67 | URL-REGEX,^login\d+\.worldofwarships\.(com|eu|asia|jp|sg|net)$ 68 | 69 | #IPCIDR 70 | IP-CIDR,92.223.16.0/24 71 | IP-CIDR,95.85.94.0/24 72 | IP-CIDR,92.223.31.0/24 73 | IP-CIDR,80.240.112.0/24 74 | IP-CIDR,94.156.45.0/24 75 | IP-CIDR,83.229.15.0/24 76 | -------------------------------------------------------------------------------- /rule/QuantumultX/Talkatone/ttdirect.list: -------------------------------------------------------------------------------- 1 | # Name: ttdirect.list 2 | # Author: eslco 3 | ## HOST-SUFFIX,tktn.be,Talkatone 4 | ## HOST-SUFFIX,talkatone.com,Talkatone 5 | ## HOST-SUFFIX,tenor.com,Talkatone 6 | ## HOST-SUFFIX,agkn.com,Talkatone 7 | ## HOST-SUFFIX,tktn.at,Talkatone 8 | # The above HOST name must be set up with Proxy 9 | 10 | 11 | # Direct rules 12 | HOST-SUFFIX,inmobi.com,Talkatone 13 | HOST-SUFFIX,mobilefuse.com,Talkatone 14 | HOST-SUFFIX,crashlytics.com,Talkatone 15 | HOST-SUFFIX,kochava.com,Talkatone 16 | HOST-SUFFIX,cohere.com,Talkatone 17 | HOST-SUFFIX,ip-api.com,Talkatone 18 | # IP-CIDR 19 | IP-CIDR,50.117.27.0/24,Talkatone 20 | IP-CIDR,63.251.124.0/24,Talkatone 21 | IP-CIDR,69.46.75.0/24,Talkatone 22 | IP-CIDR,205.164.56.0/24,Talkatone 23 | IP-CIDR,205.164.56.29/2,Talkatone 24 | IP-CIDR,63.251.124.0/24,Talkatone 25 | 26 | -------------------------------------------------------------------------------- /rule/QuantumultX/Talkatone/ttproxy.list: -------------------------------------------------------------------------------- 1 | # Talkatone Proxy Rule(Update) 2 | # Author: eslco 3 | # Updated at 2025.03.23 05:31 PM 4 | # './n' 5 | 6 | HOST-SUFFIX,talkatone.com,Talkatone 7 | HOST-SUFFIX,tenor.com,Talkatone 8 | HOST-SUFFIX,agkn.com,Talkatone 9 | HOST-SUFFIX,tktn.at,Talkatone 10 | HOST-SUFFIX,tktn.be,Talkatone 11 | # HOST-SUFFIX,cohere.com 12 | # HOST-SUFFIX,ip-api.com -------------------------------------------------------------------------------- /rule/Shadowrocket/Twitch/Direct.list: -------------------------------------------------------------------------------- 1 | # Name: Direct.list 2 | # Author: eslco, eslion 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Shadowrocket/Twitch/Direct.list 4 | 5 | # This Domain list for test and study usages only 6 | 7 | URL-REGEX,^https?:\/\/(?:[\w.-]*\.)?(?:static-cdn\.)?jtvnw\.net\/.*$ 8 | URL-REGEX,^https?:\/\/[\w-]+\.live-video\.net\/.*$ 9 | DOMAIN-SUFFIX,live001-ttvnw.akamaized.net 10 | URL-REGEX,^https?:\/\/(?:.*\.)?playlist\.ttvnw\.net\/.*$ 11 | # DOMAIN-SUFFIX,usher.ttvnw.net 12 | # URL-REGEX,^https?:\/\/.*\.ext-twitch\.tv\/.*$ 13 | 14 | # hls.ttvnw.net 15 | DOMAIN-SUFFIX,tpe01.hls.ttvnw.net 16 | DOMAIN-SUFFIX,waw02.hls.ttvnw.net 17 | DOMAIN-SUFFIX,mrs02.hls.ttvnw.net 18 | DOMAIN-SUFFIX,syd03.hls.ttvnw.net 19 | DOMAIN-SUFFIX,lhr03.hls.ttvnw.net 20 | DOMAIN-SUFFIX,tyo03.hls.ttvnw.net 21 | DOMAIN-SUFFIX,lax03.hls.ttvnw.net 22 | DOMAIN-SUFFIX,arn04.hls.ttvnw.net 23 | DOMAIN-SUFFIX,hkg06.hls.ttvnw.net 24 | DOMAIN-SUFFIX,sjc06.hls.ttvnw.net 25 | DOMAIN-SUFFIX,cdg10.hls.ttvnw.net 26 | # ... 27 | # *.abs.hls.ttvnw.net 28 | DOMAIN-SUFFIX,tpe01.abs.hls.ttvnw.net 29 | DOMAIN-SUFFIX,pdx01.abs.hls.ttvnw.net 30 | DOMAIN-SUFFIX,mrs02.abs.hls.ttvnw.net 31 | DOMAIN-SUFFIX,tyo03.abs.hls.ttvnw.net 32 | DOMAIN-SUFFIX,lax03.abs.hls.ttvnw.net 33 | DOMAIN-SUFFIX,syd03.abs.hls.ttvnw.net 34 | DOMAIN-SUFFIX,arn04.abs.hls.ttvnw.net 35 | DOMAIN-SUFFIX,hkg06.abs.hls.ttvnw.net 36 | DOMAIN-SUFFIX,sjc06.abs.hls.ttvnw.net 37 | DOMAIN-SUFFIX,lhr08.abs.hls.ttvnw.net 38 | DOMAIN-SUFFIX,cdg10.abs.hls.ttvnw.net 39 | # ... 40 | # hls.ttvnw.net 41 | 42 | # hls.ttvnw.net IP-CDIR 43 | IP-CIDR,35.163.143.41/32,no-resolve 44 | IP-CIDR,52.129.131.86/32,no-resolve 45 | IP-CIDR,52.223.203.200/32,no-resolve 46 | IP-CIDR,52.223.241.7/32,no-resolve 47 | IP-CIDR,52.223.247.99/32,no-resolve 48 | IP-CIDR,54.187.48.101/32,no-resolve 49 | IP-CIDR,99.181.91.59/32,no-resolve 50 | IP-CIDR,99.181.107.40/32,no-resolve 51 | IP-CIDR,99.181.127.5/32,no-resolve 52 | IP-CIDR,103.53.48.215/32,no-resolve 53 | # ... 54 | # hls.ttvnw.net IP-CIDR 55 | 56 | URL-REGEX,^https?:\/\/video-weaver\..*\.hls\.ttvnw\.net\/.*$ 57 | URL-REGEX,^https?:\/\/video-edge-.*\.abs\.hls\.ttvnw\.net\/.*$ 58 | 59 | # DOMAIN-SUFFIX,hls.ttvnw.net 60 | # DOMAIN-KEYWORD,hls.ttvnw.net -------------------------------------------------------------------------------- /rule/Shadowrocket/Twitch/Reject.list: -------------------------------------------------------------------------------- 1 | # NAME: Reject.list 2 | # Author: eslco, eslion 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Shadowrocket/Twitch/Reject.list 4 | # UPDATED: 2025-01-23 08:02 PM 5 | # DOMAIN-KEYWORD: 1 6 | # DOMAIN-SUFFIX: ~ 7 | # IP-CIDR: ~~ 8 | # TOTAL: ~~ 9 | DOMAIN-SUFFIX,d2v02itv0y9u9t.cloudfront.net 10 | DOMAIN-SUFFIX,secure-sts-prod.imrworldwide.com 11 | DOMAIN-SUFFIX,aax-us-east.amazon-adsystem.com 12 | DOMAIN-SUFFIX,vaes.amazon-adsystem.com 13 | DOMAIN-SUFFIX,cdn-a.amazon-adsystem.com 14 | DOMAIN-SUFFIX,pubads.g.doubleclick.net 15 | # 16 | DOMAIN-SUFFIX,sb.scorecardresearch.com 17 | DOMAIN-SUFFIX,s.amazon-adsystem.com 18 | # 19 | DOMAIN-SUFFIX,reporting.cdndex.io 20 | DOMAIN-KEYWORD,ingest.sentry.io 21 | DOMAIN-SUFFIX,ad.doubleclick.net 22 | DOMAIN-SUFFIX,api.mixpanel.com 23 | DOMAIN-SUFFIX,spade.twitch.tv 24 | # DOMAIN-SUFFIX,fan.twitch.tv 25 | # 26 | # Test API 27 | DOMAIN-SUFFIX,api.amplitude.com 28 | DOMAIN-SUFFIX,api.sprig.com 29 | # Test API 30 | DOMAIN-SUFFIX,ads.twitch.tv 31 | -------------------------------------------------------------------------------- /rule/Shadowrocket/Wotb.list: -------------------------------------------------------------------------------- 1 | # Name: wotblitz 2 | # Author: eslco 3 | # Update: 20240717 4 | 5 | 6 | DOMAIN-SUFFIX,tmsis.wotblitz.asia 7 | DOMAIN-SUFFIX,asia.wargaming.net 8 | DOMAIN-SUFFIX,login0.wotblitz.asia 9 | DOMAIN-SUFFIX,login1.wotblitz.asia 10 | DOMAIN-SUFFIX,login2.wotblitz.asia 11 | DOMAIN-SUFFIX,events.appsflyer.com 12 | DOMAIN-SUFFIX,nts.gamegrids.net 13 | DOMAIN-SUFFIX,api.gamegrids.net 14 | DOMAIN-SUFFIX,auth.gamegrids.net 15 | DOMAIN-SUFFIX,static.gamegrids.net 16 | DOMAIN-SUFFIX,media-wbp.wgcdn.co 17 | DOMAIN-SUFFIX,stufficons.wgcdn.co 18 | DOMAIN-SUFFIX,wotblitzasia.xmpp.wargaming.net 19 | DOMAIN-SUFFIX,dl-wotblitz-gc.wargaming.net 20 | DOMAIN-SUFFIX,cdn.static.wotb.app 21 | DOMAIN-SUFFIX,roaster.wotb.app 22 | DOMAIN-SUFFIX,asia.wotblitz.com 23 | IP-CIDR,34.117.103.161/32 24 | IP-CIDR,34.36.222.115/32 25 | IP-CIDR,92.38.145.145/32 26 | IP-CIDR,92.223.16.81/32 27 | IP-CIDR,92.223.17.82/32 28 | IP-CIDR,92.223.29.19/32 29 | IP-CIDR,92.223.29.22/32 30 | IP-CIDR,92.223.29.27/32 31 | IP-CIDR,92.223.78.30/32 32 | IP-CIDR,95.85.94.205/32 33 | IP-CIDR,13.35.122.38/32 34 | IP-CIDR,13.35.122.68/32 35 | IP-CIDR,18.67.93.124/32 36 | 37 | DOMAIN-SUFFIX,wgcdn.co 38 | DOMAIN-SUFFIX,gamegrids.net 39 | DOMAIN-SUFFIX,wotb.app 40 | DOMAIN-SUFFIX,wotblitz.com 41 | DOMAIN-SUFFIX,wargaming.net 42 | DOMAIN-KEYWORD,wotb 43 | DOMAIN-KEYWORD,wotblitz 44 | DOMAIN-KEYWORD,wargaming 45 | IP-CIDR,92.223.16.0/24 46 | IP-CIDR,92.223.78.0/24 47 | IP-CIDR,92.223.84.0/24 48 | IP-CIDR,92.223.29.0/24 49 | IP-CIDR,95.85.94.0/24 50 | -------------------------------------------------------------------------------- /rule/Shadowrocket/idomain/domain.list: -------------------------------------------------------------------------------- 1 | DOMAIN-SUFFIX,us.kg 2 | DOMAIN-SUFFIX,eu.org 3 | DOMAIN-SUFFIX,hw.059527.xyz 4 | DOMAIN-SUFFIX,aesin.sbs 5 | 6 | DOMAIN-SUFFIX,cdn.esin.cloud 7 | DOMAIN-SUFFIX,blog.esin.cloud 8 | DOMAIN-SUFFIX,esin.cloud 9 | 10 | DOMAIN-SUFFIX,visa.nyc.mn 11 | DOMAIN-SUFFIX,ecos.nyc.mn 12 | DOMAIN-SUFFIX,hw.aesin.ltd 13 | DOMAIN-SUFFIX,cdn.aesin.ltd -------------------------------------------------------------------------------- /rule/Shadowrocket/talkatone/ttblock.list: -------------------------------------------------------------------------------- 1 | # Name: ttblock.list 2 | # DESC: Talkatone NoAD 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Shadowrocket/talkatone/ttblock.list 4 | # Ref List URL: https://raw.githubusercontent.com/baiitang/Sakura/main/Loon/Rules/TalkatoneAD.list 5 | # 规则来源于 6 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 7 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 8 | # Talkatone如果发现有剩余的广告,可以引用上面两个分流,自行排查(欢迎反馈,Thx) 9 | 10 | DOMAIN-SUFFIX,impression-asia.liftoff.io 11 | DOMAIN-SUFFIX,cdn2.inner-active.mobi 12 | DOMAIN-SUFFIX,wv.inner-active.mobi 13 | DOMAIN-SUFFIX,cdn-f.adsmoloco.com 14 | DOMAIN-SUFFIX,impression.link 15 | 16 | # API接口類請求 17 | DOMAIN-SUFFIX,ads.pubmatic.com 18 | DOMAIN-SUFFIX,amazon-adsystem.com 19 | DOMAIN-SUFFIX,app-analytics-services.com 20 | DOMAIN-SUFFIX,appier.net 21 | DOMAIN-SUFFIX,appiersig.com 22 | DOMAIN-SUFFIX,aax.amazon-adsystem.com 23 | DOMAIN-SUFFIX,aax-fe.amazon-adsystem.com 24 | DOMAIN-SUFFIX,aax-fe-sin.amazon-adsystem.com 25 | DOMAIN-SUFFIX,adsappier.com 26 | DOMAIN-SUFFIX,bidder.criteo.com 27 | DOMAIN-SUFFIX,c.amazon-adsystem.com 28 | DOMAIN-SUFFIX,cr.adsappier.com 29 | DOMAIN-SUFFIX,ets-ap-southeast-1.track.smaato.net 30 | DOMAIN-SUFFIX,exchange-b-events.inner-active.mobi 31 | DOMAIN-SUFFIX,firebaseinstallations.googleapis.com 32 | DOMAIN-SUFFIX,firebaseremoteconfig.googleapis.com 33 | DOMAIN-SUFFIX,firebase-settings.crashlytics.com 34 | DOMAIN-SUFFIX,gum.criteo.com 35 | DOMAIN-SUFFIX,i.l.inmobicdn.net 36 | DOMAIN-SUFFIX,i.l-dsp.inmobicdn.net 37 | DOMAIN-SUFFIX,ins.track.tappx.com 38 | DOMAIN-SUFFIX,mads.amazon-adsystem.com 39 | DOMAIN-SUFFIX,mfx.mobilefuse.com 40 | DOMAIN-SUFFIX,mt-usw.appiersig.com 41 | DOMAIN-SUFFIX,sdk-dnt.ad.smaato.net 42 | DOMAIN-SUFFIX,sdk-events.inner-active.mobi 43 | DOMAIN-SUFFIX,sdk-files.smaato.net 44 | DOMAIN-SUFFIX,sdk-hb-cfg.smaato.net 45 | DOMAIN-SUFFIX,skadnetworks.fyber.com 46 | DOMAIN-SUFFIX,ssp.api.tappx.com 47 | DOMAIN-SUFFIX,supply.inmobicdn.net 48 | DOMAIN-SUFFIX,tappx.com 49 | DOMAIN-SUFFIX,view.adjust.com 50 | DOMAIN-SUFFIX,vst.c.appier.net 51 | 52 | # 完全阻止的請求 - Google Ads 及相关 53 | DOMAIN-KEYWORD,googleads 54 | DOMAIN-SUFFIX,googleads.g.doubleclick.net 55 | DOMAIN-SUFFIX,googleads.g.doubleclick-cn.net 56 | DOMAIN-SUFFIX,lh3.googleadsserving.cn 57 | DOMAIN-SUFFIX,pagead2.googlesyndication-cn.com 58 | DOMAIN-SUFFIX,tpc.googlesyndication-cn.com 59 | DOMAIN-SUFFIX,www.googletagservices-cn.com 60 | 61 | # 完全阻止的請求 - 通用广告平台 62 | DOMAIN-SUFFIX,ow.pubmatic.com 63 | DOMAIN-SUFFIX,pubmatic.com 64 | DOMAIN-SUFFIX,smaato.net 65 | DOMAIN-SUFFIX,criteo.com 66 | DOMAIN-SUFFIX,inmobi.com 67 | 68 | # [URL Rewrite] 69 | # hostname = alt-r.my.com, imgx.jampp.com 70 | # URL-Regex,^https?:\/\/alt-r\.my\.com\/mobile url reject-dict 71 | # URL-Regex,^https?:\/\/imgx\.jampp\.com\/imgsrv\/tn url reject-img -------------------------------------------------------------------------------- /rule/Shadowrocket/talkatone/ttdirect.list: -------------------------------------------------------------------------------- 1 | # Name: ttdirect.list 2 | # Author: eslco 3 | ## DOMAIN-SUFFIX,tktn.be 4 | ## DOMAIN-SUFFIX,talkatone.com 5 | ## DOMAIN-SUFFIX,tenor.com 6 | ## DOMAIN-SUFFIX,agkn.com 7 | ## DOMAIN-SUFFIX,tktn.at 8 | ## The above domain name must be set up with Proxy 9 | 10 | 11 | # Direct rules 12 | DOMAIN-SUFFIX,inmobi.com 13 | DOMAIN-SUFFIX,mobilefuse.com 14 | DOMAIN-SUFFIX,crashlytics.com 15 | DOMAIN-SUFFIX,kochava.com 16 | # DOMAIN-SUFFIX,cohere.com 17 | # DOMAIN-SUFFIX,ip-api.com 18 | # IP-CIDR 19 | IP-CIDR,50.117.27.0/24 20 | IP-CIDR,63.251.124.0/24 21 | IP-CIDR,69.46.75.0/24 22 | IP-CIDR,205.164.56.0/24 23 | IP-CIDR,205.164.56.29/24 24 | IP-CIDR,63.251.124.0/24 25 | 26 | -------------------------------------------------------------------------------- /rule/Shadowrocket/talkatone/ttproxy.list: -------------------------------------------------------------------------------- 1 | # Talkatone Proxy Rule(Update) 2 | # Author: eslco 3 | # Updated at 2024.10.29 05:31 PM 4 | # './n' 5 | 6 | DOMAIN-SUFFIX,talkatone.com 7 | DOMAIN-SUFFIX,tenor.com 8 | DOMAIN-SUFFIX,agkn.com 9 | DOMAIN-SUFFIX,tktn.at 10 | DOMAIN-SUFFIX,tktn.be 11 | # DOMAIN-SUFFIX,cohere.com 12 | # DOMAIN-SUFFIX,ip-api.com -------------------------------------------------------------------------------- /rule/Surge/Blockchain/Domain.list: -------------------------------------------------------------------------------- 1 | # Name : Domain.list 2 | # Author : eslco 3 | # URL : https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Blockchain/Domain.list 4 | 5 | DOMAIN-SUFFIX,binance.com 6 | DOMAIN-SUFFIX,binance.cloud 7 | DOMAIN-SUFFIX,okex.com 8 | DOMAIN-SUFFIX,okx.com 9 | 10 | # // HuoBi 11 | DOMAIN-SUFFIX,huobi.com 12 | DOMAIN-SUFFIX,debank.com 13 | DOMAIN-SUFFIX,zks.org 14 | DOMAIN-SUFFIX,zks.app 15 | DOMAIN-SUFFIX,zkswap.info 16 | DOMAIN-SUFFIX,loopring.org 17 | DOMAIN-SUFFIX,loopring.io 18 | DOMAIN-SUFFIX,loopring.network 19 | DOMAIN-SUFFIX,ipdata.co 20 | DOMAIN-SUFFIX,api.loopring.network 21 | DOMAIN-SUFFIX,coingecko.com 22 | DOMAIN-SUFFIX,coinmarketcap.com 23 | DOMAIN-SUFFIX,token.im 24 | DOMAIN-SUFFIX,tongke.top 25 | DOMAIN-SUFFIX,tongke.co 26 | DOMAIN-SUFFIX,tokenlon.im 27 | DOMAIN-SUFFIX,onekey-asset.com 28 | DOMAIN-SUFFIX,onekey.so 29 | DOMAIN-SUFFIX,qkl123.com 30 | 31 | # // TradingView 32 | DOMAIN-SUFFIX,tradingview.com 33 | 34 | DOMAIN-SUFFIX,bybit.com 35 | DOMAIN-SUFFIX,feixiaohao.co 36 | DOMAIN-SUFFIX,feixiaoquan.com 37 | DOMAIN-SUFFIX,fxhapp.com 38 | DOMAIN-SUFFIX,kucoin.com 39 | -------------------------------------------------------------------------------- /rule/Surge/Blockchain/Exchange.list: -------------------------------------------------------------------------------- 1 | # BlockChain Surge Rule List 2 | # Author: eslco 3 | # Time : 2023 0202 15:34 PM 4 | DOMAIN-SUFFIX,binance.com 5 | DOMAIN-SUFFIX,binance.cloud 6 | DOMAIN-SUFFIX,okex.com 7 | DOMAIN-SUFFIX,okx.com 8 | DOMAIN-SUFFIX,huobi.com 9 | DOMAIN-SUFFIX,debank.com 10 | DOMAIN-SUFFIX,zks.org 11 | DOMAIN-SUFFIX,zks.app 12 | DOMAIN-SUFFIX,zkswap.info 13 | DOMAIN-SUFFIX,loopring.org 14 | DOMAIN-SUFFIX,loopring.io 15 | DOMAIN-SUFFIX,loopring.network 16 | DOMAIN-SUFFIX,ipdata.co 17 | DOMAIN-SUFFIX,api.loopring.network 18 | DOMAIN-SUFFIX,coingecko.com 19 | DOMAIN-SUFFIX,coinmarketcap.com 20 | DOMAIN-SUFFIX,token.im 21 | DOMAIN-SUFFIX,tongke.top 22 | DOMAIN-SUFFIX,tongke.co 23 | DOMAIN-SUFFIX,tokenlon.im 24 | DOMAIN-SUFFIX,onekey-asset.com 25 | DOMAIN-SUFFIX,onekey.so 26 | DOMAIN-SUFFIX,qkl123.com 27 | DOMAIN-SUFFIX,tradingview.com 28 | DOMAIN-SUFFIX,bybit.com 29 | DOMAIN-SUFFIX,feixiaohao.co 30 | DOMAIN-SUFFIX,feixiaoquan.com 31 | DOMAIN-SUFFIX,fxhapp.com 32 | DOMAIN-SUFFIX,kucoin.com 33 | -------------------------------------------------------------------------------- /rule/Surge/Twitch/TD.list: -------------------------------------------------------------------------------- 1 | # Name: TD.list (TwitchDirect.list) 2 | 3 | # CDN URL: https://raw.gitmirror.com/eslco/base/main/rule/Surge/Twitch/TD.list 4 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Twitch/TD.list 5 | # Author: eslco 6 | # Repo URzL: https://github.com/eslco/base 7 | # Update at 2025.01.23 8 | 9 | # ======== Twitch basic CDN ======== # 10 | # Twitch static CDN 11 | DOMAIN-SUFFIX,jtvnw.net 12 | DOMAIN-SUFFIX,live-video.net 13 | DOMAIN-SUFFIX,playlist.ttvnw.net 14 | DOMAIN-SUFFIX,global.poe.live-video.net 15 | URL-REGEX,^https?:\/\/[^\/]*ttvnw[^\/]*\.akamaized\.net(\/.*)?$ 16 | # Depercated RULE SET 17 | URL-REGEX,^https?:\/\/(?:[\w.-]*\.)?(?:static-cdn\.)?jtvnw\.net\/.*$ 18 | URL-REGEX,^https?:\/\/(?:.*\.)?playlist\.ttvnw\.net\/.*$ 19 | # URL-REGEX,^https?:\/\/[\w.-]+\.live-video\.net\/.*$ 20 | 21 | # ======== Twitch Region Detect ======== # 22 | # DOMAIN-SUFFIX,usher.ttvnw.net 23 | 24 | # ======== Twitch Streaming ======== # 25 | # 精准匹配 Twitch (Cloudfront) CDN # 26 | # URL-REGEX,^https?:\/\/(?:[a-z0-9-]+\.)*cloudfront\.[a-z0-9-]+\.(?:hls\.)?ttvnw\.net\/.*$ 27 | ## Twitch Video (Weaver|Edge) ##1080P+ Fixed | 精准匹配 最高效率(使用非捕獲組,子域名兼容匹配合法字符,防止非邏輯URL) 28 | URL-REGEX,^https?:\/\/(?:[a-z0-9-]+\.)*video-(?:weaver|edge)(?:-[a-z0-9-]+)*(?:\.abs)?\.hls\.ttvnw\.net\/.*$ 29 | 30 | # Final Matches # 31 | DOMAIN-SUFFIX,hls.ttvnw.net -------------------------------------------------------------------------------- /rule/Surge/Twitch/TP.list: -------------------------------------------------------------------------------- 1 | # Name: TP.list (TwitchProxy) 2 | # CDN URL: https://raw.gitmirror.com/eslco/base/main/rule/Surge/Twitch/TP.list 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Twitch/TP.list 4 | # Author: eslco 5 | # Repo URL: https://github.com/eslco/base/rule 6 | # Update at 2025.02.03 7 | 8 | # ======== Twitch Region Detect ======== # 9 | DOMAIN-SUFFIX,usher.ttvnw.net 10 | 11 | # ======== Twitch Core Services ======== # 12 | DOMAIN-SUFFIX,ext-twitch.tv 13 | DOMAIN-SUFFIX,twitchcdn.net 14 | DOMAIN-SUFFIX,twitchsvc.net 15 | 16 | # ======== Critical Subdomains (API/Player) ======== # 17 | DOMAIN-SUFFIX,pubsub-edge.twitch.tv 18 | DOMAIN-SUFFIX,player.twitch.tv 19 | DOMAIN-SUFFIX,assets.twitch.tv 20 | DOMAIN-SUFFIX,api.twitch.tv 21 | DOMAIN-SUFFIX,gql.twitch.tv 22 | DOMAIN-SUFFIX,twitch.tv 23 | 24 | # ======== Dynamic Subdomains (Regex) ======== # 25 | # 匹配所有 ext-twitch.tv 的动态子域名(如 *.ext-twitch.tv) 26 | DOMAIN-SUFFIX,ext-twitch.tv 27 | # URL-REGEX,^https?:\/\/(?:[a-z0-9-]+\.)+ext-twitch\.tv\/.*$ 28 | 29 | # ======== Third-Party Extensions ======== # 30 | DOMAIN-SUFFIX,twitch-ext.rootonline.de 31 | 32 | # ======== Twitch Chat Server ======= # 33 | DOMAIN-SUFFIX,irc-ws.chat.twitch.tv 34 | DOMAIN-SUFFIX,chat.twitch.tv 35 | ## IP-CIDR of Twitch Chat Server 聊天室伺服器IP-CIDR ## 36 | IP-CIDR,52.26.161.211/32,no-resolve 37 | IP-CIDR,44.235.206.9/32,no-resolve 38 | IP-CIDR,34.213.205.75/32,no-resolve 39 | IP-CIDR,52.89.201.32/32,no-resolve 40 | IP-CIDR,54.69.102.66/32,no-resolve 41 | IP-CIDR,52.36.231.249/32,no-resolve 42 | IP-CIDR,44.238.175.31/32,no-resolve 43 | IP-CIDR,44.228.62.191/32,no-resolve 44 | 45 | # ====== Twitch IP-ASN ====== # 46 | # ASN (Autonomous System Number) of Twitch AS46489 47 | # IP-ASN,48489,no-resolve 48 | 49 | # Deprecated RULESET # 50 | # RULE-SET,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Shadowrocket/Twitch/Twitch.list -------------------------------------------------------------------------------- /rule/Surge/Twitch/TR.list: -------------------------------------------------------------------------------- 1 | # NAME: Reject.list 2 | # Author: eslco, eslion 3 | # CDN URL: https://raw.gitmirror.com/eslco/base/main/rule/Surge/Twitch/TR.list 4 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Surge/Twitch/TR.list 5 | # UPDATED: 2025-01-23 08:02 PM 6 | # DOMAIN-KEYWORD: 1 7 | # DOMAIN-SUFFIX: ~ 8 | # IP-CIDR: ~~ 9 | # TOTAL: ~~ 10 | DOMAIN-SUFFIX,d2v02itv0y9u9t.cloudfront.net 11 | DOMAIN-SUFFIX,secure-sts-prod.imrworldwide.com 12 | DOMAIN-SUFFIX,aax-us-east.amazon-adsystem.com 13 | DOMAIN-SUFFIX,vaes.amazon-adsystem.com 14 | DOMAIN-SUFFIX,cdn-a.amazon-adsystem.com 15 | DOMAIN-SUFFIX,pubads.g.doubleclick.net 16 | # 17 | DOMAIN-SUFFIX,sb.scorecardresearch.com 18 | DOMAIN-SUFFIX,s.amazon-adsystem.com 19 | # 20 | DOMAIN-SUFFIX,reporting.cdndex.io 21 | DOMAIN-KEYWORD,ingest.sentry.io 22 | DOMAIN-SUFFIX,ad.doubleclick.net 23 | DOMAIN-SUFFIX,api.mixpanel.com 24 | DOMAIN-SUFFIX,spade.twitch.tv 25 | # DOMAIN-SUFFIX,fan.twitch.tv 26 | # 27 | # Test API 28 | DOMAIN-SUFFIX,api.amplitude.com 29 | DOMAIN-SUFFIX,api.sprig.com 30 | # Test API 31 | DOMAIN-SUFFIX,ads.twitch.tv 32 | -------------------------------------------------------------------------------- /rule/general/Apple/013229.csv: -------------------------------------------------------------------------------- 1 | 傳輸埠,類型,服務或通訊協定,服務名稱 2 | 22,TCP,安全 Shell(SSH)、SSH 檔案傳送通訊協定(SFTP)和安全副本(scp),ssh //RFC 4253 3 | 25,TCP,簡易郵件傳輸通訊協定(SMTP),smtp //RFC 5321 4 | 53,TCP、UDP,網域名稱系統(DNS),domain //RFC 1034 5 | 80,TCP,超文字傳輸通訊協定(HTTP),http //RFC 2616 6 | 88,TCP,Kerberos,kerberos //RFC 4120 7 | 110,TCP,郵局通訊協定(POP3)、認證郵局通訊協定(APOP),pop3 //RFC 1939 8 | 123,UDP,網路時間通訊協定(NTP),ntp //RFC 1305 9 | 137,UDP,Windows 網際網路名稱服務(WINS),netbios-ns 10 | 138,UDP,NETBIOS Datagram Service,netbios-dgm 11 | 139,TCP,伺服器訊息區塊(SMB),netbios-ssn 12 | 143,TCP,網際網路訊息存取通訊協定(IMAP),imap //RFC 3501 13 | 192,UDP,OSU 網路監控系統,osu-nms 14 | 389,TCP,輕量目錄存取通訊協定(LDAP),ldap //RFC 4511 15 | 443,TCP,安全編碼傳輸技術(SSL 或 HTTPS),https //RFC 2818 16 | 443,UDP,QUIC,https 17 | 445,TCP,Microsoft SMB 網域伺服器,microsoft-ds 18 | 465,TCP,「郵件」的郵件傳送(認證 SMTP),smtp 19 | 500,UDP,Wi-Fi 通話,isakmp //RFC 5996 20 | 515,TCP,行列式印表機(LPR)、行列式印表機服務程式(LPD),printer 21 | 548,TCP,透過 TCP 的 Apple 檔案通訊協定(AFP),afpovertcp 22 | 554,TCP、UDP,即時串流通訊協定(RTSP),rtsp //RFC 2326 23 | 587,TCP,「郵件」的郵件傳送(認證 SMTP),submission //RFC 4409 24 | 631,TCP,網際網路列印通訊協定(IPP),ipp //RFC 2910 25 | 636,TCP,安全 LDAP,ldaps 26 | 749,TCP、UDP,Kerberos 5 admin/changepw,kerberos-adm 27 | 993,TCP,郵件 IMAP SSL,imaps 28 | 995,TCP、UDP,郵件 POP SSL,pop3s 29 | 1900,UDP,SSDP,ssdp 30 | 2197,TCP,Apple 推播通知服務(APNS),mnp-exchange 31 | 3031,TCP、UDP,遠端 Apple Event,eppc 32 | 3283,TCP、UDP,Apple 遠端桌面和「課堂」,net-assistant 33 | 3284,TCP,「課堂」檔案傳送,classroom 34 | 3285,TCP,課堂,classroom 35 | 3478-3497,UDP,—,nat-stun-port 36 | 3689,TCP,數位音訊存取通訊協定(DAAP),daap 37 | 3690,TCP、UDP,Subversion,svn 38 | 4398,UDP,—,— 39 | 4500,UDP,Wi-Fi 通話,ipsec-msft //RFC 5996 40 | 5100,TCP,—,socalia 41 | 5223,TCP,Apple 推播通知服務(APNS),— 42 | 5228,TCP,—,— 43 | 5297,TCP,—,— 44 | 5350,UDP,NAT 傳輸埠對應通訊協定宣告,— 45 | 5351,UDP,NAT 傳輸埠對應通訊協定,nat-pmp 46 | 5353,UDP,多點發送 DNS(MDNS),mdns //RFC 3927 47 | 5900,TCP,遠端影格緩衝,rfb //RFC 6143 48 | 5900,UDP,遠端影格緩衝、即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),rfb 49 | 5901-5902,UDP,即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),— 50 | 8000-8999,TCP,—,irdmi 51 | 9100,TCP,Printing,hp-pdl-datastr 52 | 9418,TCP、UDP,git pack transfer,git 53 | 16384-16403,UDP,即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),connected 54 | 16384-16387,UDP,即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),connected 55 | 16393-16402,UDP,即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),connected 56 | 16403-16472,UDP,即時傳輸通訊協定(RTP)、即時控制通訊協定(RTCP),— 57 | 42000-42999,TCP,—,— 58 | 49152-65535,TCP,Xsan,— 59 | -------------------------------------------------------------------------------- /rule/general/AppleID.list: -------------------------------------------------------------------------------- 1 | #!Name: AppleID 2 | #!Author: eslco 3 | #!Repo:https://raw.githubusercontent.com/eslco/iconf/master/Shadowrocket/rule/general/AppleID.list 4 | 5 | # Apple AppStore 6 | DOMAIN-SUFFIX,apps.apple.com 7 | #Update at 2024.08.19 8 | 9 | DOMAIN-SUFFIX,query.ess.apple.com 10 | DOMAIN-SUFFIX,identity.ess.apple.com 11 | DOMAIN-KEYWORD,-courier.push.apple 12 | DOMAIN,appleid.apple.com 13 | DOMAIN,appleid.cdn-apple.com 14 | DOMAIN,gsa.apple.com 15 | DOMAIN,idmsa.apple.com 16 | DOMAIN,appleid.cdn-apple.com 17 | DOMAIN,appleworldwidedeveloper.hb-api.omtrdc.net 18 | DOMAIN,appleworldwidedeveloper.sc.omtrdc.net 19 | DOMAIN-SUFFIX,appleid-applemx.com 20 | DOMAIN-SUFFIX,appleid-applemx.us 21 | DOMAIN-SUFFIX,appleid-icloud.com 22 | DOMAIN-SUFFIX,appleid-uk.us 23 | DOMAIN-SUFFIX,appleid.berlin 24 | DOMAIN-SUFFIX,appleid.com 25 | DOMAIN-SUFFIX,appleid.hamburg 26 | DOMAIN-SUFFIX,appleid.hk 27 | DOMAIN-SUFFIX,myappleid.com 28 | DOMAIN-SUFFIX,myicloud.net 29 | DOMAIN-SUFFIX,mylcloud.net 30 | DOMAIN-SUFFIX,wwwicloud.com 31 | DOMAIN-SUFFIX,wwwitunes.com 32 | DOMAIN-SUFFIX,touchid.tv 33 | DOMAIN-SUFFIX,touchid.wang 34 | DOMAIN-SUFFIX,faceid99.com 35 | DOMAIN-SUFFIX,faceid99.net 36 | DOMAIN-SUFFIX,faceidglobal.com 37 | DOMAIN,valid.apple.com 38 | DOMAIN,valid.origin-apple.com.akadns.net 39 | -------------------------------------------------------------------------------- /rule/general/AppleNews.list: -------------------------------------------------------------------------------- 1 | # NAME: AppleNews 2 | # AUTHOR: blackmatrix7 3 | # REPO: https://github.com/blackmatrix7/ios_rule_script 4 | # UPDATED: 2024-07-04 16:14:52 5 | # DOMAIN: x 6 | # USER-AGENT: x 7 | # TOTAL: x 8 | USER-AGENT,*AssistantServices* 9 | # Apple Optimizer 10 | PROCESS-NAME,News 11 | DOMAIN-SUFFIX,ls.apple.com 12 | DOMAIN,gspe1-ssl.ls.apple.com 13 | DOMAIN,apple.comscoreresearch.com 14 | DOMAIN,news-client-search.apple.com 15 | USER-AGENT,News* 16 | USER-AGENT,AppleNews* 17 | USER-AGENT,com.apple.news* 18 | -------------------------------------------------------------------------------- /rule/general/Bitwarden.list: -------------------------------------------------------------------------------- 1 | # Name: Bitwarden.list 2 | # Author: eslco esinco 3 | # Update as in 2024.07.09 4 | 5 | DOMAIN-SUFFIX,bitwarden.eu 6 | DOMAIN-SUFFIX,bitwarden.com 7 | DOMAIN-SUFFIX,vault.bitwarden.eu 8 | DOMAIN-SUFFIX,vault.bitwarden.com 9 | DOMAIN-SUFFIX,n.sni.global.fastly.net 10 | DOMAIN-KEYWORD,bitwarden 11 | USER-AGENT,Bitwarden 12 | IP-CIDR,151.101.1.91/32 13 | IP-CIDR,151.101.65.91/32 14 | IP-CIDR,151.101.129.91/32 15 | IP-CIDR,151.101.193.91/32 16 | -------------------------------------------------------------------------------- /rule/general/CryptoDEX.list: -------------------------------------------------------------------------------- 1 | DOMAIN-SUFFIX,coinbase.com 2 | DOMAIN-SUFFIX,binance.com 3 | 4 | # OKX 5 | DOMAIN-SUFFIX,okx.com 6 | DOMAIN-SUFFIX,www.okx.com 7 | DOMAIN-SUFFIX,wspri.okx.com 8 | DOMAIN-SUFFIX,wsdexpri.okx.com 9 | DOMAIN-SUFFIX,wspri.ouyich.biz 10 | DOMAIN-SUFFIX,wsdexpri.ouyich.biz 11 | DOMAIN-SUFFIX,wsdexpri.ouyich.show 12 | DOMAIN-SUFFIX,wspri.ouyich.show 13 | 14 | DOMAIN-SUFFIX,bybit.com -------------------------------------------------------------------------------- /rule/general/DEX/DEX.list: -------------------------------------------------------------------------------- 1 | # Name: DEX.list 2 | # URL: https://github.com/eslco/base/raw/main/rule/Clash/DEX/DEX.list 3 | 4 | # Related URL: https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Surge/Crypto/Crypto.list 5 | # Related URL: https://github.com/blackmatrix7/ios_rule_script/blob/master/rule/Surge/Cryptocurrency/Cryptocurrency.list 6 | # Update Time: 2025.05.05 7 | # Decentralized Exchange 8 | 9 | # Leading No.10 DEX (Data as 250505 from https://cryptorank.io/exchanges ) 10 | DOMAIN-SUFFIX,binance.com 11 | DOMAIN-SUFFIX,bitget.com 12 | DOMAIN-SUFFIX,okx.com 13 | DOMAIN-SUFFIX,coinbase.com 14 | DOMAIN-SUFFIX,mexc.com 15 | DOMAIN-SUFFIX,bybit.com 16 | DOMAIN-SUFFIX,www.bitmart.com 17 | DOMAIN-SUFFIX,bingx.com 18 | DOMAIN-SUFFIX,www.kucoin.com 19 | DOMAIN-SUFFIX,www.gate.io 20 | DOMAIN-SUFFIX,www.gatesites.net 21 | DOMAIN-SUFFIX,crypto.com 22 | 23 | # CoinBase 24 | DOMAIN-SUFFIX,cb.id 25 | DOMAIN-SUFFIX,coinbase.com 26 | DOMAIN-SUFFIX,coinbase.net 27 | 28 | # Binance 29 | DOMAIN-SUFFIX,www.bmwweb.net 30 | DOMAIN-SUFFIX,api.binance.com 31 | DOMAIN-SUFFIX,www.binance.com 32 | DOMAIN-SUFFIX,binance.com 33 | 34 | # OKX 35 | DOMAIN,www.okx.com 36 | DOMAIN-SUFFIX,okx.com 37 | DOMAIN-SUFFIX,wspri.okx.com.cdn.cloudflare.net 38 | DOMAIN-SUFFIX,wspri.okx.com 39 | DOMAIN-SUFFIX,wsdexpri.okx.com 40 | DOMAIN-SUFFIX,wspri.ouyich.biz 41 | DOMAIN-SUFFIX,wsdexpri.ouyich.biz 42 | DOMAIN-SUFFIX,wsdexpri.ouyich.show 43 | DOMAIN-SUFFIX,wspri.ouyich.show 44 | 45 | # Bybit 46 | DOMAIN-SUFFIX,bybit.com 47 | 48 | # Gate.io 49 | DOMAIN-SUFFIX,gate.io 50 | DOMAIN-SUFFIX,gatesites.com 51 | 52 | # Biyapay.com 53 | DOMAIN-SUFFIX,app.biyapay.com -------------------------------------------------------------------------------- /rule/general/DirectN.list: -------------------------------------------------------------------------------- 1 | # NAME:DirectN.list 2 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/general/DirectN.list 3 | 4 | # 250318 added 5 | DOMAIN-SUFFIX,spaceship.com 6 | DOMAIN-SUFFIX,dash.domain.digitalplat.org 7 | # DOMAIN-SUFFIX,challenges.cloudflare.com 8 | 9 | 10 | # 2024新增 11 | USER-AGENT,archero* 12 | USER-AGENT,coffeecorp* 13 | USER-AGENT,Coffee%20Corp* 14 | USER-AGENT,restaurant-mobile* 15 | DOMAIN,app.adjust.com 16 | DOMAIN,bdtj.tagtic.cn 17 | # > Alibaba 18 | DOMAIN,log.mmstat.com 19 | DOMAIN,sycm.mmstat.com 20 | # > Google 21 | DOMAIN-SUFFIX,blog.google // Google Blog 22 | DOMAIN-SUFFIX,googletraveladservices.com 23 | DOMAIN,clientservices.googleapis.com 24 | DOMAIN,dl.google.com 25 | DOMAIN,dl.l.google.com 26 | DOMAIN,update.googleapis.com 27 | DOMAIN,translate.googleapis.com 28 | # >> Google Fonts API 29 | DOMAIN,fonts.googleapis.com 30 | DOMAIN,fonts.gstatic.com 31 | # >> Firebase Cloud Messaging 32 | DOMAIN,mtalk.google.com 33 | DOMAIN,alt1-mtalk.google.com 34 | DOMAIN,alt2-mtalk.google.com 35 | DOMAIN,alt3-mtalk.google.com 36 | DOMAIN,alt4-mtalk.google.com 37 | DOMAIN,alt5-mtalk.google.com 38 | DOMAIN,alt6-mtalk.google.com 39 | DOMAIN,alt7-mtalk.google.com 40 | DOMAIN,alt8-mtalk.google.com 41 | # >> Paramount+ 42 | DOMAIN,pubads.g.doubleclick.net 43 | # > Tencent 44 | DOMAIN,fairplay.l.qq.com 45 | DOMAIN,livew.l.qq.com 46 | DOMAIN,vd.l.qq.com 47 | # > Strava 48 | DOMAIN,analytics.strava.com 49 | # > Umeng 50 | DOMAIN,msg.umeng.com 51 | DOMAIN,msg.umengcloud.com 52 | # 新增 53 | 54 | # Epicgames 55 | DOMAIN-SUFFIX,ol.epicgames.com 56 | 57 | # Getui 58 | DOMAIN-SUFFIX,dizhensubao.getui.com 59 | 60 | # Mozilla 61 | DOMAIN-SUFFIX,tracking-protection.cdn.mozilla.net 62 | 63 | # Origin 64 | DOMAIN,origin-a.akamaihd.net 65 | 66 | # Tencent 67 | DOMAIN,fairplay.l.qq.com 68 | DOMAIN,livew.l.qq.com 69 | DOMAIN,vd.l.qq.com 70 | 71 | # Strava 72 | 73 | # Umeng 74 | DOMAIN,errlog.umeng.com 75 | DOMAIN,msg.umeng.com 76 | DOMAIN,msg.umengcloud.com 77 | 78 | # Miui 小米 79 | DOMAIN,tracking.miui.com 80 | 81 | # General 82 | DOMAIN,app.adjust.com 83 | DOMAIN,bdtj.tagtic.cn 84 | 85 | # Hypixel Network 86 | DOMAIN,rewards.hypixel.net 87 | 88 | # Koodo Mobile 89 | DOMAIN-SUFFIX,koodomobile.com 90 | koodomobile.ca 91 | -------------------------------------------------------------------------------- /rule/general/InstantChat/InstantChat.list: -------------------------------------------------------------------------------- 1 | # NAME: InstantChat.list 2 | # AUTHOR: blackmatrix7 x eslco 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/general/InstantChat/InstantChat.list 4 | # REPO: https://github.com/eslco/base/blob/main/rule/Clash/README.md 5 | # DOMAIN-KEYWORD: 2 6 | # DOMAIN-SUFFIX: 544 7 | # IP-ASN: X 8 | # IP-CIDR: X 9 | # TOTAL: X 10 | 11 | # Signal 12 | DOMAIN,chat.signal.org 13 | DOMAIN-SUFFIX,signal.org 14 | 15 | # Session 16 | DOMAIN-SUFFIX,session.org 17 | 18 | # Martix Chat 19 | # example.com 20 | 21 | # xMessenger 22 | DOMAIN-SUFFIX,session.org 23 | 24 | # SimpleX Chat 25 | 26 | # DOMAIN-KEYWORD,SimpleX 27 | DOMAIN-SUFFIX,simplex.im -------------------------------------------------------------------------------- /rule/general/Talkatone/ttblock.list: -------------------------------------------------------------------------------- 1 | # Name: ttblock.list 2 | # DESC: Talkatone NoAD 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/Shadowrocket/talkatone/ttblock.list 4 | # Ref List URL: https://raw.githubusercontent.com/baiitang/Sakura/main/Loon/Rules/TalkatoneAD.list 5 | # 规则来源于 6 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 7 | # https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 8 | # Talkatone如果发现有剩余的广告,可以引用上面两个分流,自行排查(欢迎反馈,Thx) 9 | 10 | DOMAIN-SUFFIX,impression-asia.liftoff.io 11 | DOMAIN-SUFFIX,cdn2.inner-active.mobi 12 | DOMAIN-SUFFIX,wv.inner-active.mobi 13 | DOMAIN-SUFFIX,cdn-f.adsmoloco.com 14 | DOMAIN-SUFFIX,impression.link 15 | 16 | # API接口類請求 17 | DOMAIN-SUFFIX,ads.pubmatic.com 18 | DOMAIN-SUFFIX,amazon-adsystem.com 19 | DOMAIN-SUFFIX,app-analytics-services.com 20 | DOMAIN-SUFFIX,appier.net 21 | DOMAIN-SUFFIX,appiersig.com 22 | DOMAIN-SUFFIX,aax.amazon-adsystem.com 23 | DOMAIN-SUFFIX,aax-fe.amazon-adsystem.com 24 | DOMAIN-SUFFIX,aax-fe-sin.amazon-adsystem.com 25 | DOMAIN-SUFFIX,adsappier.com 26 | DOMAIN-SUFFIX,bidder.criteo.com 27 | DOMAIN-SUFFIX,c.amazon-adsystem.com 28 | DOMAIN-SUFFIX,cr.adsappier.com 29 | DOMAIN-SUFFIX,ets-ap-southeast-1.track.smaato.net 30 | DOMAIN-SUFFIX,exchange-b-events.inner-active.mobi 31 | DOMAIN-SUFFIX,firebaseinstallations.googleapis.com 32 | DOMAIN-SUFFIX,firebaseremoteconfig.googleapis.com 33 | DOMAIN-SUFFIX,firebase-settings.crashlytics.com 34 | DOMAIN-SUFFIX,gum.criteo.com 35 | DOMAIN-SUFFIX,i.l.inmobicdn.net 36 | DOMAIN-SUFFIX,i.l-dsp.inmobicdn.net 37 | DOMAIN-SUFFIX,ins.track.tappx.com 38 | DOMAIN-SUFFIX,mads.amazon-adsystem.com 39 | DOMAIN-SUFFIX,mfx.mobilefuse.com 40 | DOMAIN-SUFFIX,mt-usw.appiersig.com 41 | DOMAIN-SUFFIX,sdk-dnt.ad.smaato.net 42 | DOMAIN-SUFFIX,sdk-events.inner-active.mobi 43 | DOMAIN-SUFFIX,sdk-files.smaato.net 44 | DOMAIN-SUFFIX,sdk-hb-cfg.smaato.net 45 | DOMAIN-SUFFIX,skadnetworks.fyber.com 46 | DOMAIN-SUFFIX,ssp.api.tappx.com 47 | DOMAIN-SUFFIX,supply.inmobicdn.net 48 | DOMAIN-SUFFIX,tappx.com 49 | DOMAIN-SUFFIX,view.adjust.com 50 | DOMAIN-SUFFIX,vst.c.appier.net 51 | 52 | # 完全阻止的請求 - Google Ads 及相关 53 | DOMAIN-KEYWORD,googleads 54 | DOMAIN-SUFFIX,googleads.g.doubleclick.net 55 | DOMAIN-SUFFIX,googleads.g.doubleclick-cn.net 56 | DOMAIN-SUFFIX,lh3.googleadsserving.cn 57 | DOMAIN-SUFFIX,pagead2.googlesyndication-cn.com 58 | DOMAIN-SUFFIX,tpc.googlesyndication-cn.com 59 | DOMAIN-SUFFIX,www.googletagservices-cn.com 60 | 61 | # 完全阻止的請求 - 通用广告平台 62 | DOMAIN-SUFFIX,ow.pubmatic.com 63 | DOMAIN-SUFFIX,pubmatic.com 64 | DOMAIN-SUFFIX,smaato.net 65 | DOMAIN-SUFFIX,criteo.com 66 | DOMAIN-SUFFIX,inmobi.com 67 | 68 | # [URL Rewrite] 69 | # hostname = alt-r.my.com, imgx.jampp.com 70 | # URL-Regex,^https?:\/\/alt-r\.my\.com\/mobile url reject-dict 71 | # URL-Regex,^https?:\/\/imgx\.jampp\.com\/imgsrv\/tn url reject-img -------------------------------------------------------------------------------- /rule/general/Talkatone/ttdirect.list: -------------------------------------------------------------------------------- 1 | # Name: ttdirect.list 2 | # Author: eslco 3 | ## DOMAIN-SUFFIX,tktn.be 4 | ## DOMAIN-SUFFIX,talkatone.com 5 | ## DOMAIN-SUFFIX,tenor.com 6 | ## DOMAIN-SUFFIX,agkn.com 7 | ## DOMAIN-SUFFIX,tktn.at 8 | ## The above domain name must be set up with Proxy 9 | 10 | 11 | # Direct rules 12 | DOMAIN-SUFFIX,inmobi.com 13 | DOMAIN-SUFFIX,mobilefuse.com 14 | DOMAIN-SUFFIX,crashlytics.com 15 | DOMAIN-SUFFIX,kochava.com 16 | # DOMAIN-SUFFIX,cohere.com 17 | # DOMAIN-SUFFIX,ip-api.com 18 | # IP-CIDR 19 | IP-CIDR,50.117.27.0/24 20 | IP-CIDR,63.251.124.0/24 21 | IP-CIDR,69.46.75.0/24 22 | IP-CIDR,205.164.56.0/24 23 | IP-CIDR,205.164.56.29/24 24 | IP-CIDR,63.251.124.0/24 25 | 26 | -------------------------------------------------------------------------------- /rule/general/Talkatone/ttproxy.list: -------------------------------------------------------------------------------- 1 | # Talkatone Proxy Rule(Update) 2 | # Author: eslco 3 | # Updated at 2024.10.29 05:31 PM 4 | # './n' 5 | 6 | DOMAIN-SUFFIX,talkatone.com 7 | DOMAIN-SUFFIX,tenor.com 8 | DOMAIN-SUFFIX,agkn.com 9 | DOMAIN-SUFFIX,tktn.at 10 | DOMAIN-SUFFIX,tktn.be 11 | # DOMAIN-SUFFIX,cohere.com 12 | # DOMAIN-SUFFIX,ip-api.com -------------------------------------------------------------------------------- /rule/general/XianYu/XianYu.list: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eslco/base/0a608467fa3e20c0651e8f49d4b907e3fb1c5223/rule/general/XianYu/XianYu.list -------------------------------------------------------------------------------- /rule/general/XiaoHongShu/XiaoHongShu.list: -------------------------------------------------------------------------------- 1 | # NAME: XiaoHongShu.list 2 | 3 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/general/XiaoHongShu/XiaoHongShu.list 4 | # CDN URL: https://raw.gitmirror.com/eslco/base/main/rule/general/XiaoHongShu/XiaoHongShu.list 5 | # AUTHOR: blackmatrix7 x eslco 6 | # REPO: https://github.com/eslco/base/blob/main 7 | 8 | # UPDATED: 2025-03-11 16:17:40 9 | # DOMAIN-SUFFIX: 4 10 | # TOTAL: 4 11 | DOMAIN-SUFFIX,fengkongcloud.com 12 | DOMAIN-SUFFIX,fe-video-qc.xhscdn.com 13 | DOMAIN-SUFFIX,xhscdn.com 14 | DOMAIN-SUFFIX,xhscdn.net 15 | DOMAIN-SUFFIX,xiaohongshu.com 16 | DOMAIN-SUFFIX,xiaohongshu.com.cdn.cloudflare.net 17 | DOMAIN-SUFFIX,xiaohongshu.com.edge.bunnycdn.com 18 | Domain-SUFFIX,xiaohongshu.com.edge.net 19 | DOMAIN-SUFFIX,xiaohongshu.com.edge.net.s3-website.ap-southeast-1.amazonaws.com 20 | DOMAIN-SUFFIX,xiaohongshu.com.edge.net.s3-website.eu-central-1.amazonaws.com 21 | DOMAIN-SUFFIX,xiaohongshu.com.edge.net.s3-website.us-east-1.amazonaws.com 22 | DOMAIN-SUFFIX,xiaohongshu.com.edge.net.s3-website.us-west-1.amazonaws.com 23 | -------------------------------------------------------------------------------- /rule/general/YouTube/YouTubeM.list: -------------------------------------------------------------------------------- 1 | # YouTubeMusic.list 2 | # URL: https://raw.githubusercontent.com/eslco/base/main/rule/general/YouTube/YouTubeMusic.list 3 | 4 | USER-AGENT,*YouTubeMusic* 5 | USER-AGENT,YouTube* 6 | USER-AGENT,*youtube* 7 | USER-AGENT,YouTubeMusic* 8 | USER-AGENT,com.google.ios.youtube* 9 | USER-AGENT,*com.google.ios.youtubemusic* -------------------------------------------------------------------------------- /rule/general/bank.list: -------------------------------------------------------------------------------- 1 | DOMAIN-SUFFIX,wise.com 2 | DOMAIN-SUFFIX,ocbc.com.sg -------------------------------------------------------------------------------- /rule/general/onlinepay.list: -------------------------------------------------------------------------------- 1 | DOAMIN-SUFFIX,stripe.com 2 | DOMAIN-SUFFIX,wise.com 3 | DOMAIN-SUFFIX,redotpay.com -------------------------------------------------------------------------------- /rule/general/wargaming/wg_login.list: -------------------------------------------------------------------------------- 1 | #! URL: https://raw.github.com/eslco/base/main/rule/general/wargaming/wg_login.list 2 | #! Name: wg_login.list 3 | #! Author: eslco 4 | #Wotb Login Server Domain Records 5 | # Asia Servers 6 | #SG_C0, 92.223.16.81:20016, login0.wotblitz.asia, Singapore (Singapore) 7 | #IP-CIDR,92.223.16.59/32 8 | #IP-CIDR,92.223.16.81/32 9 | #IP-CIDR,92.223.16.143/32 10 | #IP-CIDR,92.223.16.0/24 11 | #SG_C1, 92.223.16.145:20016, login1.wotblitz.asia, Singapore (Singapore) 12 | 13 | #SG_C2, 95.85.94.91:20016, login2.wotblitz.asia, Japan (Tokyo) 14 | #IP-CIDR,95.85.94.91/32 15 | #IP-CIDR,95.85.94.170/32 16 | #IP-CIDR,95.85.94.114/32 17 | #IP-CIDR,95.85.94.115/32 18 | #IP-CIDR,95.85.94.131/32 19 | #IP-CIDR,95.85.94.205/32 20 | #IP-CIDR,95.85.94.0/24 21 | 22 | #Europe Servers 23 | #EU_C0, 92.223.31.136:20016, login0.wotblitz.eu, Netherlands (Kingdom of the) (Amsterdam) 24 | #EU_C0, 92.223.31.132:20016, login0.wotblitz.eu, Netherlands (Kingdom of the) (Amsterdam) 25 | #IP-CIDR,92.223.31.132/32 26 | #IP-CIDR,92.223.31.0/24 27 | 28 | #EU_C1, 92.223.31.138 29 | #IP-CIDR,92.223.31.138/32 30 | #IP-CIDR,92.223.31.139/32 31 | 32 | #EU_C2,80.240.112.16:20016, login2.wotblitz.eu, Germany (Frankfurt am Main) 33 | #EU_C2,80.240.112.201:20016, login2.wotblitz.eu, Germany (Frankfurt am Main) 34 | #IP-CIDR,80.240.112.16/32 35 | #IP-CIDR,80.240.112.24/32 36 | #IP-CIDR,80.240.112.184/32 37 | #IP-CIDR,80.240.112.201/32 38 | #IP-CIDR,80.240.112.203/32 39 | #IP-CIDR,80.240.112.210/32 40 | #IP-CIDR,80.240.112.0/24 41 | 42 | #EU_C3, 94.156.45.237:20016, login3.wotblitz.eu, Poland (Warsaw) 43 | #IP-CIDR,94.156.45.149/32 44 | #IP-CIDR,94.156.45.176/32 45 | #IP-CIDR,94.156.45.237/32 46 | #IP-CIDR,94.156.45.0/24 47 | 48 | #EU_C4,83.229.15.195:20016, login4.wotblitz.eu, Kazakhstan (Almaty) 49 | #IP-CIDR,83.229.15.137/32 50 | #IP-CIDR,83.229.15.0/24 51 | 52 | 53 | #RULE-SET 54 | DOMAIN-SUFFIX,login0.wotblitz.eu 55 | DOMAIN-SUFFIX,login1.wotblitz.eu 56 | DOMAIN-SUFFIX,login2.wotblitz.eu 57 | DOMAIN-SUFFIX,login3.wotblitz.eu 58 | DOMAIN-SUFFIX,login4.wotblitz.eu 59 | DOMAIN-SUFFIX,login0.wotblitz.com 60 | DOMAIN-SUFFIX,login1.wotblitz.com 61 | DOMAIN-SUFFIX,login2.wotblitz.com 62 | DOMAIN-SUFFIX,login0.wotblitz.asia 63 | DOMAIN-SUFFIX,login1.wotblitz.asia 64 | DOMAIN-SUFFIX,login2.wotblitz.asia 65 | URL-REGEX,^login\d+\.wotblitz\.(eu|com|asia|net)$ 66 | URL-REGEX,^login-[a-z]{2,3}\.worldofwarplanes\.com$ 67 | URL-REGEX,^(wotasia\d+|wotna\d+)\.login\.wargaming\.net$|^login\.(p\d+)\.worldoftanks\.eu$ 68 | URL-REGEX,^login\d+\.worldofwarships\.(com|eu|asia|jp|sg|net)$ 69 | 70 | #IPCIDR 71 | IP-CIDR,92.223.16.0/24 72 | IP-CIDR,95.85.94.0/24 73 | IP-CIDR,92.223.31.0/24 74 | IP-CIDR,80.240.112.0/24 75 | IP-CIDR,94.156.45.0/24 76 | IP-CIDR,83.229.15.0/24 77 | -------------------------------------------------------------------------------- /rule/general/wargaming/wotb.txt: -------------------------------------------------------------------------------- 1 | # Name: Wotb.list 2 | # Author: eslco 3 | # Update: 20250123 4 | 5 | DOMAIN-SUFFIX,nts.gamegrids.net 6 | DOMAIN-SUFFIX,api.gamegrids.net 7 | DOMAIN-SUFFIX,auth.gamegrids.net 8 | DOMAIN-SUFFIX,static.gamegrids.net 9 | DOMAIN-SUFFIX,media-wbp.wgcdn.co 10 | DOMAIN-SUFFIX,stufficons.wgcdn.co 11 | DOMAIN-SUFFIX,wotblitzasia.xmpp.wargaming.net 12 | DOMAIN-SUFFIX,wotblitzeu.xmpp.wargaming.net 13 | DOMAIN-SUFFIX,dl-wotblitz-gc.wargaming.net 14 | DOMAIN-SUFFIX,asia.wotblitz.com 15 | 16 | DOMAIN-SUFFIX,tmsis.wotblitz.asia 17 | DOMAIN-SUFFIX,events.appsflyer.com 18 | DOMAIN-SUFFIX,gamegrids.net 19 | DOMAIN-SUFFIX,wotblitz.com 20 | DOMAIN-SUFFIX,wotblitz.asia 21 | DOMAIN-SUFFIX,wotblitz.eu 22 | DOMAIN-SUFFIX,xmpp.wargaming.net 23 | DOMAIN-SUFFIX,asia.wargaming.net 24 | DOMAIN-SUFFIX,eu.wargaming.net 25 | DOMAIN-SUFFIX,wargaming.net 26 | DOMAIN-SUFFIX,cdn.static.wotb.app 27 | DOMAIN-SUFFIX,roaster.wotb.app 28 | DOMAIN-SUFFIX,wotb.app 29 | DOMAIN-KEYWORD,wargaming 30 | DOMAIN-KEYWORD,wotblitz 31 | DOMAIN-KEYWORD,wgcdn 32 | DOMAIN-KEYWORD,wotb 33 | 34 | IP-CIDR,34.117.103.161/32 35 | IP-CIDR,34.36.222.115/32 36 | IP-CIDR,92.38.145.145/32 37 | IP-CIDR,92.223.16.81/32 38 | IP-CIDR,92.223.16.144/32 39 | IP-CIDR,92.223.16.145/32 40 | IP-CIDR,92.223.17.82/32 41 | IP-CIDR,92.223.29.19/32 42 | IP-CIDR,92.223.29.22/32 43 | IP-CIDR,92.223.29.27/32 44 | IP-CIDR,92.223.78.30/32 45 | IP-CIDR,95.85.94.205/32 46 | IP-CIDR,13.35.122.38/32 47 | IP-CIDR,13.35.122.68/32 48 | IP-CIDR,18.67.93.124/32 49 | 50 | IP-CIDR,80.240.112.0/24 51 | IP-CIDR,94.156.45.0/24 52 | IP-CIDR,92.223.16.0/24 53 | IP-CIDR,92.223.17.0/24 54 | IP-CIDR,92.223.29.0/24 55 | IP-CIDR,92.223.31.0/24 56 | IP-CIDR,95.85.94.0/24 57 | 58 | IP-CIDR,83.229.15.0/24 59 | IP-CIDR,92.223.39.0/24 60 | IP-CIDR,92.223.45.0/24 61 | IP-CIDR,92.223.57.0/24 62 | IP-CIDR,92.223.78.0/24 63 | IP-CIDR,92.223.84.0/24 64 | 65 | -------------------------------------------------------------------------------- /script/linux/TG-SSH-check-notify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 設置Telegram Bot Token 和 Chat ID 4 | TELEGRAM_BOT_TOKEN="TG Bot API Token" # Your 你的Telegram Bot Token 5 | CHAT_ID="TG Chat ID" # Your 你的Telegram Chat ID 6 | 7 | # 設置CURL超時時間 #URL_TIMEOUT=8 8 | # 獲取登錄信息 Information 9 | country=$(curl -s ipinfo.io/${public_ip}/country) 10 | isp_info=$(curl -s ipinfo.io/org | sed -e 's/\"//g' | awk -F' ' '{print $2}') 11 | 12 | ipv4_address=$(curl -s ipv4.ip.sb) 13 | masked_ip=$(echo $ipv4_address | awk -F'.' '{print "*."$3"."$4}') 14 | 15 | # 獲取SSH連接的IP地址 16 | IP=$(echo $SSH_CONNECTION | awk '{print $1}') 17 | TIME=$(date +"%Y-%m-%d %H:%M:%S") 18 | 19 | # URL 转义 函数 HTML 20 | 21 | 22 | 23 | # 查詢IP地址對應的地理信息 GeoLocation 24 | # 備用 ACCESS0=$(curl -s https://ipapi.co/$IP/json/ | jq -r '.city') 25 | IP_as=$(curl -s "http://ip-api.com/json/$IP" | jq -r '.as') 26 | IP_org=$(curl -s "http://ip-api.com/json/$IP" | jq -r '.org') 27 | ACCESS_CN=$(curl -s "http://opendata.baidu.com/api.php?query=$IP&co=&resource_id=6006&oe=utf8&format=json" | jq -r '.data[0].location') 28 | ACCESS_US=$(curl -s "http://ip-api.com/json/$IP" | jq -r '.city') 29 | ScamRiskScore=$(curl -s "https://scamalytics.com/ip/$IP" | grep -oP '(?<=Fraud Score: )\d+') 30 | 31 | # 獲取當前用戶名 UserName 32 | USERNAME=$(whoami) 33 | # 構建待發送的Telegram消息 Message 34 | MESSAGE="ℹ️ 登錄信息SSH Info: 35 | 設備 Machine: ${isp_info}-${country}-${masked_ip} 36 | 用戶名 Username: $USERNAME 37 | 時間 Time: $TIME 38 | 地點 GeoData: ${ACCESS_CN}|${ACCESS_US} 39 | 登錄 IP: ${IP} 40 | Org所屬組織: ${IP_org} 41 | AS自治域: $IP_as 42 | 風險因數 FraudScore:${ScamRiskScore} 43 | IP詳情MoreInfo: HTML.Zone\nIP.IM\n Ping0.cc(${IP})" 44 | 45 | # 發送 Telegram 消息 46 | curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \ 47 | -d "chat_id=$CHAT_ID" \ 48 | -d "text=$MESSAGE" \ 49 | -d "parse_mode=html" \ 50 | -d "disable_web_page_preview=true" \ 51 | > /dev/null 2>&1 -------------------------------------------------------------------------------- /script/linux/debian/rootpw.sh: -------------------------------------------------------------------------------- 1 | echo "root:你的password密码" | sudo chpasswd root && sudo sed -i 's/^#?PermitRootLogin./PermitRootLogin yes/g' /etc/ssh/sshd_config && sudo sed -i 's/^#?PasswordAuthentication./PasswordAuthentication yes/g' /etc/ssh/sshd_config && sudo service ssh restart && sudo reboot && echo "Password changed successfully and SSH configuration updated. Restarting Server..." || echo "Failed to change password or update SSH configuration" 2 | -------------------------------------------------------------------------------- /script/linux/exp/TG-SSH-notify_test.sh: -------------------------------------------------------------------------------- 1 | 2 | root_use 3 | echo "TG-bot监控预警功能" 4 | echo "视频介绍: https://youtu.be/vLL-eb3Z_TY" 5 | echo "------------------------------------------------" 6 | echo "您需要配置tg机器人API和接收预警的用户ID,即可实现本机CPU,内存,硬盘,流量,SSH登录的实时监控预警" 7 | echo "到达阈值后会向用户发预警消息" 8 | echo -e "${gl_hui}-关于流量,重启服务器将重新计算-${gl_bai}" 9 | read -e -p "确定继续吗?(Y/N): " choice 10 | 11 | case "$choice" in 12 | [Yy]) 13 | cd ~ 14 | install nano tmux bc jq 15 | check_crontab_installed 16 | if [ -f ~/TG-check-notify.sh ]; then 17 | chmod +x ~/TG-check-notify.sh 18 | nano ~/TG-check-notify.sh 19 | else 20 | curl -sS -O https://raw.gitmirror.com/eslco/base/main/script/linux/TG-check-notify.sh 21 | chmod +x ~/TG-check-notify.sh 22 | nano ~/TG-check-notify.sh 23 | fi 24 | tmux kill-session -t TG-check-notify > /dev/null 2>&1 25 | tmux new -d -s TG-check-notify "~/TG-check-notify.sh" 26 | crontab -l | grep -v '~/TG-check-notify.sh' | crontab - > /dev/null 2>&1 27 | (crontab -l ; echo "@reboot tmux new -d -s TG-check-notify '~/TG-check-notify.sh'") | crontab - > /dev/null 2>&1 28 | 29 | curl -sS -O https://raw.gitmirror.com/eslco/base/main/script/linux/TG-SSH-check-notify.sh > /dev/null 2>&1 30 | sed -i "3i$(grep '^TELEGRAM_BOT_TOKEN=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh > /dev/null 2>&1 31 | sed -i "4i$(grep '^CHAT_ID=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh 32 | chmod +x ~/TG-SSH-check-notify.sh 33 | 34 | # 添加到 ~/.profile 文件中 35 | if ! grep -q 'bash ~/TG-SSH-check-notify.sh' ~/.profile > /dev/null 2>&1; then 36 | echo 'bash ~/TG-SSH-check-notify.sh' >> ~/.profile 37 | if command -v dnf &>/dev/null || command -v yum &>/dev/null; then 38 | echo 'source ~/.profile' >> ~/.bashrc 39 | fi 40 | fi 41 | 42 | source ~/.profile 43 | 44 | clear 45 | echo "TG-bot预警系统已启动" 46 | echo -e "${gl_hui}你还可以将root目录中的TG-check-notify.sh预警文件放到其他机器上直接使用!${gl_bai}" 47 | ;; 48 | [Nn]) 49 | echo "已取消" 50 | ;; 51 | *) 52 | echo "无效的选择,请输入 Y 或 N。" 53 | ;; 54 | esac 55 | ;; -------------------------------------------------------------------------------- /source/MISC/ytimg_format.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | YouTube 縮圖生成器 7 | 48 | 49 | 50 |

YouTube 縮圖生成器

51 |
52 | 53 | 54 | 55 |
56 |
57 | 58 | -------------------------------------------------------------------------------- /source/Maasea/README.md: -------------------------------------------------------------------------------- 1 | # :bulb: Import from the Author below 2 | 3 | Credit: [__@Massea/sgmodule__](https://github.com/Maasea/sgmodule) 4 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Alidns.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=阿里 DNS 2 | #!desc=适配阿里 DoH JSON API 3 | #!arguments=阿里DNS:223.5.5.5,请求域名:*,请求类型:1,Device ID:IOS,Account ID,AccessKey ID,AccessKey Secret 4 | #!arguments-desc=相关参数说明查阅 阿里云DoH JSON API 文档 5 | 6 | 7 | [Host] 8 | {{{请求域名}}}= script:Alidns 9 | 10 | [Script] 11 | Alidns = type=dns,engine=jsc,script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Tools/alidns.js,argument="{"HOST":"{{{阿里DNS}}}","UID":"{{{Account ID}}}","ID":"{{{AccessKey ID}}}","SECRET":"{{{AccessKey Secret}}}","DID":"{{{Device ID}}}","TYPE":"{{{请求类型}}}"}" 12 | 13 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/KeepAds.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=去除 keep 广告 2 | #!desc=可能需要重新安装Keep 3 | 4 | [Rule] 5 | DOMAIN,httpdns.calorietech.com,REJECT,extended-matching 6 | 7 | [URL Rewrite] 8 | ^https:\/\/api\.gotokeep\.com\/op-engine-webapp\/v1\/ad _ reject 9 | ^https:\/\/api\.gotokeep\.com\/anno\/v1\/upgrade\/check$ _ reject 10 | ^https?:\/\/api.gotokeep.com/cauchy/growth/init _ reject 11 | ^https:\/\/api\.gotokeep\.com\/training\/box\/config _ reject 12 | ^https:\/\/api\.gotokeep\.com\/op-engine-webapp\/tool\/v1\/jump\/popup$ - reject 13 | # 动态相册 14 | ^https:\/\/api\.gotokeep\.com\/athena\/v1\/people\/my\/entry _ reject 15 | 16 | [Script] 17 | K-My = type=http-response,pattern=https:\/\/api\.gotokeep\.com\/athena\/v\d\/people\/my,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/surgeModule/master/Script/Keep/my.js 18 | K-Basic = type=http-response,pattern=https:\/\/api\.gotokeep\.com\/config\/v3/basic,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/surgeModule/master/Script/Keep/basic.js 19 | K-Ad = type= http-response,pattern=https:\/\/kad\.gotokeep\.com\/op-engine-webapp\/v1\/ad,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/surgeModule/master/Script/Keep/kad.js 20 | K-Course = type=http-response,pattern=^https?:\/\/api\.gotokeep\.com\/athena\/v7\/people\/course\/(practiced|general),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Maasea/surgeModule/master/Script/Keep/course.js 21 | 22 | [MITM] 23 | hostname = %APPEND% api.gotokeep.com, kad.gotokeep.com 24 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/README.md: -------------------------------------------------------------------------------- 1 | # Module for Surge 2 | 3 | 脚本基于 Surge 测试,其他客户端的兼容性不做保证。 4 | 5 | ## 目录 6 | 7 | - [YouTube Enhance](#youtube-enhance) 8 | - [Bilibili Helper](#bilibili-helper) 9 | - [Aliyun DoH JSON API](#Aliyun-DoH-JSON-API) 10 | - [Keep](#keep) 11 | 12 | ## 可用模块 13 | 14 | ### [YouTube Enhance](./YouTube.Enhance.sgmodule?raw=true) 15 | 16 | - 删除 YouTube(Music)广告 17 | - 删除 YouTube 底部 上传 按钮 & YouTube Music 底部选段、升级按钮 18 | - 增加 YouTube 画中画(PIP) 19 | - 增加 YouTube 字幕翻译 (Thanks @VirgilClyne) 20 | - 增加 YouTube (Music) 后台播放 21 | - 增加 YouTube Music 歌词翻译 22 | 23 | [一键安装](https://intradeus.github.io/http-protocol-redirector?r=surge:///install-module?url=https%3A%2F%2Fraw.githubusercontent.com%2FMaasea%2Fsgmodule%2Fmaster%2FYouTube.Enhance.sgmodule) 24 | 25 | ### [Bilibili Helper](./Bilibili.Helper.sgmodule?raw=true) 26 | 27 | - 去除交互式弹幕 28 | - 去除针对未成年人的弹窗消息 29 | - 去除广告 30 | - 阻止 P2P 连接 31 | 32 | [一键安装](https://intradeus.github.io/http-protocol-redirector?r=surge:///install-module?url=https%3A%2F%2Fraw.githubusercontent.com%2FMaasea%2Fsgmodule%2Fmaster%2FBilibili.Helper.sgmodule) 33 | 34 | ### [Aliyun DoH JSON API](./Alidns.sgmodule?raw=true) 35 | 36 | - 适配阿里DoH JSON API鉴权接口 37 | 38 | [一键安装](https://intradeus.github.io/http-protocol-redirector?r=surge:///install-module?url=https%3A%2F%2Fraw.githubusercontent.com%2FMaasea%2Fsgmodule%2Fmaster%2FAlidns.sgmodule) 39 | 40 | > 考虑到频繁调用JS带来的性能消耗,提供另一种使用快捷指令动态更新鉴权DNS的方式,加密算法来源[官方文档](https://help.aliyun.com/zh/dns/adguard-home-how-to-set-up-alibaba-public-dns-server)。 41 | 42 | **使用前务必查看快捷指令中的注释** 43 | 44 | [快捷指令-更新鉴权DNS](https://www.icloud.com/shortcuts/d94224c9df9f4e7ebe7ef2124f5e0180) 45 | 46 | ### [Keep](./KeepAds.sgmodule?raw=true) 47 | 48 | - 去除应用内广告 49 | - 简化底部导航栏 50 | > 可能需要重新安装APP 51 | 52 | [一键安装](https://intradeus.github.io/http-protocol-redirector?r=surge:///install-module?url=https%3A%2F%2Fraw.githubusercontent.com%2FMaasea%2Fsgmodule%2Fmaster%2FKeepAds.sgmodule) 53 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/SRSS.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=SRSS 2 | #!desc=将X用户/列表转换成RSS订阅 3 | 4 | [General] 5 | # 需要使用浏览器登录x以获取账户信息 6 | # 订阅用户:http://s.rss/x/user/@elonmusk 7 | # 订阅列表:http://s.rss/x/list/ 8 | 9 | [Script] 10 | SRSS.account = type=http-request,pattern=^https?:\/\/api\.x\.com\/1\.1\/account\/settings\.json,requires-body=0,script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/SRSS/dist/srss.js 11 | SRSS.handler = type=http-request,pattern=^http:\/\/s.rss\/x\/.*,requires-body=0,script-path=https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/SRSS/dist/srss.js 12 | 13 | [MITM] 14 | hostname = %APPEND% api.x.com -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/README.md: -------------------------------------------------------------------------------- 1 | # Bilibili Helper 2 | 3 | ## 1 install 4 | 5 | ``` 6 | npm install 7 | ``` 8 | 9 | ## 2 build 10 | 11 | **Build new Bilibili.js** 12 | 13 | ``` 14 | npm run build 15 | ``` 16 | 17 | **Generate new js from proto** 18 | 19 | ``` 20 | npm run build:proto 21 | ``` 22 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/build.js: -------------------------------------------------------------------------------- 1 | import * as esbuild from "esbuild"; 2 | 3 | const now = new Date().toLocaleString(); 4 | 5 | esbuild.buildSync({ 6 | entryPoints: ["main.js"], 7 | bundle: true, 8 | minify: true, 9 | banner: { js: `// Build: ${now}` }, 10 | inject: ["./lib/time-polyfill.js", "./lib/text-polyfill.js"], 11 | sourcemap: false, 12 | outfile: "/dist/bilibili.helper.beta.js", 13 | }); 14 | 15 | esbuild.buildSync({ 16 | entryPoints: ["jsonMain.js"], 17 | bundle: true, 18 | minify: true, 19 | banner: { js: `// Build: ${now}` }, 20 | inject: ["./lib/time-polyfill.js"], 21 | sourcemap: false, 22 | outfile: "/dist/bilibili.helper.v2.beta.js", 23 | }); 24 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/jsonMain.js: -------------------------------------------------------------------------------- 1 | import { handleSearch, handleIndex, handleSplash } from "./src/jsonHandler.js"; 2 | try{ 3 | const url = $request.url; 4 | let body = $response.body; 5 | if (!body) $done({}); 6 | 7 | body = JSON.parse(body); 8 | 9 | const routeHandlers = { 10 | search: handleSearch, 11 | "feed/index": handleIndex, 12 | splash: handleSplash, 13 | }; 14 | 15 | for (let route in routeHandlers) { 16 | if (url.includes(route)) { 17 | routeHandlers[route](body); 18 | break; 19 | } 20 | } 21 | }catch(e){ 22 | console.log(e.toString()) 23 | }finally{ 24 | $done({}); 25 | } 26 | 27 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/decode-grpc.js: -------------------------------------------------------------------------------- 1 | import * as fs from "fs"; 2 | import * as zlib from "zlib"; 3 | import { spawnSync } from "child_process"; 4 | 5 | const fileName = "91E8D557-9DF7-4A9A-A29A-032B7C35F362"; 6 | const path = "D:/Mfiles/"; 7 | const output = fileName; 8 | const grpcResponse = fs.readFileSync(path + fileName); 9 | 10 | const header = grpcResponse.subarray(0, 5); 11 | // let data = grpcResponse.subarray(5); 12 | let data = grpcResponse 13 | 14 | // if (header[0]) { 15 | // data = zlib.gunzipSync(data); 16 | // } 17 | 18 | let isProto = true 19 | let protoc 20 | if (isProto) { 21 | const messageType = "youtube.response.watch.Watch" 22 | const protobuf = `watch.proto` 23 | protoc = spawnSync("protoc", [`--decode=${messageType}`, `--proto_path=${path}`, protobuf], { 24 | input: data, 25 | encoding: "utf8", 26 | }) 27 | } else { 28 | protoc = spawnSync("protoc", ["--decode_raw"], { 29 | input: data, 30 | encoding: "utf8", 31 | }); 32 | } 33 | 34 | if (protoc.stderr) { 35 | console.error(`执行命令时出错:${protoc.stderr}`); 36 | } else { 37 | const decodeStr = protoc.stdout.replace(/(\\\d{3})+/g, Octal2Chinese); 38 | fs.writeFileSync(`${path}${output}.bin`, decodeStr); 39 | } 40 | 41 | function Octal2Chinese(str) { 42 | const splits = str.split("\\"); 43 | let encoded = ""; 44 | 45 | splits.forEach( 46 | (code) => !code || (encoded += "%" + parseInt(code, 8).toString(16)) 47 | ); 48 | 49 | try { 50 | return decodeURI(encoded); 51 | } catch (e) { 52 | console.error(e.toString(), str); 53 | return str; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/protos/mainReply.d.ts: -------------------------------------------------------------------------------- 1 | // @generated by protobuf-ts 2.9.0 with parameter output_javascript_es2019 2 | // @generated from protobuf file "protos/mainReply.proto" (syntax proto3) 3 | // tslint:disable 4 | import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; 5 | import type { IBinaryWriter } from "@protobuf-ts/runtime"; 6 | import type { BinaryReadOptions } from "@protobuf-ts/runtime"; 7 | import type { IBinaryReader } from "@protobuf-ts/runtime"; 8 | import type { PartialMessage } from "@protobuf-ts/runtime"; 9 | import { MessageType } from "@protobuf-ts/runtime"; 10 | import { CM } from "./view"; 11 | /** 12 | * 主评论列表-响应 13 | * 14 | * @generated from protobuf message MainListReply 15 | */ 16 | export interface MainListReply { 17 | /** 18 | * 广告 19 | * 20 | * @generated from protobuf field: CM cm = 11; 21 | */ 22 | cm?: CM; 23 | } 24 | declare class MainListReply$Type extends MessageType { 25 | constructor(); 26 | create(value?: PartialMessage): MainListReply; 27 | internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: MainListReply): MainListReply; 28 | internalBinaryWrite(message: MainListReply, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; 29 | } 30 | /** 31 | * @generated MessageType for protobuf message MainListReply 32 | */ 33 | export declare const MainListReply: MainListReply$Type; 34 | export {}; 35 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/protos/mainReply.js: -------------------------------------------------------------------------------- 1 | // @generated by protobuf-ts 2.9.0 with parameter output_javascript_es2019 2 | // @generated from protobuf file "protos/mainReply.proto" (syntax proto3) 3 | // tslint:disable 4 | import { WireType } from "@protobuf-ts/runtime"; 5 | import { UnknownFieldHandler } from "@protobuf-ts/runtime"; 6 | import { reflectionMergePartial } from "@protobuf-ts/runtime"; 7 | import { MESSAGE_TYPE } from "@protobuf-ts/runtime"; 8 | import { MessageType } from "@protobuf-ts/runtime"; 9 | import { CM } from "./view"; 10 | // @generated message type with reflection information, may provide speed optimized methods 11 | class MainListReply$Type extends MessageType { 12 | constructor() { 13 | super("MainListReply", [ 14 | { no: 11, name: "cm", kind: "message", T: () => CM } 15 | ]); 16 | } 17 | create(value) { 18 | const message = {}; 19 | globalThis.Object.defineProperty(message, MESSAGE_TYPE, { enumerable: false, value: this }); 20 | if (value !== undefined) 21 | reflectionMergePartial(this, message, value); 22 | return message; 23 | } 24 | internalBinaryRead(reader, length, options, target) { 25 | let message = target !== null && target !== void 0 ? target : this.create(), end = reader.pos + length; 26 | while (reader.pos < end) { 27 | let [fieldNo, wireType] = reader.tag(); 28 | switch (fieldNo) { 29 | case /* CM cm */ 11: 30 | message.cm = CM.internalBinaryRead(reader, reader.uint32(), options, message.cm); 31 | break; 32 | default: 33 | let u = options.readUnknownField; 34 | if (u === "throw") 35 | throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); 36 | let d = reader.skip(wireType); 37 | if (u !== false) 38 | (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); 39 | } 40 | } 41 | return message; 42 | } 43 | internalBinaryWrite(message, writer, options) { 44 | /* CM cm = 11; */ 45 | if (message.cm) 46 | CM.internalBinaryWrite(message.cm, writer.tag(11, WireType.LengthDelimited).fork(), options).join(); 47 | let u = options.writeUnknownFields; 48 | if (u !== false) 49 | (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); 50 | return writer; 51 | } 52 | } 53 | /** 54 | * @generated MessageType for protobuf message MainListReply 55 | */ 56 | export const MainListReply = new MainListReply$Type(); 57 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/protos/searchAll.d.ts: -------------------------------------------------------------------------------- 1 | // @generated by protobuf-ts 2.9.0 with parameter output_javascript_es2019 2 | // @generated from protobuf file "protos/searchAll.proto" (syntax proto3) 3 | // tslint:disable 4 | import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; 5 | import type { IBinaryWriter } from "@protobuf-ts/runtime"; 6 | import type { BinaryReadOptions } from "@protobuf-ts/runtime"; 7 | import type { IBinaryReader } from "@protobuf-ts/runtime"; 8 | import type { PartialMessage } from "@protobuf-ts/runtime"; 9 | import { MessageType } from "@protobuf-ts/runtime"; 10 | /** 11 | * @generated from protobuf message Item 12 | */ 13 | export interface Item { 14 | /** 15 | * @generated from protobuf field: string linktype = 4; 16 | */ 17 | linktype: string; 18 | } 19 | /** 20 | * @generated from protobuf message SearchAll 21 | */ 22 | export interface SearchAll { 23 | /** 24 | * @generated from protobuf field: repeated Item items = 4; 25 | */ 26 | items: Item[]; 27 | } 28 | declare class Item$Type extends MessageType { 29 | constructor(); 30 | create(value?: PartialMessage): Item; 31 | internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Item): Item; 32 | internalBinaryWrite(message: Item, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; 33 | } 34 | /** 35 | * @generated MessageType for protobuf message Item 36 | */ 37 | export declare const Item: Item$Type; 38 | declare class SearchAll$Type extends MessageType { 39 | constructor(); 40 | create(value?: PartialMessage): SearchAll; 41 | internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SearchAll): SearchAll; 42 | internalBinaryWrite(message: SearchAll, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; 43 | } 44 | /** 45 | * @generated MessageType for protobuf message SearchAll 46 | */ 47 | export declare const SearchAll: SearchAll$Type; 48 | export {}; 49 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/protos/viewProgress.d.ts: -------------------------------------------------------------------------------- 1 | // @generated by protobuf-ts 2.9.0 with parameter output_javascript_es2019 2 | // @generated from protobuf file "protos/viewProgress.proto" (syntax proto3) 3 | // tslint:disable 4 | import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; 5 | import type { IBinaryWriter } from "@protobuf-ts/runtime"; 6 | import type { BinaryReadOptions } from "@protobuf-ts/runtime"; 7 | import type { IBinaryReader } from "@protobuf-ts/runtime"; 8 | import type { PartialMessage } from "@protobuf-ts/runtime"; 9 | import { MessageType } from "@protobuf-ts/runtime"; 10 | import { CommandDm } from "./dmView"; 11 | /** 12 | * @generated from protobuf message ViewProgress 13 | */ 14 | export interface ViewProgress { 15 | /** 16 | * @generated from protobuf field: DM dm = 1; 17 | */ 18 | dm?: DM; 19 | } 20 | /** 21 | * @generated from protobuf message DM 22 | */ 23 | export interface DM { 24 | /** 25 | * @generated from protobuf field: repeated CommandDm commandDms = 2; 26 | */ 27 | commandDms: CommandDm[]; 28 | } 29 | declare class ViewProgress$Type extends MessageType { 30 | constructor(); 31 | create(value?: PartialMessage): ViewProgress; 32 | internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ViewProgress): ViewProgress; 33 | internalBinaryWrite(message: ViewProgress, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; 34 | } 35 | /** 36 | * @generated MessageType for protobuf message ViewProgress 37 | */ 38 | export declare const ViewProgress: ViewProgress$Type; 39 | declare class DM$Type extends MessageType { 40 | constructor(); 41 | create(value?: PartialMessage): DM; 42 | internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DM): DM; 43 | internalBinaryWrite(message: DM, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; 44 | } 45 | /** 46 | * @generated MessageType for protobuf message DM 47 | */ 48 | export declare const DM: DM$Type; 49 | export {}; 50 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/time-polyfill.js: -------------------------------------------------------------------------------- 1 | console.time = function (label) { 2 | this._times = this._times || {}; 3 | this._times[label] = Date.now(); 4 | }; 5 | 6 | console.timeEnd = function (label) { 7 | if (this._times && this._times[label]) { 8 | let timeElapsed = Date.now() - this._times[label]; 9 | console.log(`${label}: ${timeElapsed}ms`); 10 | delete this._times[label]; 11 | } else { 12 | console.log(`Timer with label ${label} does not exist.`); 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/lib/urls.js: -------------------------------------------------------------------------------- 1 | // modified https://github.com/DualSubs/URL/blob/main/URLs.embedded.js 2 | const URLRegex = 3 | /(?.+):\/\/(?[^/]+)\/?(?[^?]+)?\??(?.*)?/; 4 | 5 | export default class URLs { 6 | constructor(url = "") { 7 | this.name = "URL v1.0.2"; 8 | if (!url) throw new Error("Empty URL"); 9 | this.parse(url); 10 | } 11 | 12 | parse(url) { 13 | const { 14 | scheme, 15 | host, 16 | path = "", 17 | params, 18 | } = url.match(URLRegex)?.groups ?? {}; 19 | 20 | this.scheme = scheme; 21 | this.host = host; 22 | this.path = path; 23 | this.params = params 24 | ? params.split("&").reduce((result, pair) => { 25 | const [key, value] = pair.split("="); 26 | result[key] = value; 27 | return result; 28 | }, {}) 29 | : {}; 30 | } 31 | 32 | toString() { 33 | let url = this.scheme + "://" + this.host + "/" + this.path; 34 | 35 | if (this.params) { 36 | url += 37 | "?" + 38 | Object.entries(this.params).reduce((result, [key, value], index) => { 39 | return result + (index ? "&" : "") + key + "=" + value; 40 | }, ""); 41 | } 42 | 43 | return url; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/main.js: -------------------------------------------------------------------------------- 1 | import { gunzipSync } from "fflate"; 2 | import { 3 | handleDMView, 4 | handleModeStatus, 5 | handleV1View, 6 | handleReplyList, 7 | handleSearchAll, 8 | handleDynAll, 9 | handleViewProgress, 10 | handleViewUnite, 11 | } from "./src/handler.js"; 12 | import URLs from "./lib/urls.js"; 13 | import Client from "./lib/client.js"; 14 | 15 | const $ = Client.getInstance("Bilibili Helper", { debug: false }); 16 | 17 | const url = $.request.url; 18 | const body = $.response.bodyBytes; 19 | if (!body) { 20 | $.exit(); 21 | } 22 | const path = new URLs(url).path; 23 | const decompress = 24 | typeof $utils === "object" && typeof $utils?.ungzip === "function" 25 | ? $utils.ungzip 26 | : gunzipSync; 27 | const grpcHeader = body.slice(0, 5); 28 | let grpcBody = body.slice(5); 29 | 30 | if (grpcHeader[0]) { 31 | grpcBody = decompress(grpcBody); 32 | } 33 | 34 | const routeHandlers = { 35 | "v1.DM/DmView": handleDMView, 36 | "v1.Teenagers/ModeStatus": handleModeStatus, 37 | "v1.Reply/MainList": handleReplyList, 38 | "v1.Search/SearchAll": handleSearchAll, 39 | "v2.Dynamic/DynAll": handleDynAll, 40 | "viewunite.v1.View/View": handleViewUnite, 41 | "view.v1.View/ViewProgress": handleViewProgress, 42 | "view.v1.View/View": handleV1View, 43 | }; 44 | 45 | for (let route in routeHandlers) { 46 | if (path.endsWith(route)) { 47 | routeHandlers[route](grpcBody); 48 | break; 49 | } 50 | } 51 | 52 | $.exit(); 53 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bilibili-helper", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "main.js", 6 | "type": "module", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "build:proto": "protoc --proto_path=. ./protos/*.proto --ts_out=lib --ts_opt=output_javascript_es2019", 10 | "build": "node build.js" 11 | }, 12 | "author": "Maasea", 13 | "license": "MIT", 14 | "dependencies": { 15 | "@protobuf-ts/plugin": "^2.9.0", 16 | "esbuild": "^0.17.19", 17 | "fflate": "^0.8.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/dmView.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | message CommandDm { 4 | int64 id = 1; //弹幕dmid 5 | int64 oid = 2; //视频cid 6 | int64 mid = 3; //发送者mid 7 | string command = 4; //弹幕指令 8 | string content = 5; //弹幕文字 9 | int32 progress = 6; //弹幕出现时间 10 | string ctime = 7; // 11 | string mtime = 8; // 12 | string extra = 9; //弹幕负载数据 13 | string idStr = 10; //弹幕dmid(字串形式) 14 | } 15 | 16 | message DmView { 17 | repeated CommandDm commandDms = 1; 18 | } 19 | 20 | message DmViewReply { 21 | DmView dmView = 22; 22 | } 23 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/dynAll.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | enum DynamicType { 4 | dyn_none = 0; // 占位 5 | forward = 1; // 转发 6 | av = 2; // 稿件: ugc、小视频、短视频、UGC转PGC 7 | pgc = 3; // pgc:番剧、PGC番剧、PGC电影、PGC电视剧、PGC国创、PGC纪录片 8 | courses = 4; // 付费更新批次 9 | fold = 5; // 折叠 10 | word = 6; // 纯文字 11 | draw = 7; // 图文 12 | article = 8; // 专栏 原仅phone端 13 | music = 9; // 音频 原仅phone端 14 | common_square = 10; // 通用卡 方形 15 | common_vertical = 11; // 通用卡 竖形 16 | live = 12; // 直播卡 只有转发态 17 | medialist = 13; // 播单 原仅phone端 只有转发态 18 | courses_season = 14; // 付费更新批次 只有转发态 19 | ad = 15; // 广告卡 20 | applet = 16; // 小程序卡 21 | subscription = 17; // 订阅卡 22 | live_rcmd = 18; // 直播推荐卡 23 | banner = 19; // 通栏 24 | ugc_season = 20; // 合集卡 25 | subscription_new = 21; // 新订阅卡 26 | story = 22; // 27 | topic_rcmd = 23; // 28 | } 29 | 30 | message DynamicItem { 31 | // 动态卡片类型 32 | DynamicType card_type = 1; 33 | // 转发类型下,源卡片类型 34 | DynamicType item_type = 2; 35 | // 该卡片下面是否含有折叠卡 36 | int32 has_fold = 5; 37 | // 透传到客户端的埋点字段。 38 | string server_info = 6; 39 | } 40 | 41 | message DynamicList { 42 | // 动态列表 43 | repeated DynamicItem list = 1; 44 | // 更新的动态数 45 | int64 update_num = 2; 46 | // 历史偏移 47 | string history_offset = 3; 48 | // 更新基础信息 49 | string update_baseline = 4; 50 | // 是否还有更多数据 51 | bool has_more = 5; 52 | } 53 | 54 | message TopicList { 55 | // 模块标题 56 | string title = 1; 57 | } 58 | // 动态综合页-响应 59 | message DynAllReply { 60 | // 卡片列表 61 | DynamicList dynamic_list = 1; 62 | // 话题广场 63 | TopicList topic_list = 3; 64 | } 65 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/mainReply.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "protos/view.proto"; 4 | 5 | // 主评论列表-响应 6 | message MainListReply { 7 | // 广告 8 | CM cm = 11; 9 | } 10 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/modeStatus.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | message ModeStatus { 4 | repeated Mode modes = 1; 5 | } 6 | 7 | message Mode { 8 | int32 id = 1; 9 | string name = 2; 10 | int32 f4 = 4; 11 | F5 f5 = 5; 12 | } 13 | 14 | message F5 { 15 | int32 f1 = 1; 16 | } 17 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/playerUnite.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | // 按钮组件 3 | message Button { 4 | // 按钮文本 5 | string text = 1; 6 | // 按钮跳转链接 7 | string link = 2; 8 | // 埋点上报相关 9 | map report_params = 3; 10 | } 11 | 12 | // Toast信息 13 | message Toast { 14 | // toast文案 15 | string text = 1; 16 | // toast按钮 17 | Button button = 2; 18 | } 19 | 20 | message QnTrialInfo { 21 | // 能否试看高画质 22 | bool trial_able = 1; 23 | // 24 | int32 remaining_times = 2; 25 | // 26 | int32 start = 3; 27 | // 28 | int32 time_length = 4; 29 | // 30 | Toast start_toast = 5; 31 | // 32 | Toast end_toast = 6; 33 | // 34 | Button quality_open_tip_btn = 8; 35 | } 36 | 37 | message PlayerUnite{ 38 | QnTrialInfo qn_trial_info = 7; 39 | } 40 | 41 | 42 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/playerUrl.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | message PlayView { 4 | PlayURLReply playURL = 1; 5 | } 6 | 7 | // 视频地址-回复 8 | message PlayURLReply { 9 | // 清晰的 10 | uint32 quality = 1; 11 | // 格式 12 | string format = 2; 13 | // 总时长(单位为ms) 14 | uint64 timelength = 3; 15 | // 编码id 16 | uint32 video_codecid = 4; 17 | // dash视频流 18 | repeated Stream videos = 5; 19 | // dash伴音流 20 | repeated DashItem audios = 6; 21 | } 22 | 23 | // dash条目 24 | message DashItem { 25 | // 清晰度 26 | uint32 id = 1; 27 | // 主线流 28 | string baseURL = 2; 29 | // 备用流 30 | repeated string backup_url = 3; 31 | // 带宽 32 | uint32 bandwidth = 4; 33 | // 编码id 34 | uint32 codecid = 5; 35 | // md5 36 | string md5 = 6; 37 | // 大小 38 | uint64 size = 7; 39 | // 帧率 40 | string frame_rate = 8; 41 | // 42 | string widevine_pssh = 9; 43 | } 44 | 45 | // 视频流 46 | message Stream { 47 | // 元数据 48 | StreamInfo stream_info = 1; 49 | DashVideo dash_video = 2; 50 | } 51 | 52 | // 流媒体元数据 53 | message StreamInfo { 54 | // 清晰度 55 | uint32 quality = 1; 56 | // 格式 57 | string format = 2; 58 | // 格式描述 59 | string description = 3; 60 | // 错误码 61 | PlayErr err_code = 4; 62 | // 不满足条件信息 63 | StreamLimit limit = 5; 64 | // 是否需要vip 65 | bool need_vip = 6; 66 | // 是否需要登录 67 | bool need_login = 7; 68 | // 是否完整 69 | bool intact = 8; 70 | // 是否非全二压 71 | bool no_rexcode = 9; 72 | // 清晰度属性位 73 | int64 attribute = 10; 74 | // 新版格式描述 75 | string new_description = 11; 76 | // 格式文字 77 | string display_desc = 12; 78 | // 新版格式描述备注 79 | string superscript = 13; 80 | } 81 | 82 | // dash视频流 83 | message DashVideo { 84 | // 主线流 85 | string baseURL = 1; 86 | // 备用流 87 | repeated string backup_url = 2; 88 | // 带宽 89 | uint32 bandwidth = 3; 90 | // 编码id 91 | uint32 codecid = 4; 92 | // md5 93 | string md5 = 5; 94 | // 大小 95 | uint64 size = 6; 96 | // 伴音质量id 97 | uint32 audioId = 7; 98 | // 是否非全二压 99 | bool no_rexcode = 8; 100 | // 码率 101 | string frame_rate = 9; 102 | // 宽度 103 | int32 width = 10; 104 | // 高度 105 | int32 height = 11; 106 | // 107 | string widevine_pssh = 12; 108 | } 109 | 110 | // 清晰度不满足条件信息 111 | message StreamLimit { 112 | // 标题 113 | string title = 1; 114 | // 跳转地址 115 | string uri = 2; 116 | // 提示信息 117 | string msg = 3; 118 | } 119 | 120 | // 错误码 121 | enum PlayErr { 122 | NoErr = 0; // 123 | WithMultiDeviceLoginErr = 1; // 管控类型的错误码 124 | } 125 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/searchAll.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | message Item { 4 | string linktype = 4; 5 | } 6 | 7 | message SearchAll { 8 | 9 | repeated Item items = 4; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/view.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "google/protobuf/any.proto"; 4 | 5 | // 广告 6 | message CM { 7 | // 广告数据(需解包) 8 | google.protobuf.Any source_content = 1; 9 | } 10 | 11 | // 广告配置 12 | message CMConfig { 13 | // 广告配置数据(需要二次解包) 14 | google.protobuf.Any ads_control = 1; 15 | } 16 | 17 | // 18 | message CmIpad { 19 | // 20 | CM cm = 1; 21 | // 22 | int64 duration = 4; 23 | // 24 | int64 aid = 5; 25 | } 26 | 27 | // 相关推荐项 28 | //message Relate {string uri = 9;} 29 | 30 | // 视频页信息-响应 31 | message ViewReply { 32 | // repeated Relate relates = 10; 33 | // 广告 34 | repeated CM cms = 30; 35 | // 广告配置 36 | CMConfig cm_config = 31; 37 | // 播放页定制tab 38 | CmIpad cm_ipad = 41; 39 | } 40 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/viewProgress.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | import "protos/dmView.proto"; 4 | 5 | message ViewProgress{ 6 | DM dm = 1; 7 | } 8 | 9 | message DM{ 10 | repeated CommandDm commandDms = 2; 11 | } 12 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/protos/viewUnite.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package viewunite.v1; 4 | 5 | import "google/protobuf/any.proto"; 6 | 7 | enum TabType { 8 | // 9 | TAB_NONE = 0; 10 | // 详情 Tab 11 | TAB_INTRODUCTION = 1; 12 | // 评论区 Tab 13 | TAB_REPLY = 2; 14 | // OGV 活动信息 Tab 15 | TAB_OGV_ACTIVITY = 3; 16 | } 17 | 18 | enum ModuleType { 19 | // 20 | UNKNOWN = 0; 21 | // 22 | OGV_INTRODUCTION = 1; 23 | // 24 | OGV_TITLE = 2; 25 | // 26 | UGC_HEADLINE = 3; 27 | // 28 | UGC_INTRODUCTION = 4; 29 | // 30 | KING_POSITION = 5; 31 | // 32 | MASTER_USER_LIST = 6; 33 | // 34 | STAFFS = 7; 35 | // 36 | HONOR = 8; 37 | // 38 | OWNER = 9; 39 | // 40 | PAGE = 10; 41 | // 42 | ACTIVITY_RESERVE = 11; 43 | // 44 | LIVE_ORDER = 12; 45 | // 46 | POSITIVE = 13; 47 | // 48 | SECTION = 14; 49 | // 50 | RELATE = 15; 51 | // 52 | PUGV = 16; 53 | // 54 | COLLECTION_CARD = 17; 55 | // 56 | ACTIVITY = 18; 57 | // 58 | CHARACTER = 19; 59 | // 60 | FOLLOW_LAYER = 20; 61 | // 62 | OGV_SEASONS = 21; 63 | // 64 | UGC_SEASON = 22; 65 | // 66 | OGV_LIVE_RESERVE = 23; 67 | // 68 | COMBINATION_EPISODE = 24; 69 | // 70 | SPONSOR = 25; 71 | // 72 | ACTIVITY_ENTRANCE = 26; 73 | // 74 | THEATRE_HOT_TOPIC = 27; 75 | // 76 | RELATED_RECOMMEND = 28; 77 | // 78 | PAY_BAR = 29; 79 | // 80 | BANNER = 30; 81 | // 82 | AUDIO = 31; 83 | // 84 | AGG_CARD = 32; 85 | // 86 | SINGLE_EP = 33; 87 | // 88 | LIKE_COMMENT = 34; 89 | // 90 | ATTENTION_RECOMMEND = 35; 91 | // 92 | COVENANTER = 36; 93 | } 94 | 95 | enum RelateCardType { 96 | // 97 | CARD_TYPE_UNKNOWN = 0; 98 | // 99 | AV = 1; 100 | // 101 | BANGUMI = 2; 102 | // 103 | RESOURCE = 3; 104 | // 105 | GAME = 4; 106 | // 107 | CM_TYPE = 5; 108 | // 109 | LIVE = 6; 110 | // 111 | AI_RECOMMEND = 7; 112 | // 113 | BANGUMI_AV = 8; 114 | // 115 | BANGUMI_UGC = 9; 116 | // 117 | SPECIAL = 10; 118 | } 119 | 120 | message RelateCard { 121 | RelateCardType relate_card_type = 1; 122 | } 123 | message Relates { repeated RelateCard cards = 1; } 124 | 125 | message CommonModule { 126 | ModuleType type = 1; 127 | oneof data { Relates relates = 22; } 128 | } 129 | 130 | message IntroductionTab { 131 | string title = 1; 132 | repeated CommonModule modules = 2; 133 | } 134 | 135 | message TabModule { 136 | TabType tab_type = 1; 137 | oneof tab { IntroductionTab introduction = 2; } 138 | } 139 | 140 | message Tab { repeated TabModule tab_module = 1; } 141 | 142 | message CM { 143 | google.protobuf.Any cm_under_player = 1; 144 | google.protobuf.Any ads_control = 2; 145 | repeated google.protobuf.Any source_content = 3; 146 | } 147 | 148 | message ViewUniteReply { 149 | Tab tab = 5; 150 | CM cm = 7; 151 | } 152 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/src/jsonHandler.js: -------------------------------------------------------------------------------- 1 | import { stringifyBody } from "./utils.js"; 2 | 3 | export function handleSearch(body) { 4 | body.data.item = body.data.item.filter( 5 | (item) => !item.linktype.endsWith("_ad") 6 | ); 7 | stringifyBody(body); 8 | } 9 | 10 | export function handleSplash(body) { 11 | const item = ["account", "event_list", "preload", "show"]; 12 | const staticValues = { 13 | max_time: 0, 14 | min_interval: 31536000, 15 | pull_interval: 31536000, 16 | }; 17 | const staticListValues = { 18 | duration: 0, 19 | enable_pre_download: false, 20 | end_time: 2209046399, 21 | begin_time: 2208960000, 22 | }; 23 | 24 | if (body.data) { 25 | item.forEach((i) => delete body.data[i]); 26 | 27 | Object.entries(staticValues).forEach(([key, value]) => { 28 | if (body.data[key]) body.data[key] = value; 29 | }); 30 | 31 | if (body.data.list) { 32 | for (let i of body.data.list) { 33 | Object.assign(i, staticListValues); 34 | } 35 | } 36 | } 37 | stringifyBody(body); 38 | } 39 | 40 | export function handleIndex(body) { 41 | body.data.items = body.data.items.filter( 42 | (item) => !/banner|cm/.test(item.card_type) 43 | ); 44 | 45 | stringifyBody(body); 46 | } 47 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/src/utils.js: -------------------------------------------------------------------------------- 1 | import Client from "../lib/client.js"; 2 | const originRegex = /^(http|https):\/\/[^/]*/; 3 | const $ = Client.getInstance("Bilibili Helper", { debug: false }); 4 | // Refer to BiliUniverse/ADBlock 5 | export function newRawBody(body) { 6 | const checksum = Checksum(body.length); 7 | const rawBody = new Uint8Array(5 + body.length); 8 | 9 | rawBody[0] = 0; // 直接置protobuf 为未压缩状态 10 | rawBody.set(checksum, 1); // 1-4位: 校验值(4位) 11 | rawBody.set(body, 5); // 5-end位:protobuf数据 12 | return rawBody; 13 | } 14 | 15 | function Checksum(num) { 16 | let arr = new ArrayBuffer(4); // an Int32 takes 4 bytes 17 | let view = new DataView(arr); 18 | view.setUint32(0, num, false); // byteOffset = 0; litteEndian = false 19 | return new Uint8Array(arr); 20 | } 21 | 22 | export const defaultCDN = { 23 | protocol: "http", 24 | hostname: "upos-sz-mirrorali.bilivideo.com", 25 | port: 80, 26 | active: false, 27 | needWrite: true, 28 | }; 29 | 30 | export function getCDNHost() { 31 | const { protocol, hostname, port, active, needWrite } = getCDN(); 32 | const replaceHost = `${protocol}://${hostname}:${port}`; 33 | 34 | if (needWrite) { 35 | setDefaultCDN(); 36 | } 37 | 38 | return active ? replaceHost : null; 39 | } 40 | 41 | export function getCDN() { 42 | const bilibiliCDN = $persistentStore.read("Bilibili-CDN"); 43 | return bilibiliCDN ? JSON.parse(bilibiliCDN) : defaultCDN; 44 | } 45 | 46 | export function setDefaultCDN() { 47 | delete defaultCDN.needWrite; 48 | $persistentStore.write(JSON.stringify(defaultCDN), "Bilibili-CDN"); 49 | } 50 | 51 | export function replaceViewBaseUrl(items, replaceHost) { 52 | for (const item of items) { 53 | const baseUrl = item.base_url; 54 | // change CDN 55 | item.base_url = baseUrl.replace(originRegex, replaceHost); 56 | } 57 | } 58 | 59 | export function replacePlayBaseURL(items, replaceHost) { 60 | for (let item of items) { 61 | const info = item.baseURL ? item : item.dashVideo; 62 | 63 | if (info) { 64 | const baseURL = info.baseURL; 65 | info.baseURL = baseURL.replace(originRegex, replaceHost); 66 | } 67 | } 68 | console.log(`CDN replace -> ${replaceHost}`); 69 | } 70 | 71 | export function modifyBody(IMessage, message) { 72 | const binaryBody = IMessage.toBinary(message); 73 | $.done({ bodyBytes: newRawBody(binaryBody) }); 74 | } 75 | 76 | export function stringifyBody (body) { 77 | $done({ body: JSON.stringify(body) }) 78 | } 79 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/types/builtIn.d.ts: -------------------------------------------------------------------------------- 1 | declare interface BRequest { 2 | url: string 3 | method: string 4 | headers: Record 5 | body?: T 6 | } 7 | 8 | declare interface BResponse { 9 | status: number 10 | headers: Record 11 | body?: T 12 | } 13 | 14 | declare interface BDone { 15 | status?: S 16 | headers?: Record 17 | body?: T 18 | } 19 | 20 | declare interface FetchRequest { 21 | url: string 22 | method: string 23 | headers?: Record 24 | body?: string 25 | bodyBytes?: T 26 | } 27 | 28 | declare interface FetchResponse { 29 | status: number 30 | headers: Record 31 | body?: string 32 | bodyBytes?: T 33 | } 34 | 35 | // $.request 36 | declare interface CRequest extends BRequest { 37 | id?: string 38 | bodyBytes?: Uint8Array 39 | } 40 | 41 | // $.response 42 | declare interface CResponse extends BResponse { 43 | id: string 44 | bodyBytes?: Uint8Array 45 | } 46 | 47 | // $.done 48 | declare interface CDone extends BDone { 49 | bodyBytes?: Uint8Array 50 | isResponse?: boolean 51 | } 52 | 53 | declare interface CFetchRequest extends FetchRequest { 54 | id?: string 55 | } 56 | 57 | declare interface CFetchResponse extends FetchResponse { 58 | id?: string 59 | } 60 | 61 | declare interface ConversionRule { 62 | key: keyof T 63 | newKey?: keyof T 64 | convert: (value: any) => any 65 | } 66 | 67 | // declare type ClientType = CRequest | CResponse | CFetchRequest | CFetchResponse | CDone 68 | // 69 | // declare type QuanXType = QxRequest | QxResponse | QxFetchRequest | QxFetchResponse | QxDone 70 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/types/global.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | SgEnvironment, 3 | SgRequest, 4 | SgResponse, 5 | SgDone, 6 | HttpClient, 7 | Notification, 8 | PersistentStore, 9 | Utils 10 | } from "./surge" 11 | import {QxEnvironment, QxRequest, QxResponse, QxDone, NotifyOption, Prefs, Task} from "./quantumultX"; 12 | 13 | declare global { 14 | const $environment: SgEnvironment | QxEnvironment 15 | const $request: SgRequest | QxRequest 16 | const $response: SgResponse | QxResponse 17 | const $done: (options?: SgDone | QxDone) => void 18 | const $utils: Utils 19 | const $loon: any 20 | const $rocket: any 21 | const $persistentStore: PersistentStore 22 | const $httpClient: HttpClient 23 | const $notification: Notification 24 | const $notify: (title: string, subtitle: string, message: string, option?: NotifyOption) => void 25 | const $prefs: Prefs 26 | const $task: Task 27 | } 28 | 29 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Bilibili/types/quantumultX.d.ts: -------------------------------------------------------------------------------- 1 | import "./builtIn" 2 | 3 | // $request 4 | declare interface QxRequest extends BRequest { 5 | bodyBytes?: ArrayBuffer 6 | sessionIndex?: string 7 | } 8 | 9 | // $response 10 | declare interface QxResponse extends Omit, 'status'> { 11 | statusCode: number 12 | bodyBytes?: ArrayBuffer 13 | sessionIndex?: string 14 | } 15 | 16 | declare interface QxFetchRequest extends FetchRequest { 17 | sessionIndex?: string 18 | } 19 | 20 | declare interface QxFetchResponse extends Omit, 'status'> { 21 | statusCode: number 22 | sessionIndex?: string 23 | } 24 | 25 | declare interface QxDone extends BDone { 26 | bodyBytes?: ArrayBuffer 27 | } 28 | 29 | declare interface QxEnvironment { 30 | version: string 31 | } 32 | 33 | declare interface Prefs { 34 | valueForKey: (key: string) => string | null 35 | setValueForKey: (value: string, key: string) => void 36 | removeValueForKey: (key: string) => void 37 | removeAllValues: () => void 38 | } 39 | 40 | declare interface Task { 41 | fetch: ( 42 | options: QxFetchRequest, 43 | ) => Promise 44 | } 45 | 46 | declare interface NotifyOption { 47 | 'open-url': string 48 | } 49 | 50 | // declare namespace QuanX { 51 | // const $request: QxRequest 52 | // const $response: QxResponse 53 | // const $notify: (title: string, subtitle: string, message: string, option?: NotifyOption) => void 54 | // const $prefs: Prefs 55 | // const $task: Task 56 | // const $done: (done: QxDone) => void 57 | // } 58 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Keep/basic.js: -------------------------------------------------------------------------------- 1 | const blackList = ["home", "entry", "mall"]; 2 | let obj = JSON.parse($response.body); 3 | 4 | obj.data.generalConfigs["AD.link.download.source"] = false; 5 | // 设置默认开启页面 6 | obj.data.bottomBarControl.defaultTab = "new_sports"; 7 | 8 | obj.data.bottomBarControl.tabs = obj.data.bottomBarControl.tabs.filter( 9 | (tab) => !blackList.includes(tab.tabType) 10 | ); 11 | 12 | $done({ body: JSON.stringify(obj) }); 13 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Keep/course.js: -------------------------------------------------------------------------------- 1 | let obj = JSON.parse($response.body); 2 | const courseList = obj.data.courseList; 3 | 4 | for (const course of courseList) { 5 | delete course.upgradeCourse; 6 | } 7 | 8 | $done({ body: JSON.stringify(obj) }); 9 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Keep/kad.js: -------------------------------------------------------------------------------- 1 | let obj = JSON.parse($response.body); 2 | 3 | delete obj.data.creative; 4 | obj.data.hasAd = 0; 5 | 6 | $done({ body: JSON.stringify(obj) }); 7 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Keep/my.js: -------------------------------------------------------------------------------- 1 | let obj = JSON.parse($response.body); 2 | obj.data.floatingInfo = {}; 3 | $done({ body: JSON.stringify(obj) }); 4 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/build.js: -------------------------------------------------------------------------------- 1 | import {buildSync} from "esbuild"; 2 | 3 | const now = new Date().toLocaleString(); 4 | 5 | buildSync({ 6 | entryPoints: ["index.js"], 7 | bundle: true, 8 | minify: true, 9 | banner: {js: `// Build: ${now}`}, 10 | // inject: ["./lib/textPolyfill.js"], // Insert the code at the top of the output file 11 | sourcemap: false, 12 | target: "es2020", 13 | outfile: "./dist/srss.js", 14 | }); 15 | 16 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/index.js: -------------------------------------------------------------------------------- 1 | import $ from "./lib/env.js" 2 | import {queryTweetsTimeline, queryUserTweets} from "./src/x.js"; 3 | import {generateRss} from "./src/rssUtil.js"; 4 | import {exit, finish, getHeaderIgnoreCase} from "./src/httpUtil.js"; 5 | 6 | const url = $.request.url 7 | if (url.startsWith("https://api.x.com/1.1/account/settings.json")) { 8 | const headers = $.request.headers 9 | const auth = getHeaderIgnoreCase(headers, "authorization") 10 | const refreshToken = getHeaderIgnoreCase(headers, "x-csrf-token") 11 | const cookie = getHeaderIgnoreCase(headers, "cookie") 12 | const account = {auth, refreshToken, cookie} 13 | $.setJSON(account, "S-RSS-ACCOUNT") 14 | $.msg("S-RSS", "X账户信息获取成功") 15 | $.exit() 16 | } else if (url.startsWith("http://s.rss/x/user/")) { 17 | const path = url.split("/") 18 | const screenName = path[path.length - 1] 19 | if (!screenName.startsWith("@")) { 20 | exit("RSS链接错误", "参考模板http://s.rss/x/user/@username") 21 | } 22 | const username = screenName.substring(1) 23 | queryUserTweets(username).then((resp) => { 24 | const rss = generateRss(username, `https://x.com/${username}`, `http://s.rss/x/user/${username}`, resp) 25 | finish(rss) 26 | }).catch(e => { 27 | console.log(e) 28 | }).finally(() => { 29 | exit() 30 | }) 31 | } else if (url.startsWith("http://s.rss/x/list/")) { 32 | const path = url.split("/") 33 | const listName = path[path.length - 1] 34 | queryTweetsTimeline(listName).then((resp) => { 35 | const rss = generateRss(listName, `https://x.com/home`, `http://s.rss/x/list/${listName}`, resp) 36 | finish(rss) 37 | }).catch(e => { 38 | console.log(e) 39 | }).finally(() => { 40 | exit() 41 | }) 42 | } else { 43 | exit() 44 | } -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "exclude": ["node_modules", "dist"] 3 | } 4 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/lib/env.js: -------------------------------------------------------------------------------- 1 | import Client from "./client.js"; 2 | 3 | 4 | export default $ = Client.getInstance("X-Rss", {debug: false}); -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/lib/textPolyfill.js: -------------------------------------------------------------------------------- 1 | // https://github.com/anonyco/FastestSmallestTextEncoderDecoder 2 | 'use strict';(function(r){function x(){}function y(){}var z=String.fromCharCode,v={}.toString,A=v.call(r.SharedArrayBuffer),B=v(),q=r.Uint8Array,t=q||Array,w=q?ArrayBuffer:t,C=w.isView||function(g){return g&&"length"in g},D=v.call(w.prototype);w=y.prototype;var E=r.TextEncoder,a=new (q?Uint16Array:t)(32);x.prototype.decode=function(g){if(!C(g)){var l=v.call(g);if(l!==D&&l!==A&&l!==B)throw TypeError("Failed to execute 'decode' on 'TextDecoder': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'"); 3 | g=q?new t(g):g||[]}for(var f=l="",b=0,c=g.length|0,u=c-32|0,e,d,h=0,p=0,m,k=0,n=-1;b>4){case 15:m=g[b=b+1|0]&255;if(2!==m>>6||247>6?p+4|0:24,d=d+256&768;case 13:case 12:m=g[b=b+1|0]&255,h<<=6,h|=(d&31)<<6|m&63,p=p+7|0,b>6&&h>>p&&1114112>h?(d=h,h=h-65536|0,0<=h&&(n=(h>>10)+55296|0,d=(h&1023)+56320|0,31>k?(a[k]=n,k=k+1|0,n=-1): 4 | (m=n,n=d,d=m))):(d>>=8,b=b-d-1|0,d=65533),h=p=0,e=b<=u?32:c-b|0;default:a[k]=d;continue;case 11:case 10:case 9:case 8:}a[k]=65533}f+=z(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15],a[16],a[17],a[18],a[19],a[20],a[21],a[22],a[23],a[24],a[25],a[26],a[27],a[28],a[29],a[30],a[31]);32>k&&(f=f.slice(0,k-32|0));if(b>>31,n=-1,f.length=e)f[c]=e;else{if(2047>=e)f[c]=192|e>>6;else{a:{if(55296<=e)if(56319>=e){var d=g.charCodeAt(b=b+1|0)|0;if(56320<=d&&57343>=d){e=(e<<10)+d-56613888|0;if(65535>18;f[c=c+1|0]=128|e>>12&63;f[c=c+1|0]=128|e>>6&63;f[c=c+1|0]=128|e&63;continue}break a}e=65533}else 57343>=e&&(e=65533);!u&&b<<1>12;f[c=c+1|0]=128|e>>6&63}f[c=c+1|0]=128|e&63}}return q? 6 | f.subarray(0,c):f.slice(0,c)};E||(r.TextDecoder=x,r.TextEncoder=y)})(globalThis); 7 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/lib/urls.js: -------------------------------------------------------------------------------- 1 | // modified https://github.com/DualSubs/URL/blob/main/URLs.embedded.js 2 | const URLRegex = 3 | /(?.+):\/\/(?[^/]+)\/?(?[^?]+)?\??(?.*)?/; 4 | 5 | export default class URLs { 6 | constructor (url = "") { 7 | this.name = "URL v1.0.2"; 8 | if (!url) throw new Error("Empty URL"); 9 | this.parse(url); 10 | } 11 | 12 | parse (url) { 13 | const { 14 | scheme, 15 | host, 16 | path = "", 17 | params, 18 | } = url.match(URLRegex)?.groups ?? {}; 19 | 20 | this.scheme = scheme; 21 | this.host = host; 22 | this.path = path; 23 | this.params = params 24 | ? params.split("&").reduce((result, pair) => { 25 | const [key, value] = pair.split("="); 26 | result[key] = value; 27 | return result; 28 | }, {}) 29 | : {}; 30 | } 31 | 32 | toString () { 33 | let url = this.scheme + "://" + this.host + "/" + this.path; 34 | 35 | if (this.params) { 36 | url += 37 | "?" + 38 | Object.entries(this.params).reduce((result, [key, value], index) => { 39 | return result + (index ? "&" : "") + key + "=" + value; 40 | }, ""); 41 | } 42 | 43 | return url; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SRSS", 3 | "version": "1.0.0", 4 | "description": "A module to convert x to RSS", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "build": "node build.js" 10 | }, 11 | "author": "Maasea", 12 | "license": "ISC", 13 | "dependencies": { 14 | "esbuild": "^0.17.19" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/script/decodeProtobuf.js: -------------------------------------------------------------------------------- 1 | import { spawnSync } from "child_process"; 2 | import fs from "fs"; 3 | import zlib from "zlib"; 4 | 5 | const fileName = "path to your file"; 6 | const output = `${fileName}.bin`; 7 | 8 | // Content-Type is grpc or protobuf 9 | const isGRPC = false; 10 | 11 | // read file 12 | const fileData = fs.readFileSync(fileName); 13 | const header = fileData.subarray(0, 5); 14 | let data = isGRPC ? fileData.subarray(5) : fileData; 15 | 16 | // decompress gzip 17 | if (isGRPC && header[0]) { 18 | data = zlib.gunzipSync(data); 19 | } 20 | 21 | // use protoc cli to decode protobuf to text 22 | const text = decodeBinary(data, false); 23 | 24 | if (text) { 25 | fs.writeFileSync(output, text); 26 | } 27 | 28 | function decodeBinary (data, toCN = false) { 29 | const protoc = spawnSync("protoc", ["--decode_raw"], { 30 | input: data, encoding: "utf8", 31 | }); 32 | 33 | if (protoc.stderr) { 34 | console.error(`ERROR:${protoc.stderr}`); 35 | return ""; 36 | } 37 | 38 | return toCN 39 | ? protoc.stdout.replace(/(\\\d{3})+/g, Octal2Chinese) 40 | : protoc.stdout; 41 | } 42 | 43 | function Octal2Chinese (str) { 44 | const splits = str.split("\\"); 45 | let encoded = ""; 46 | 47 | splits.forEach( 48 | (code) => !code || (encoded += "%" + parseInt(code, 8).toString(16))); 49 | 50 | try { 51 | return decodeURI(encoded); 52 | } catch (e) { 53 | console.error(`[SkIP] ${e.toString()} ${str}`); 54 | return str; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/src/x.js: -------------------------------------------------------------------------------- 1 | import $ from '../lib/env.js' 2 | import {sendRequest, parseProfileResponse, parsePinnedTimeResponse, parseTweetResponse, exit} from './httpUtil.js' 3 | import {API} from "./constant.js"; 4 | 5 | export async function queryUserId(username) { 6 | const rssCache = $.getJSON("S-RSS", {users: {}, list: {}}) 7 | let userId = rssCache.users[username] 8 | if (!userId) { 9 | const api = API.ProfileSpotlightsQuery 10 | api.variables.screen_name = username 11 | const respBody = await sendRequest(api.url, api.variables) 12 | userId = parseProfileResponse(respBody) 13 | if (!userId) { 14 | exit(`未找到用户:${username}`) 15 | } 16 | rssCache.users[username] = userId 17 | $.setJSON(rssCache, "S-RSS") 18 | } 19 | return userId 20 | } 21 | 22 | export async function queryListId(listName) { 23 | const rssCache = $.getJSON("S-RSS", {users: {}, list: {}}) 24 | let listId = rssCache.list[listName] 25 | if (!listId) { 26 | const api = API.PinnedTimelines 27 | const respBody = await sendRequest(api.url, null, api.features) 28 | listId = parsePinnedTimeResponse(respBody, listName) 29 | if (!listId) { 30 | exit(`该账户信息未找到列表:${listName}`) 31 | } 32 | rssCache.list[listName] = listId 33 | $.setJSON(rssCache, "S-RSS",) 34 | } 35 | return listId 36 | } 37 | 38 | export async function queryUserTweets(username) { 39 | const userId = await queryUserId(username) 40 | $.log(userId) 41 | const api = API.UserTweets 42 | api.variables.userId = userId 43 | const respBody = await sendRequest(api.url, api.variables, api.features) 44 | return parseTweetResponse(respBody.data.user.result.timeline_v2.timeline.instructions) 45 | } 46 | 47 | export async function queryTweetsTimeline(listName) { 48 | const listId = await queryListId(listName) 49 | const api = API.ListLatestTweetsTimeline 50 | api.variables.listId = listId 51 | const respBody = await sendRequest(api.url, api.variables, api.features) 52 | return parseTweetResponse(respBody.data.list.tweets_timeline.timeline.instructions) 53 | } 54 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/SRSS/types/env.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | HttpClient, Notification, NotifyOption, 3 | PersistentStore, Prefs, 4 | QxDone, 5 | QxEnvironment, 6 | QxRequest, 7 | QxResponse, 8 | SgDone, 9 | SgEnvironment, 10 | SgRequest, 11 | SgResponse, Task 12 | } from "./type"; 13 | 14 | declare global { 15 | const $environment: SgEnvironment | QxEnvironment 16 | const $request: SgRequest | QxRequest 17 | const $response: SgResponse | QxResponse 18 | const $done: (options?: SgDone | QxDone) => void 19 | const $loon: any 20 | const $rocket: any 21 | const $persistentStore: PersistentStore 22 | const $httpClient: HttpClient 23 | const $notification: Notification 24 | const $notify: (title: string, subtitle: string, message: string, option?: NotifyOption) => void 25 | const $prefs: Prefs 26 | const $task: Task 27 | const $argument: string | undefined 28 | } 29 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Tools/alidns.js: -------------------------------------------------------------------------------- 1 | async function dnsQuery() { 2 | try { 3 | const arguments = JSON.parse($argument); 4 | 5 | const HOST = arguments.HOST; 6 | const TYPE = arguments.TYPE; 7 | const UID = arguments.UID; 8 | const ID = arguments.ID; 9 | const SECRET = arguments.SECRET; 10 | const TS = parseInt(Date.now() / 1000); 11 | const DOMAIN = $domain; 12 | const DID = arguments.DID; 13 | const key = sha256(UID + SECRET + TS + DOMAIN + ID); 14 | 15 | const DNS_QUERY = `https://${HOST}/resolve?name=${DOMAIN}&uid=${UID}&ak=${ID}&key=${key}&ts=${TS}&short=1&did=${DID}&type=${TYPE}`; 16 | 17 | const resp = await get(DNS_QUERY); 18 | const addresses = JSON.parse(resp.body); 19 | 20 | if (addresses.code) { 21 | throw new Error(addresses.code); 22 | } 23 | 24 | $done({ addresses, ttl: 600 }); 25 | } catch (e) { 26 | console.log(e.message); 27 | } finally { 28 | $done({}); 29 | } 30 | } 31 | 32 | function get(url) { 33 | return new Promise((resolve, reject) => { 34 | $httpClient.get(url, (error, response, data) => { 35 | if (error) reject(error); 36 | else resolve({ header: response, body: data }); 37 | }); 38 | }); 39 | } 40 | 41 | // https://altv.stuyk.com/docs/articles/snippets/sha-256.html 42 | function sha256(r){function o(r,o){return r>>>o|r<<32-o}for(var f,a=Math.pow,t=a(2,32),h="length",n="",c=[],e=8*r[h],i=sha256.h=sha256.h||[],s=sha256.k=sha256.k||[],u=s[h],v={},l=2;u<64;l++)if(!v[l]){for(d=0;d<313;d+=l)v[d]=l;i[u]=a(l,.5)*t|0,s[u++]=a(l,1/3)*t|0}for(r+="€";r[h]%64-56;)r+="\0";for(d=0;d>8)return;c[d>>2]|=f<<(3-d)%4*8}for(c[c[h]]=e/t|0,c[c[h]]=e,f=0;f>>3)+g[d-7]+(o(w,17)^o(w,19)^w>>>10)|0))+((o(A,2)^o(A,13)^o(A,22))+(A&i[1]^A&i[2]^i[1]&i[2]))|0].concat(i))[4]=i[4]+w|0}for(d=0;d<8;d++)i[d]=i[d]+k[d]|0}for(d=0;d<8;d++)for(f=3;f+1;f--){var M=i[d]>>8*f&255;n+=(M<16?0:"")+M.toString(16)}return n} 43 | 44 | dnsQuery(); 45 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/WeChat/wechat.json: -------------------------------------------------------------------------------- 1 | { 2 | "advertisement_num": 0, 3 | "advertisement_info": [] 4 | } 5 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/WeRead/weread.js: -------------------------------------------------------------------------------- 1 | let url = $request.url; 2 | let resp = null; 3 | 4 | if (url.includes("book/readingstat")) { 5 | resp = { 6 | friendFinishReadingCount: 0, 7 | markedStatus: 1, 8 | friendReadingCount: 0, 9 | friendNotFollowingCount: 0, 10 | readingUsers: [], 11 | recommendUsers: [], 12 | isReading: 0, 13 | readingCount: 0, 14 | finishReadingCount: 0, 15 | todayReadingCount: 0, 16 | }; 17 | } else if (url.includes("book/readingStat")) { 18 | resp = { 19 | friendFinishReadingCount: 0, 20 | mixReadingUsers: [], 21 | friendReadingCount: 0, 22 | friendNotFollowingCount: 0, 23 | recommendUsers: [], 24 | isReading: 0, 25 | readingCount: 0, 26 | finishReadingCount: 0, 27 | todayReadingCount: 0, 28 | }; 29 | } else if (url.includes("book/chapterReview")) { 30 | resp = { synckey: 0, shareCount: 0 }; 31 | } else if (url.includes("groups/readerEntrance")) { 32 | resp = { synckey: parseInt(new Date().getTime() / 1000), hasGroup: 0 }; 33 | } else if (url.includes("review/list")) { 34 | resp = { 35 | refUsers: [], 36 | hasMore: 0, 37 | totalCount: 0, 38 | removed: [], 39 | columns: [], 40 | atUsers: [], 41 | reviews: [], 42 | }; 43 | } else if (url.includes("discoverfeed/new")) { 44 | resp = JSON.parse($response.body); 45 | resp.data = resp.data.filter((item) => item.type !== 2); 46 | } else if (url.includes("discoverfeed/get")) { 47 | resp = JSON.parse($response.body); 48 | if (Array.isArray(resp.removed)) { 49 | resp.removed.push("63", "dailybooklist"); 50 | resp.updated = 1; 51 | } 52 | if (Array.isArray(resp.updatedNewRawItemIds)) { 53 | resp.updatedNewRawItemIds = resp.updatedNewRawItemIds.filter( 54 | (item) => item === "26" 55 | ); 56 | } 57 | if (Array.isArray(resp.items)) { 58 | resp.items = resp.items.filter((item) => item.rawItemId === 26); 59 | } 60 | } else if (url.includes("user/profile")) { 61 | resp = JSON.parse($response.body); 62 | resp.showMedal = 0; 63 | resp.showReview = 0; 64 | resp.canExchangeDay = 0; 65 | resp.exchangeMsg = ""; 66 | } else if (url.includes("mobileSync")) { 67 | resp = JSON.parse($response.body); 68 | resp.discover = false; 69 | resp.discoverFeed = 0; 70 | resp.browseUpdate = 0; 71 | resp.notifCount = 0; 72 | resp.storyfeed = 0; 73 | resp.storyfeedUpdated = 0; 74 | resp.readingExchange = 0; 75 | resp.friendReviewUpdate = 0; 76 | } 77 | if (resp) $done({ body: JSON.stringify(resp) }); 78 | else $done({}); 79 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/.eslintignore: -------------------------------------------------------------------------------- 1 | *.js 2 | test/ 3 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "es2020": true 4 | }, 5 | "extends": "standard-with-typescript", 6 | "overrides": [], 7 | "parserOptions": { 8 | "ecmaVersion": "latest", 9 | "sourceType": "module", 10 | "project": [ 11 | "./tsconfig.json" 12 | ] 13 | }, 14 | "rules": { 15 | "@typescript-eslint/strict-boolean-expressions": "off" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/README.md: -------------------------------------------------------------------------------- 1 | # YouTube 去广告 2 | 3 | ## 1 install 4 | 5 | ``` 6 | npm install 7 | ``` 8 | 9 | ## 2 build 10 | 11 | **Build new YouTube.js** 12 | 13 | ``` 14 | npm run build 15 | ``` 16 | 17 | **Generate new youtube.ts from proto** 18 | 19 | ``` 20 | npm run build:proto 21 | ``` 22 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/buf.gen.yaml: -------------------------------------------------------------------------------- 1 | version: v1 2 | plugins: 3 | - plugin: es 4 | out: lib 5 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/build.mjs: -------------------------------------------------------------------------------- 1 | import * as esbuild from 'esbuild' 2 | 3 | const now = new Date().toLocaleString() 4 | const debug = false 5 | 6 | esbuild.buildSync({ 7 | entryPoints: ['index.ts'], 8 | bundle: true, 9 | minify: !debug, 10 | banner: { js: `// Build: ${now}` }, 11 | inject: ['./lib/text-polyfill.mjs'], 12 | sourcemap: false, 13 | outfile: './dist/youtube.response.preview.js', 14 | }) -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/index.ts: -------------------------------------------------------------------------------- 1 | import createMessage from './lib/factory' 2 | import { $ } from './lib/env' 3 | 4 | async function run (): Promise { 5 | const responseMsg = createMessage($.request.url) 6 | 7 | if (responseMsg) { 8 | const body = $.response.bodyBytes 9 | 10 | $.timeStart('fromBinary') 11 | responseMsg.fromBinary(body) 12 | $.timeEnd('fromBinary') 13 | 14 | $.timeStart('modify') 15 | await responseMsg.modify() 16 | $.timeEnd('modify') 17 | 18 | responseMsg.done() 19 | } else { 20 | $.msg('YouTube Enhance', '脚本需要更新', '外部资源 -> 全部更新') 21 | $.exit() 22 | } 23 | } 24 | 25 | run().catch(e => { 26 | $.log(e.toString()) 27 | }).finally(() => { 28 | $.exit() 29 | }) 30 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/env.ts: -------------------------------------------------------------------------------- 1 | import Client from './client' 2 | 3 | export const $ = Client.getInstance('YouTube') 4 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/factory.ts: -------------------------------------------------------------------------------- 1 | import { 2 | BrowseMessage, 3 | NextMessage, 4 | PlayerMessage, 5 | SearchMessage, 6 | ShortsMessage, 7 | GuideMessage, 8 | SettingMessage, 9 | WatchMessage 10 | } from '../src/response' 11 | import { YouTubeMessage } from '../src/youtube' 12 | 13 | const messages = new Map YouTubeMessage>([ 14 | ['browse', BrowseMessage], 15 | ['next', NextMessage], 16 | ['player', PlayerMessage], 17 | ['search', SearchMessage], 18 | ['reel_watch_sequence', ShortsMessage], 19 | ['guide', GuideMessage], 20 | ['get_setting', SettingMessage], 21 | ['get_watch', WatchMessage] 22 | ]) 23 | 24 | export default function createMessage (url: string): YouTubeMessage | null { 25 | for (const [path, MessageClass] of messages.entries()) { 26 | if (url.includes(path)) { 27 | return new MessageClass() 28 | } 29 | } 30 | return null 31 | } 32 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/googleTranslate.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable 2 | /* eslint-disable */ 3 | 4 | // https://github.com/windingwind/zotero-pdf-translate/blob/main/src/modules/services/google.ts 5 | function TL (a: any) { 6 | const b = 406644 7 | const b1 = 3293161072 8 | 9 | const jd = '.' 10 | const $b = '+-a^+6' 11 | const Zb = '+-3^+b+-f' 12 | 13 | let e, f, g 14 | 15 | for (e = [], f = 0, g = 0; g < a.length; g++) { 16 | let m = a.charCodeAt(g) 17 | 128 > m 18 | ? (e[f++] = m) 19 | : (2048 > m 20 | ? (e[f++] = (m >> 6) | 192) 21 | : (55296 == (m & 64512) && 22 | g + 1 < a.length && 23 | 56320 == (a.charCodeAt(g + 1) & 64512) 24 | ? ((m = 25 | 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023)), 26 | (e[f++] = (m >> 18) | 240), 27 | (e[f++] = ((m >> 12) & 63) | 128)) 28 | : (e[f++] = (m >> 12) | 224), 29 | (e[f++] = ((m >> 6) & 63) | 128)), 30 | (e[f++] = (m & 63) | 128)) 31 | } 32 | a = b 33 | for (f = 0; f < e.length; f++) (a += e[f]), (a = RL(a, $b)) 34 | a = RL(a, Zb) 35 | a ^= b1 || 0 36 | 0 > a && (a = (a & 2147483647) + 2147483648) 37 | a %= 1e6 38 | return a.toString() + jd + (a ^ b) 39 | } 40 | 41 | function RL (a: any, b: any) { 42 | const t = 'a' 43 | const Yb = '+' 44 | let d 45 | for (let c = 0; c < b.length - 2; c += 3) { 46 | (d = b.charAt(c + 2)), 47 | (d = d >= t ? d.charCodeAt(0) - 87 : Number(d)), 48 | (d = b.charAt(c + 1) == Yb ? a >>> d : a << d) 49 | a = b.charAt(c) == Yb ? (a + d) & 4294967295 : a ^ d 50 | } 51 | return a 52 | } 53 | 54 | export function translateURL (lyric, target): string { 55 | return `https://translate.google.com/translate_a/single?client=gtx&sl=auto&tl=${target}&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&source=bh&ssel=0&tsel=0&kc=1&tk=${TL(lyric)}&q=${encodeURIComponent(lyric)}` 56 | } 57 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/protobuf/component/context_pb.js: -------------------------------------------------------------------------------- 1 | // @generated by protoc-gen-es v1.7.2 2 | // @generated from file protobuf/component/context.proto (package youtube.component, syntax proto3) 3 | /* eslint-disable */ 4 | // @ts-nocheck 5 | 6 | import { proto3 } from "@bufbuild/protobuf"; 7 | 8 | /** 9 | * @generated from message youtube.component.ResponseContext 10 | */ 11 | export const ResponseContext = proto3.makeMessageType( 12 | "youtube.component.ResponseContext", 13 | () => [ 14 | { no: 6, name: "serviceTrackingParams", kind: "message", T: ServiceTrackingParam, repeated: true }, 15 | ], 16 | ); 17 | 18 | /** 19 | * @generated from message youtube.component.ServiceTrackingParam 20 | */ 21 | export const ServiceTrackingParam = proto3.makeMessageType( 22 | "youtube.component.ServiceTrackingParam", 23 | () => [ 24 | { no: 1, name: "service", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, 25 | { no: 2, name: "params", kind: "message", T: Param, repeated: true }, 26 | ], 27 | ); 28 | 29 | /** 30 | * @generated from message youtube.component.Param 31 | */ 32 | export const Param = proto3.makeMessageType( 33 | "youtube.component.Param", 34 | () => [ 35 | { no: 1, name: "key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, 36 | { no: 2, name: "value", kind: "scalar", T: 9 /* ScalarType.STRING */ }, 37 | ], 38 | ); 39 | 40 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/protobuf/component/framework_pb.js: -------------------------------------------------------------------------------- 1 | // @generated by protoc-gen-es v1.7.2 2 | // @generated from file protobuf/component/framework.proto (package youtube.component, syntax proto3) 3 | /* eslint-disable */ 4 | // @ts-nocheck 5 | 6 | import { proto3 } from "@bufbuild/protobuf"; 7 | 8 | /** 9 | * @generated from message youtube.component.FrameworkUpdateTransport 10 | */ 11 | export const FrameworkUpdateTransport = proto3.makeMessageType( 12 | "youtube.component.FrameworkUpdateTransport", 13 | () => [ 14 | { no: 1, name: "entityBatchUpdate", kind: "message", T: EntityBatchUpdate }, 15 | ], 16 | ); 17 | 18 | /** 19 | * @generated from message youtube.component.EntityBatchUpdate 20 | */ 21 | export const EntityBatchUpdate = proto3.makeMessageType( 22 | "youtube.component.EntityBatchUpdate", 23 | () => [ 24 | { no: 1, name: "mutations", kind: "message", T: Mutation, repeated: true }, 25 | ], 26 | ); 27 | 28 | /** 29 | * @generated from message youtube.component.Mutation 30 | */ 31 | export const Mutation = proto3.makeMessageType( 32 | "youtube.component.Mutation", 33 | () => [ 34 | { no: 1, name: "entityKey", kind: "scalar", T: 9 /* ScalarType.STRING */ }, 35 | { no: 2, name: "type", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, 36 | { no: 3, name: "payload", kind: "message", T: Payload }, 37 | ], 38 | ); 39 | 40 | /** 41 | * @generated from message youtube.component.Payload 42 | */ 43 | export const Payload = proto3.makeMessageType( 44 | "youtube.component.Payload", 45 | [], 46 | ); 47 | 48 | /** 49 | * @generated from message youtube.component.Entity 50 | */ 51 | export const Entity = proto3.makeMessageType( 52 | "youtube.component.Entity", 53 | () => [ 54 | { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, 55 | { no: 4, name: "targetNo", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, 56 | { no: 5, name: "type", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, 57 | ], 58 | ); 59 | 60 | -------------------------------------------------------------------------------- /source/Maasea/sgmodule-master/Script/Youtube/lib/protobuf/component/label_pb.d.ts: -------------------------------------------------------------------------------- 1 | // @generated by protoc-gen-es v1.7.2 2 | // @generated from file protobuf/component/label.proto (package youtube.component, syntax proto3) 3 | /* eslint-disable */ 4 | // @ts-nocheck 5 | 6 | import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; 7 | import { Message, proto3 } from "@bufbuild/protobuf"; 8 | 9 | /** 10 | * @generated from message youtube.component.Label 11 | */ 12 | export declare class Label extends Message