├── .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://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 |
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 |
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