├── .editorconfig ├── .env ├── .github └── workflows │ └── build.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── IconSet ├── Currency │ ├── bitcoin-color-icon.svg │ ├── euro-coin-color-icon.svg │ ├── indian-rupee-coin-color-icon.svg │ ├── pound-coin-color-icon.svg │ ├── russian-rouble-coin-color-icon.svg │ ├── south-korean-won-coin-color-icon.svg │ ├── turkish-lira-coin-color-icon.svg │ ├── us-dollar-coin-color-icon.svg │ ├── yen-coin-color-icon.svg │ └── yuan-coin-color-icon.svg ├── amazon-icon.svg ├── amazon-music-icon.svg ├── amazon-prime-icon.svg ├── apple-icon.svg ├── apple-music-icon.svg ├── bing-color-icon.svg ├── chatgpt-icon.svg ├── claude-ai-icon.svg ├── cloudflare-icon.svg ├── copilot-icon.svg ├── discord-color-icon.svg ├── discord-round-color-icon.svg ├── discord-square-color-icon.svg ├── download-cloud-color-icon.svg ├── dropbox-icon.svg ├── evernote-icon.svg ├── facebook-messenger-icon.svg ├── facebook-round-color-icon.svg ├── github-icon.svg ├── gitlab-icon.svg ├── gmail-icon.svg ├── google-color-icon.svg ├── google-drive-color-icon.svg ├── google-gemini-icon.svg ├── hulu-icon.svg ├── ig-instagram-icon.svg ├── line-icon.svg ├── linkedin-app-icon.svg ├── mastodon-icon.svg ├── mastodon-round-icon.svg ├── mastodon-square-icon.svg ├── microsoft-icon.svg ├── microsoft-outlook-icon.svg ├── netflix-icon.svg ├── office-365-icon.svg ├── onedrive-color-icon.svg ├── openai-icon.svg ├── pinterest-round-color-icon.svg ├── playstation-icon.svg ├── quora-icon.svg ├── reddit-icon.svg ├── reddit-square-color-icon.svg ├── skype-color-icon.svg ├── slack-icon.svg ├── snapchat-square-color-icon.svg ├── spotify-icon.svg ├── steam-icon.svg ├── telegram-icon.svg ├── telegram-white-icon.svg ├── tiktok-color-icon.svg ├── twitter-color-icon.svg ├── upload-cloud-color-icon.svg ├── vimeo-color-icon.svg ├── vimeo-round-color-icon.svg ├── vimeo-square-color-icon.svg ├── wa-whatsapp-icon.svg ├── wechat-app-icon.svg ├── whatsapp-color-icon.svg ├── x-social-media-black-icon.svg ├── x-social-media-logo-icon.svg ├── x-social-media-round-icon.svg ├── x-social-media-white-icon.svg ├── x-social-media-white-round-icon.svg ├── x-social-media-white-square-icon.svg ├── xbox-icon.svg └── youtube-color-icon.svg ├── LICENSE ├── Loon ├── loon.conf ├── preview.png └── readme.md ├── Mihomo ├── Mihomo-Party │ └── themes │ │ ├── gemini-color.css │ │ ├── gemini.css │ │ ├── kobe24.css │ │ ├── previews │ │ ├── gemini-dark.png │ │ └── gemini-light.png │ │ └── readme.md ├── clash_verge_rev.png ├── global_script.js ├── mihomo_party.png └── readme.md ├── Stash ├── preview.png ├── readme.md └── stash.yaml ├── jsconfig.json ├── package.json ├── pnpm-lock.yaml ├── press ├── .vitepress │ ├── components │ │ ├── Embed.vue │ │ ├── Embeds │ │ │ ├── AppStore.vue │ │ │ ├── Github.vue │ │ │ └── Link.vue │ │ └── Sites.vue │ ├── config.mts │ ├── icons │ │ └── gemini-32.svg │ ├── src │ │ └── sites.tsx │ └── theme │ │ ├── index.ts │ │ └── style.css ├── airports │ ├── components │ │ ├── Fliter.vue │ │ └── Item.vue │ ├── index.md │ └── src │ │ └── airports.ts ├── clients │ ├── clash-for-flutter.md │ ├── clash-nyanpasu.md │ ├── clash-verge-rev.md │ ├── clashtui.md │ ├── components │ │ └── Fliter.vue │ ├── egern.md │ ├── flclash.md │ ├── gui-for-cores.md │ ├── index.md │ ├── karing.md │ ├── loon.md │ ├── mihomo-party.md │ ├── nekoray.md │ ├── pandora-box.md │ ├── shadowrocket.md │ ├── src │ │ └── clients.ts │ ├── stash.md │ ├── surge.md │ └── v2rayn.md └── index.md ├── readme.md ├── shims-vue.d.ts ├── tools ├── rulesets.ts └── src │ ├── ruleset-convertor.ts │ └── ruleset-extrator.ts ├── tsconfig.json ├── uno.config.ts ├── vercel.json ├── vetur.config.js └── vite-env.d.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.js,*.json,*.yaml,*.vue] 8 | end_of_line = lf 9 | max_line_length = 80 10 | indent_size = 2 11 | indent_style = space 12 | 13 | [*.md] 14 | end_of_line = lf 15 | 16 | [*.conf] 17 | end_of_line = lf 18 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | VITE_GITHUB_CLIENT_ID= 2 | VITE_GITHUB_CLIENT_SECRET= 3 | VUE_APP_GOOGLE_ANALYTICS_ID= 4 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | on: 3 | schedule: 4 | - cron: '0 23 * * *' 5 | workflow_dispatch: 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | strategy: 11 | matrix: 12 | node-version: [20] 13 | 14 | steps: 15 | - name: Set variables 16 | run: | 17 | echo "BUILDTIME=$(TZ=Asia/Shanghai date +'%Y-%m-%d %H:%M')" >> $GITHUB_ENV 18 | - uses: actions/checkout@v4 19 | - name: Install pnpm 20 | uses: pnpm/action-setup@v4 21 | with: 22 | version: 9 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v4 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | cache: 'pnpm' 28 | - name: Install dependencies 29 | run: pnpm install 30 | - name: Build 31 | run: npx tsx ./tools/rulesets.ts 32 | - name: Git push dist to "dist" branch 33 | run: | 34 | cd dist || exit 1 35 | git init 36 | git config user.name 'github-actions[bot]' 37 | git config user.email 'github-actions[bot]@users.noreply.github.com' 38 | git checkout -b dist 39 | git add . 40 | git commit -m "Released on ${{ env.BUILDTIME }}" 41 | git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}" 42 | git push -f -u origin dist 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | press/.vitepress/cache 3 | press/.vitepress/dist 4 | .vitepress/cache 5 | .vitepress/dist 6 | .env 7 | stats.html 8 | /dist/rulesets/mihomo/*.list 9 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore artifacts: 2 | build 3 | coverage 4 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "printWidth": 80, 4 | "useTabs": false, 5 | "tabWidth": 2, 6 | "semi": false, 7 | "singleQuote": true, 8 | "endOfLine": "lf" 9 | } 10 | -------------------------------------------------------------------------------- /IconSet/Currency/bitcoin-color-icon.svg: -------------------------------------------------------------------------------- 1 | bitcoin-color -------------------------------------------------------------------------------- /IconSet/Currency/euro-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | euro-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/indian-rupee-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | indian-rupee-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/pound-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | pound-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/russian-rouble-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | russian-rouble-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/south-korean-won-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | south-korean-won-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/turkish-lira-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | turkish-lira-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/us-dollar-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | us-dollar-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/yen-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | yen-coin-color -------------------------------------------------------------------------------- /IconSet/Currency/yuan-coin-color-icon.svg: -------------------------------------------------------------------------------- 1 | yuan-coin-color -------------------------------------------------------------------------------- /IconSet/amazon-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/amazon-music-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/amazon-prime-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/apple-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/apple-music-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/bing-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/chatgpt-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/claude-ai-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/cloudflare-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/copilot-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/discord-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/discord-round-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/discord-square-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/download-cloud-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/dropbox-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/evernote-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/facebook-round-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/github-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/gitlab-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/gmail-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/google-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/google-drive-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/google-gemini-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/hulu-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/ig-instagram-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/line-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/linkedin-app-icon.svg: -------------------------------------------------------------------------------- 1 | linkedin-app -------------------------------------------------------------------------------- /IconSet/mastodon-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/mastodon-round-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/mastodon-square-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/microsoft-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /IconSet/microsoft-outlook-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/office-365-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/onedrive-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/openai-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/pinterest-round-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/playstation-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/quora-icon.svg: -------------------------------------------------------------------------------- 1 | quora -------------------------------------------------------------------------------- /IconSet/reddit-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/reddit-square-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/skype-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/slack-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/snapchat-square-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/spotify-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/steam-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/telegram-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/telegram-white-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/tiktok-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/twitter-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/upload-cloud-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/vimeo-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/vimeo-round-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/vimeo-square-color-icon.svg: -------------------------------------------------------------------------------- 1 | vimeo-square-color -------------------------------------------------------------------------------- /IconSet/wa-whatsapp-icon.svg: -------------------------------------------------------------------------------- 1 | wa -------------------------------------------------------------------------------- /IconSet/wechat-app-icon.svg: -------------------------------------------------------------------------------- 1 | wechat-app -------------------------------------------------------------------------------- /IconSet/whatsapp-color-icon.svg: -------------------------------------------------------------------------------- 1 | whatsapp-color -------------------------------------------------------------------------------- /IconSet/x-social-media-black-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/x-social-media-logo-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/x-social-media-round-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/x-social-media-white-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/x-social-media-white-round-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/x-social-media-white-square-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/xbox-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /IconSet/youtube-color-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2024, Dahaha 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /Loon/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Loon/preview.png -------------------------------------------------------------------------------- /Loon/readme.md: -------------------------------------------------------------------------------- 1 | # Loon 2 | 3 | ## 按应用区分策略组,节点按地区归类 4 | 5 | ![Loon配置演示](preview.png) 6 | 7 | [一键导入配置](https://fastly.jsdelivr.net/gh/dahaha-365/YaNet@main/Loon/loon.conf) 8 | 9 | ### 支持的应用规则 10 | 11 | * 国外AI:包括国外主流的AI服务 12 | * Apple:苹果非中国区服务 13 | * Google 14 | * Microsoft:微软非中国区服务 15 | * Telegram 16 | * 哔哩哔哩东南亚:bilibili.tv,新加坡区B站APP已解锁部分功能,可以流畅观看视频 17 | * 巴哈姆特 18 | * YouTube 19 | * NETFLIX 20 | * Disney+ 21 | * Tiktok 22 | * Spotify 23 | * 广告拦截:本规则可大幅减少APP开屏广告 24 | * 其他外网:非中国IP的网站 25 | * 国内网站 26 | 27 | ### 使用注意 28 | 29 | 1. 删除上述的策略组前记得先删除对应的规则 30 | 2. 配置文件里的rewrite如果和某些插件有冲突,可以删除 31 | 3. 导入新配置前记得先备份现有配置!!! 32 | -------------------------------------------------------------------------------- /Mihomo/Mihomo-Party/themes/kobe24.css: -------------------------------------------------------------------------------- 1 | /* Kobe24 */ 2 | 3 | :root { 4 | --kobe-color-purple: hsl(271, 56%, 33%); 5 | --kobe-color-purple-50: hsl(296, 41%, 93%); 6 | --kobe-color-purple-100: hsl(295, 42%, 83%); 7 | --kobe-color-purple-200: hsl(295, 42%, 72%); 8 | --kobe-color-purple-300: hsl(295, 41%, 61%); 9 | --kobe-color-purple-400: hsl(295, 41%, 53%); 10 | --kobe-color-purple-500: hsl(295, 48%, 46%); 11 | --kobe-color-purple-600: hsl(291, 49%, 44%); 12 | --kobe-color-purple-700: hsl(285, 51%, 40%); 13 | --kobe-color-purple-800: hsl(280, 53%, 38%); 14 | --kobe-color-purple-900: hsl(271, 56%, 33%); 15 | --kobe-color-glod: hsl(41, 98%, 57%); 16 | --kobe-color-glod-50: hsl(49, 93%, 94%); 17 | --kobe-color-glod-100: hsl(46, 97%, 86%); 18 | --kobe-color-glod-200: hsl(46, 98%, 77%); 19 | --kobe-color-glod-300: hsl(46, 99%, 68%); 20 | --kobe-color-glod-400: hsl(46, 98%, 61%); 21 | --kobe-color-glod-500: hsl(44, 99%, 59%); 22 | --kobe-color-glod-600: hsl(41, 98%, 57%); 23 | --kobe-color-glod-700: hsl(36, 97%, 56%); 24 | --kobe-color-glod-800: hsl(32, 97%, 56%); 25 | --kobe-color-glod-900: hsl(25, 96%, 54%); 26 | --nextui-background: 0 0% 0% !important; 27 | --nextui-foreground-50: 296 41% 93% !important; 28 | --nextui-foreground-100: 295 42% 83% !important; 29 | --nextui-foreground-200: 295 42% 72% !important; 30 | --nextui-foreground-300: 295 41% 61% !important; 31 | --nextui-foreground-400: 295 41% 53% !important; 32 | --nextui-foreground-500: 295 48% 46% !important; 33 | --nextui-foreground-600: 291 49% 44% !important; 34 | --nextui-foreground-700: 285 51% 40% !important; 35 | --nextui-foreground-800: 280 53% 38% !important; 36 | --nextui-foreground-900: 271 56% 33% !important; 37 | --nextui-foreground: 49 93% 94% !important; 38 | --nextui-default-50: 49 93% 94% !important; 39 | --nextui-default-100: 46 97% 86% !important; 40 | --nextui-default-200: 46 98% 77% !important; 41 | --nextui-default-300: 46 99% 68% !important; 42 | --nextui-default-400: 46 98% 61% !important; 43 | --nextui-default-500: 44 99% 59% !important; 44 | --nextui-default-600: 41 98% 57% !important; 45 | --nextui-default-700: 36 97% 56% !important; 46 | --nextui-default-800: 32 97% 56% !important; 47 | --nextui-default-900: 25 96% 54% !important; 48 | --nextui-default-foreground: 296 41% 93% !important; 49 | --nextui-default: 41 98% 57% !important; 50 | --nextui-primary-50: 49 93% 94% !important; 51 | --nextui-primary-100: 46 97% 86% !important; 52 | --nextui-primary-200: 46 98% 77% !important; 53 | --nextui-primary-300: 46 99% 68% !important; 54 | --nextui-primary-400: 46 98% 61% !important; 55 | --nextui-primary-500: 44 99% 59% !important; 56 | --nextui-primary-600: 41 98% 57% !important; 57 | --nextui-primary-700: 36 97% 56% !important; 58 | --nextui-primary-800: 32 97% 56% !important; 59 | --nextui-primary-900: 25 96% 54% !important; 60 | --nextui-primary-foreground: var(--nextui-foreground) !important; 61 | --nextui-primary: var(--nextui-primary-600) !important; 62 | --nextui-secondary-50: var(--nextui-default-50) !important; 63 | --nextui-secondary-100: var(--nextui-default-100) !important; 64 | --nextui-secondary-200: var(--nextui-default-200) !important; 65 | --nextui-secondary-300: var(--nextui-default-300) !important; 66 | --nextui-secondary-400: var(--nextui-default-400) !important; 67 | --nextui-secondary-500: var(--nextui-default-500) !important; 68 | --nextui-secondary-600: var(--nextui-default-600) !important; 69 | --nextui-secondary-700: var(--nextui-default-700) !important; 70 | --nextui-secondary-800: var(--nextui-default-800) !important; 71 | --nextui-secondary-900: var(--nextui-default-900) !important; 72 | --nextui-secondary-foreground: var(--nextui-secondary-50) !important; 73 | --nextui-secondary: var(--nextui-secondary-900) !important; 74 | } 75 | 76 | .font-bold { 77 | text-shadow: -1px 0 var(--kobe-color-glod-600), 78 | 0 1px var(--kobe-color-glod-600), 79 | 1px 0 var(--kobe-color-glod-600), 80 | 0 -1px var(--kobe-color-glod-600); 81 | color: var(--kobe-color-purple-900) !important; 82 | } -------------------------------------------------------------------------------- /Mihomo/Mihomo-Party/themes/previews/gemini-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Mihomo/Mihomo-Party/themes/previews/gemini-dark.png -------------------------------------------------------------------------------- /Mihomo/Mihomo-Party/themes/previews/gemini-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Mihomo/Mihomo-Party/themes/previews/gemini-light.png -------------------------------------------------------------------------------- /Mihomo/Mihomo-Party/themes/readme.md: -------------------------------------------------------------------------------- 1 | # Mihomo Party 主题 2 | 3 | ## gemini.css 4 | 5 | |Dark|Light| 6 | |---|---| 7 | | ![dfd](./previews/gemini-dark.png) | ![dfd](./previews/gemini-light.png)| 8 | -------------------------------------------------------------------------------- /Mihomo/clash_verge_rev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Mihomo/clash_verge_rev.png -------------------------------------------------------------------------------- /Mihomo/mihomo_party.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Mihomo/mihomo_party.png -------------------------------------------------------------------------------- /Mihomo/readme.md: -------------------------------------------------------------------------------- 1 | # Clash Verge Rev 全局脚本 懒人配置 / Mihomo Party 覆写脚本 2 | 3 | | Clash Verge Rev | Mihomo Party | 4 | | ----------------------------------------- | --------------------------------- | 5 | | ![Clash Verge Rev](./clash_verge_rev.png) | ![Mihomo Party](mihomo_party.png) | 6 | 7 | ## Mihomo Party 订阅链接 8 | 9 | 10 | 11 | - 本脚本包含 DNS 设置,在 Mihomo Party 里使用可以尝试在`应用设置`里关闭`接管DNS设置`和`接管域名嗅探设置` 12 | - **全局脚本和全局配置,用其中一种就可以了** 13 | - 初次使用请阅读脚本代码的前 100 行,对脚本的功能有个大概的理解 14 | 15 | ## Big Changelog 16 | 17 | - 2024-09-27:添加的功能控制开关,增加策略组和分流规则 18 | - 2024-09-24:未符合分类规则的节点全扔进其他节点策略组里 19 | - 2024-09-22:大更新,优化图标、策略组,提升易用性 20 | -------------------------------------------------------------------------------- /Stash/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dahaha-365/YaNet/3b9859ddc42c53a72b40662ef3cf40dbfe30f403/Stash/preview.png -------------------------------------------------------------------------------- /Stash/readme.md: -------------------------------------------------------------------------------- 1 | # Stash 2 | 3 | ## 按应用区分策略组,节点按地区归类 4 | 5 | ![Stash配置演示](preview.png) 6 | 7 | ### 支持的应用规则 8 | 9 | * OpenAI:包括国外主流的AI服务 10 | * Google 11 | * Apple:苹果非中国区服务 12 | * Telegram 13 | * Microsoft:微软非中国区服务 14 | * 哔哩东南亚:bilibili.tv 15 | * 巴哈姆特 16 | * YouTube 17 | * NETFLIX 18 | * Spotify 19 | * Disney+ 20 | * Tiktok 21 | * Steam 22 | * 国内网站 23 | * 其他外网:非中国IP的网站 24 | 25 | ### 使用注意 26 | 27 | 1. 上述的策略组只有分流作用,没有app解锁功能 28 | 2. 如果不需要某个策略组,需要先删除相关的远程规则集,再删除策略组 29 | 3. 地区策略组在不够理解配置文件格式的前提下,不建议修改 30 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | "@/*": ["src/*"] 9 | }, 10 | "lib": ["esnext", "dom", "dom.iterable", "scripthost"] 11 | }, 12 | "include": ["src/**/*.*", "press/**/*.vue", "press/**/*.js", "tools/**/*.js"] 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "YaNet", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "type": "module", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1", 9 | "docs:dev": "vitepress dev press", 10 | "docs:build": "vitepress build press", 11 | "docs:preview": "vitepress preview press" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "devDependencies": { 17 | "@iconify-json/arcticons": "^1.2.4", 18 | "@iconify-json/carbon": "^1.2.1", 19 | "@iconify-json/cbi": "^1.2.5", 20 | "@iconify-json/cib": "^1.2.1", 21 | "@iconify-json/logos": "^1.2.3", 22 | "@iconify-json/simple-icons": "^1.2.8", 23 | "@iconify-json/skill-icons": "^1.2.0", 24 | "@iconify-json/twemoji": "^1.2.1", 25 | "@types/node": "^22.7.5", 26 | "@unocss/preset-icons": "^0.63.4", 27 | "@unocss/transformer-directives": "^0.63.4", 28 | "prettier": "3.3.3", 29 | "rollup-plugin-visualizer": "^5.12.0", 30 | "sass-embedded": "^1.80.2", 31 | "tsx": "^4.19.2", 32 | "unocss": "^0.63.3", 33 | "unocss-preset-scrollbar": "^0.3.1", 34 | "vitepress": "^1.4.0" 35 | }, 36 | "dependencies": { 37 | "@vueuse/components": "^11.1.0", 38 | "@vueuse/core": "^11.1.0", 39 | "alova": "^3.1.0", 40 | "dotenv": "^16.4.5", 41 | "timeago.js": "^4.0.2", 42 | "ts-node": "^10.9.2", 43 | "typescript": "^5.6.3", 44 | "vite-plugin-vitepress-auto-sidebar": "^1.7.0", 45 | "vue": "^3.5.12" 46 | }, 47 | "packageManager": "pnpm@9.15.2+sha512.93e57b0126f0df74ce6bff29680394c0ba54ec47246b9cf321f0121d8d9bb03f750a705f24edc3c1180853afd7c2c3b94196d0a3d53d3e069d9e2793ef11f321" 48 | } 49 | -------------------------------------------------------------------------------- /press/.vitepress/components/Embed.vue: -------------------------------------------------------------------------------- 1 | 20 | 33 | -------------------------------------------------------------------------------- /press/.vitepress/components/Embeds/AppStore.vue: -------------------------------------------------------------------------------- 1 | 50 | 103 | 122 | -------------------------------------------------------------------------------- /press/.vitepress/components/Embeds/Github.vue: -------------------------------------------------------------------------------- 1 | 50 | 95 | 110 | -------------------------------------------------------------------------------- /press/.vitepress/components/Embeds/Link.vue: -------------------------------------------------------------------------------- 1 | 6 | 12 | -------------------------------------------------------------------------------- /press/.vitepress/components/Sites.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 65 | 66 | 93 | -------------------------------------------------------------------------------- /press/.vitepress/config.mts: -------------------------------------------------------------------------------- 1 | import UnoCSS from 'unocss/vite' 2 | import { defineConfig } from 'vitepress' 3 | import { visualizer } from 'rollup-plugin-visualizer' 4 | import AutoSidebar from "vite-plugin-vitepress-auto-sidebar"; 5 | import env from 'dotenv' 6 | 7 | // https://vitepress.dev/reference/site-config 8 | export default defineConfig({ 9 | lang: "zh-CN", 10 | title: "YaNet", 11 | titleTemplate: ':title - YaNet', 12 | description: "Yet another Internet.", 13 | sitemap: { 14 | hostname: 'https://yanet.app' 15 | }, 16 | vite: { 17 | plugins: [ 18 | AutoSidebar({ 19 | ignoreList: ["readme.md"], 20 | ignoreIndexItem: true, 21 | collapsed: false, 22 | path: '/press', 23 | }), 24 | UnoCSS(), 25 | visualizer({ 26 | open: true, 27 | gzipSize: true, 28 | brotliSize: true, 29 | }), 30 | ], 31 | define: { 32 | GITHUB_CLIENT_ID: JSON.stringify(process.env.VITE_GITHUB_CLIENT_ID || env.config().parsed?.VITE_GITHUB_CLIENT_ID), 33 | GITHUB_CLIENT_SECRET: JSON.stringify(process.env.VITE_GITHUB_CLIENT_SECRET || env.config().parsed?.VITE_GITHUB_CLIENT_SECRET), 34 | }, 35 | }, 36 | head: [ 37 | [ 38 | 'script', 39 | { async: '', src: 'https://www.googletagmanager.com/gtag/js?id=' + (process.env.VUE_APP_GOOGLE_ANALYTICS_ID || env.config().parsed?.VUE_APP_GOOGLE_ANALYTICS_ID) }, 40 | ], 41 | [ 42 | 'script', 43 | {}, 44 | `window.dataLayer = window.dataLayer || []; 45 | function gtag(){dataLayer.push(arguments);} 46 | gtag('js', new Date()); 47 | 48 | gtag('config', '${process.env.VUE_APP_GOOGLE_ANALYTICS_ID || env.config().parsed?.VUE_APP_GOOGLE_ANALYTICS_ID}');` 49 | ], 50 | ], 51 | themeConfig: { 52 | // https://vitepress.dev/reference/default-theme-config 53 | nav: [ 54 | { text: '首页', link: '/' }, 55 | { text: '客户端', link: '/clients', activeMatch: '/clients/' }, 56 | { text: '规则仓库', link: '/rules', activeMatch: '/rules/' }, 57 | { text: '机场', link: '/airports', activeMatch: '/airports/' }, 58 | { text: '图标集', link: '/iconsets', activeMatch: '/iconsets/' }, 59 | ], 60 | 61 | sidebar: [], 62 | 63 | socialLinks: [ 64 | { icon: 'github', link: 'https://github.com/dahaha-365/YaNet' } 65 | ] 66 | }, 67 | markdown: { 68 | image: { 69 | lazyLoading: true, 70 | }, 71 | toc: { 72 | level: [1, 2, 3, 4] 73 | } 74 | } 75 | }) 76 | -------------------------------------------------------------------------------- /press/.vitepress/icons/gemini-32.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /press/.vitepress/src/sites.tsx: -------------------------------------------------------------------------------- 1 | const sites = [ 2 | { 3 | "name": "Google", 4 | "icon": "i-logos:google-icon", 5 | "url": "https://www.google.com/", 6 | "color": "#ff0000", 7 | "description": "全球最大社交平台", 8 | "categories": ["搜索引擎", "常用网站"], 9 | "keywords": "谷歌 google 搜索 常用网站", 10 | "recommend": true, 11 | }, 12 | { 13 | "name": "DuckDuckGo", 14 | "icon": "i-logos:duckduckgo", 15 | "url": "https://www.duckduckgo.com/", 16 | "color": "#ff0000", 17 | "description": "全球最大社交平台", 18 | "categories": ["搜索引擎", "常用网站"], 19 | "keywords": "鸭鸭子 duckduckgo 搜索 常用网站", 20 | "recommend": true, 21 | }, 22 | { 23 | "name": "Github", 24 | "icon": "i-cib:github", 25 | "url": "https://www.github.com/", 26 | "color": "#ff0000", 27 | "description": "全球最大社交平台", 28 | "categories": ["常用网站"], 29 | "keywords": "github 搜索 常用网站", 30 | "recommend": true, 31 | }, 32 | { 33 | "name": "Stack Overflow", 34 | "icon": "i-logos:stackoverflow-icon", 35 | "url": "https://www.stackoverflow.com/", 36 | "color": "#ff0000", 37 | "description": "全球最大社交平台", 38 | "categories": ["常用网站"], 39 | "keywords": "stackoverflow 搜索 常用网站", 40 | "recommend": true, 41 | }, 42 | { 43 | "name": "Reddit", 44 | "icon": "i-logos:reddit-icon", 45 | "url": "https://www.reddit.com/", 46 | "color": "#ff0000", 47 | "description": "全球最大社交平台", 48 | "categories": ["常用网站"], 49 | "keywords": "reddit 搜索 常用网站", 50 | "recommend": true, 51 | }, 52 | { 53 | "name": "维基百科", 54 | "icon": "i-cib:wikipedia", 55 | "url": "https://zh.wikipedia.org/", 56 | "color": "#ff0000", 57 | "description": "全球最大社交平台", 58 | "categories": ["常用网站"], 59 | "keywords": "reddit 搜索 常用网站", 60 | "recommend": true, 61 | }, 62 | { 63 | "name": "Facebook", 64 | "icon": "i-logos:facebook", 65 | "url": "https://www.facebook.com/", 66 | "color": "#ff0000", 67 | "description": "全球最大社交平台", 68 | "categories": ["社交媒体"], 69 | "keywords": "非死不可 facebook 社交 脸书", 70 | "recommend": true, 71 | }, 72 | { 73 | "name": "X (Twitter)", 74 | "icon": "i-simple-icons:x", 75 | "url": "https://x.com/", 76 | "color": "#ff0000", 77 | "description": "全球最大社交平台", 78 | "categories": ["社交媒体"], 79 | "keywords": "推特 twitter 社交 叉 x", 80 | "recommend": true, 81 | }, 82 | { 83 | "name": "Discord", 84 | "icon": "i-logos:discord-icon", 85 | "url": "https://discord.com/", 86 | "color": "", 87 | "description": "全球最大视频网站", 88 | "categories": ["社交媒体"], 89 | "keywords": "Discord 游戏 论坛 直播", 90 | "recommend": true, 91 | }, 92 | { 93 | "name": "Instagram", 94 | "icon": "i-skill-icons:instagram", 95 | "url": "https://www.instagram.com/", 96 | "color": "", 97 | "description": "全球最大视频网站", 98 | "categories": ["社交媒体"], 99 | "keywords": "instagram 论坛", 100 | "recommend": true, 101 | }, 102 | { 103 | "name": "Pinterest", 104 | "icon": "i-logos:pinterest", 105 | "url": "https://www.pinterest.com/", 106 | "color": "", 107 | "description": "全球最大视频网站", 108 | "categories": ["社交媒体"], 109 | "keywords": "pinterest 论坛", 110 | "recommend": true, 111 | }, 112 | { 113 | "name": "LinkedIn", 114 | "icon": "i-logos:linkedin-icon", 115 | "url": "https://www.linkedin.com/", 116 | "color": "", 117 | "description": "全球最大视频网站", 118 | "categories": ["社交媒体"], 119 | "keywords": "linkedin 论坛", 120 | "recommend": true, 121 | }, 122 | { 123 | "name": "YouTube", 124 | "icon": "i-logos:youtube-icon", 125 | "url": "https://www.youtube.com/", 126 | "color": "#ff0000", 127 | "description": "全球最大视频网站", 128 | "categories": ["电影", "流媒体"], 129 | "keywords": "油管 youtube 视频 流媒体", 130 | "recommend": true, 131 | }, 132 | { 133 | "name": "Spotify", 134 | "icon": "i-logos:spotify-icon", 135 | "url": "https://www.spotify.com/", 136 | "color": "", 137 | "description": "全球最大视频网站", 138 | "categories": ["音乐", "流媒体"], 139 | "keywords": "声破天 spotify 音乐 流媒体", 140 | "recommend": true, 141 | }, 142 | { 143 | "name": "NETFLIX", 144 | "icon": "i-cib:netflix text-#e50914", 145 | "url": "https://www.netflix.com/", 146 | "color": "", 147 | "description": "全球最大视频网站", 148 | "categories": ["影音", "流媒体"], 149 | "keywords": "奈飞 netflix 视频 流媒体", 150 | "recommend": true, 151 | }, 152 | { 153 | "name": "TikTok", 154 | "icon": "i-logos:tiktok-icon", 155 | "url": "https://www.tiktok.com/", 156 | "color": "", 157 | "description": "全球最大视频网站", 158 | "categories": ["影音", "流媒体"], 159 | "keywords": "抖音 tiktok 短视频 流媒体", 160 | "recommend": true, 161 | }, 162 | { 163 | "name": "動畫瘋", 164 | "icon": "i-arcticons:bahamut text-#00b4d8", 165 | "url": "https://ani.gamer.com.tw/", 166 | "color": "", 167 | "description": "全球最大视频网站", 168 | "categories": ["影音", "流媒体"], 169 | "keywords": "巴哈姆特 动画疯 流媒体", 170 | "recommend": true, 171 | }, 172 | { 173 | "name": "Hulu", 174 | "icon": "i-cib:hulu text-#1ce783", 175 | "url": "https://www.hulu.com/", 176 | "color": "", 177 | "description": "全球最大视频网站", 178 | "categories": ["影音", "流媒体"], 179 | "keywords": "抖音 tiktok 短视频 流媒体", 180 | "recommend": true, 181 | }, 182 | { 183 | "name": "ChatGPT", 184 | "icon": "i-simple-icons:openai", 185 | "url": "https://chatgpt.com/", 186 | "color": "", 187 | "description": "全球最大视频网站", 188 | "categories": ["AI", "人工智能"], 189 | "keywords": "OpenAI ChatGPT 人工智能", 190 | "recommend": true, 191 | }, 192 | { 193 | "name": "Gemini", 194 | "icon": "i-custom:google-gemini-icon", 195 | "url": "https://gemini.google.com/", 196 | "color": "", 197 | "description": "全球最大视频网站", 198 | "categories": ["AI", "人工智能"], 199 | "keywords": "google gemini 人工智能", 200 | "recommend": true, 201 | }, 202 | { 203 | "name": "Copilot", 204 | "icon": "i-custom:microsoft-copilot-icon", 205 | "url": "https://copilot.microsoft.com/", 206 | "color": "", 207 | "description": "全球最大视频网站", 208 | "categories": ["AI", "人工智能"], 209 | "keywords": "microsoft copilot 人工智能", 210 | "recommend": true, 211 | }, 212 | { 213 | "name": "Claude", 214 | "icon": "i-logos:claude-icon", 215 | "url": "https://claude.ai/", 216 | "color": "", 217 | "description": "全球最大视频网站", 218 | "categories": ["AI", "人工智能"], 219 | "keywords": "claude ai 人工智能", 220 | "recommend": true, 221 | }, 222 | { 223 | "name": "DeepL", 224 | "icon": "i-simple-icons:deepl bg-#102c45", 225 | "url": "https://deepl.com/", 226 | "color": "", 227 | "description": "全球最大视频网站", 228 | "categories": ["AI", "人工智能"], 229 | "keywords": "deepl ai 人工智能", 230 | "recommend": true, 231 | }, 232 | { 233 | "name": "Gauth", 234 | "icon": "i-arcticons:gauthmath", 235 | "url": "https://gauthmath.com/", 236 | "color": "", 237 | "description": "全球最大视频网站", 238 | "categories": ["AI", "人工智能"], 239 | "keywords": "gauth math ai 人工智能", 240 | "recommend": true, 241 | }, 242 | { 243 | "name": "MultCloud", 244 | "icon": "i-twemoji:fire", 245 | "url": "https://s.yanet.app/wcz3Dy", 246 | "color": "", 247 | "description": "全球最大视频网站", 248 | "categories": ["效率工具", "网盘"], 249 | "keywords": "MultCloud 网盘 iCloud OneDrive 备份", 250 | "recommend": true, 251 | }, 252 | { 253 | "name": "IFTTT", 254 | "icon": "i-simple-icons:ifttt", 255 | "url": "https://ifttt.com/", 256 | "color": "", 257 | "description": "全球最大视频网站", 258 | "categories": ["效率工具", "网盘"], 259 | "keywords": "ifttt 网盘 iCloud OneDrive 备份", 260 | "recommend": true, 261 | }, 262 | { 263 | "name": "DropBox", 264 | "icon": "i-custom:dropbox-icon", 265 | "url": "https://s.yanet.app/fUthyn", 266 | "color": "", 267 | "description": "全球最大视频网站", 268 | "categories": ["效率工具", "网盘"], 269 | "keywords": "DropBox 网盘 iCloud OneDrive 备份", 270 | "recommend": true, 271 | }, 272 | { 273 | "name": "Everynote", 274 | "icon": "i-custom:evernote-icon", 275 | "url": "https://evernote.com/", 276 | "color": "", 277 | "description": "全球最大视频网站", 278 | "categories": ["效率工具", "网盘"], 279 | "keywords": "evernote 网盘 iCloud OneDrive 备份", 280 | "recommend": true, 281 | }, 282 | { 283 | "name": "Quora", 284 | "icon": "i-custom:quora-icon", 285 | "url": "https://www.quora.com/", 286 | "color": "", 287 | "description": "全球最大视频网站", 288 | "categories": ["效率工具", "网盘"], 289 | "keywords": "quora 网盘 iCloud OneDrive 备份", 290 | "recommend": true, 291 | }, 292 | { 293 | "name": "Slack", 294 | "icon": "i-custom:slack-icon", 295 | "url": "https://www.slack.com/", 296 | "color": "", 297 | "description": "全球最大视频网站", 298 | "categories": ["效率工具", "网盘"], 299 | "keywords": "slack 网盘 iCloud OneDrive 备份", 300 | "recommend": true, 301 | }, 302 | ] 303 | 304 | const querySites = (filters: Array, recommend: boolean = false) => { 305 | return sites.filter(site => site.recommend === recommend).filter(site => { 306 | return site.categories.filter(category => filters.includes(category)).length > 0 307 | }) 308 | } 309 | 310 | export { sites, querySites } 311 | -------------------------------------------------------------------------------- /press/.vitepress/theme/index.ts: -------------------------------------------------------------------------------- 1 | // https://vitepress.dev/guide/custom-theme 2 | import { h, defineAsyncComponent } from 'vue' 3 | import type { Theme } from 'vitepress' 4 | import DefaultTheme from 'vitepress/theme' 5 | import './style.css' 6 | import "virtual:uno.css"; 7 | 8 | export default { 9 | extends: DefaultTheme, 10 | Layout: () => { 11 | return h(DefaultTheme.Layout, null, { 12 | // https://vitepress.dev/guide/extending-default-theme#layout-slots 13 | }) 14 | }, 15 | enhanceApp({ app, router, siteData }) { 16 | app.component( 17 | "Sites", 18 | defineAsyncComponent(() => import("../components/Sites.vue")) 19 | ); 20 | app.component( 21 | "Embed", 22 | defineAsyncComponent(() => import("../components/Embed.vue")) 23 | ); 24 | app.component( 25 | "AppStore", 26 | defineAsyncComponent(() => import("../components/Embeds/AppStore.vue")) 27 | ); 28 | app.component( 29 | "Github", 30 | defineAsyncComponent(() => import("../components/Embeds/Github.vue")) 31 | ); 32 | app.component( 33 | "Link", 34 | defineAsyncComponent(() => import("../components/Embeds/Link.vue")) 35 | ); 36 | } 37 | } satisfies Theme 38 | -------------------------------------------------------------------------------- /press/airports/components/Fliter.vue: -------------------------------------------------------------------------------- 1 | 23 | 76 | -------------------------------------------------------------------------------- /press/airports/components/Item.vue: -------------------------------------------------------------------------------- 1 | 5 | 28 | -------------------------------------------------------------------------------- /press/airports/index.md: -------------------------------------------------------------------------------- 1 | 12 | 13 | # 机场列表 14 | 15 | - 机场有跑路风险,尽量不要年付或者支付大额订单 16 | - 尽量用小号邮箱注册,并且不要使用自己常用的密码 17 | - 数据有时效性,购买时请以机场实际参数为准 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /press/clients/clash-for-flutter.md: -------------------------------------------------------------------------------- 1 | # Clash for Flutter 2 | 3 | 这是一个 Clash 的多平台客户端,支持 windows、linux、macos、android、~~ios~~。 4 | 5 | https://github.com/mapleafgo/clash-for-flutter 6 | 7 | #### 特点 8 | 9 | 1. 基于Flutter开发,跨平台能力出众 10 | 11 | #### 支持平台 12 | 13 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 14 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 15 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | 16 | -------------------------------------------------------------------------------- /press/clients/clash-nyanpasu.md: -------------------------------------------------------------------------------- 1 | # Clash Nyanpasu 2 | 3 | 一个 Tauri 框架开发的 Mihomo GUI 程序,使用 Mihomo 作为内核。 4 | 5 | https://github.com/libnyanpasu/clash-nyanpasu 6 | 7 | #### 特点 8 | 9 | 1. 萌 10 | 2. 源于Clash Verge 11 | 12 | #### 支持平台 13 | 14 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 15 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 16 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | 17 | -------------------------------------------------------------------------------- /press/clients/clash-verge-rev.md: -------------------------------------------------------------------------------- 1 | # Clash Verge Rev 2 | 3 | 一个 Tauri 框架开发的 Mihomo GUI 程序,使用 Mihomo 作为内核。 4 | 5 | https://github.com/clash-verge-rev/clash-verge-rev 6 | 7 | #### 特点 8 | 9 | 1. Tauri框架的安装包比较小,Rust后端运行效率比较高 10 | 2. 内置的日志功能比较强大 11 | 3. 支持yaml和script覆写 12 | 13 | #### 支持平台 14 | 15 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 16 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 17 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | 18 | -------------------------------------------------------------------------------- /press/clients/clashtui.md: -------------------------------------------------------------------------------- 1 | # ClashTui 2 | 3 | Mihomo (Clash.Meta) TUI 客户端 4 | 5 | https://github.com/JohanChane/clashtui 6 | 7 | #### 特点 8 | 9 | 1. 适合喜欢 tui 软件的人群 10 | 11 | #### 支持平台 12 | 13 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 14 | | :---: |:-----:| :---: | :---: |:---:|:--------:| :---: | 15 | | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: | :x: | 16 | 17 | -------------------------------------------------------------------------------- /press/clients/components/Fliter.vue: -------------------------------------------------------------------------------- 1 | 23 | 76 | -------------------------------------------------------------------------------- /press/clients/egern.md: -------------------------------------------------------------------------------- 1 | # Egern 2 | 3 | Egern 是一款功能丰富、强大的网络工具,专门用于代理、拦截和修改网络流量。 4 | 5 | https://apps.apple.com/app/id1616105820 6 | 7 | #### 特点 8 | 9 | 1. 支持丰富的规则类型 10 | 2. 支持通过JavaScript脚本为进行自定义请求和响应数据的操作 11 | 3. 通过 iCloud 实现跨设备配置信息同步 12 | 4. 支持自定义路由规则组、策略组 13 | 14 | #### 支持平台 15 | 16 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 17 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 18 | | :x: | :x: | :x: | :x: | :white_check_mark: | :x: | :x: | 19 | -------------------------------------------------------------------------------- /press/clients/flclash.md: -------------------------------------------------------------------------------- 1 | # FlClash 2 | 3 | 基于 ClashMeta 的多平台代理客户端,简单易用,开源且无广告。 4 | 5 | https://github.com/chen08209/FlClash 6 | 7 | #### 特点 8 | 9 | 1. C# 编写,非常适合 Windows 平台 10 | 2. 系统资源占用比较低 11 | 12 | #### 支持平台 13 | 14 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 15 | | :---: |:-----:| :---: | :---: |:---:|:--------:| :---: | 16 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | 17 | 18 | -------------------------------------------------------------------------------- /press/clients/gui-for-cores.md: -------------------------------------------------------------------------------- 1 | # GUI for Cores 2 | 3 | 这个项目共开发了两个客户端软件。分别采用了 Mihomo 内核和 Singbox 内核。 4 | 5 | https://github.com/GUI-for-Cores/GUI.for.Clash 6 | 7 | https://github.com/GUI-for-Cores/GUI.for.SingBox 8 | 9 | #### 特点 10 | 11 | 1. 安装包大概5M左右,太小了 12 | 2. 后端使用Go语言,运行效率很高 13 | 3. 有官方的插件平台 14 | 4. 支持覆写 15 | 5. 有定时任务功能 16 | 17 | #### 支持平台 18 | 19 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 20 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 21 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | 22 | -------------------------------------------------------------------------------- /press/clients/index.md: -------------------------------------------------------------------------------- 1 | 11 | 12 | # 梯子客户端汇总 13 | 14 | 15 | 16 |
17 |

18 | 19 | {{ item.name }} 20 |

21 |

{{ item.description }}

22 |
23 | -------------------------------------------------------------------------------- /press/clients/karing.md: -------------------------------------------------------------------------------- 1 | # Karing 2 | 3 | 一个基于 flutter 的 singbox 图形用户界面。 4 | 5 | https://github.com/KaringX/karing 6 | 7 | https://apps.apple.com/app/id6472431552 8 | 9 | #### 特点 10 | 11 | 1. 兼容 Clash、V2ray/V2fly、Sing-box、Shadowsocks、Sub、Github 订阅 12 | 2. 完全支持 clash 配置,部分支持 clash.meta 配置 13 | 3. 一套路由规则应用于多个订阅源, 自动选择高效节点 14 | 4. 支持自定义路由规则组、节点组 15 | 16 | #### 支持平台 17 | 18 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 19 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 20 | | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | 21 | -------------------------------------------------------------------------------- /press/clients/loon.md: -------------------------------------------------------------------------------- 1 | # Loon 2 | 3 | 适用于 iOS 和 tvOS 的强大的网络工具箱。支持基于域名、IP、URL,SSID 规则进行分流,强大的策略组组合可以满足任何的网络分流需求;Loon 可以抓取、保存、修改 HTTP/HTTPs 流量,配合 Javascript 可以处理任何复杂的需求。 4 | 5 | https://apps.apple.com/app/id1373567447 6 | 7 | #### 特点 8 | 9 | 1. 支持插件和覆写 10 | 2. 规则解析性能强悍 11 | 3. 能同时使用多个订阅 12 | 4. 支持自定义路由规则组、策略组 13 | 14 | #### 支持平台 15 | 16 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 17 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 18 | | :x: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | 19 | -------------------------------------------------------------------------------- /press/clients/mihomo-party.md: -------------------------------------------------------------------------------- 1 | # Mihomo Party 2 | 3 | 一个 Electron 框架开发的 Mihomo GUI 程序,使用 Mihomo 作为内核。 4 | 5 | https://github.com/mihomo-party-org/mihomo-party 6 | 7 | #### 特点 8 | 9 | 1. 自定义主题功能,皮肤资源非常丰富 10 | 2. 远程订阅yaml或者script进行覆写 11 | 3. 内置了一个Sub Store后端 12 | 13 | #### 支持平台 14 | 15 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 16 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 17 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | 18 | -------------------------------------------------------------------------------- /press/clients/nekoray.md: -------------------------------------------------------------------------------- 1 | # Nekoray 2 | 3 | 基于 Qt 的跨平台代理配置管理器 (后端 sing-box),目前支持 Windows / Linux 开箱即用。 4 | 5 | Google Play 版本的 NekoBox 非官方发布,不建议下载。 6 | 7 | https://github.com/MatsuriDayo/nekoray 8 | 9 | #### 特点 10 | 11 | 1. 支持分享链接,订阅链接,Base64格式,Yaml格式的数据输入解析 12 | 2. 内置将节点和订阅转换为Mihomo配置 13 | 3. 支持节点爬取 14 | 4. 自动添加极简规则分组 15 | 5. 支持统一所有订阅的规则和分组 16 | 17 | #### 支持平台 18 | 19 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 20 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 21 | | :white_check_mark: | :white_check_mark: | 需要自行编译 | :x: | :x: | :x: | :x: | 22 | -------------------------------------------------------------------------------- /press/clients/pandora-box.md: -------------------------------------------------------------------------------- 1 | # Pandora Box 2 | 3 | 一个简易的 Mihomo 桌面客户端,采用 Go 语言开发。 4 | 5 | https://github.com/snakem982/Pandora-Box 6 | 7 | #### 特点 8 | 9 | 1. 支持分享链接,订阅链接,Base64格式,Yaml格式的数据输入解析 10 | 2. 内置将节点和订阅转换为Mihomo配置 11 | 3. 支持节点爬取 12 | 4. 自动添加极简规则分组 13 | 5. 支持统一所有订阅的规则和分组 14 | 15 | #### 支持平台 16 | 17 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 18 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 19 | | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: | 20 | -------------------------------------------------------------------------------- /press/clients/shadowrocket.md: -------------------------------------------------------------------------------- 1 | # Shadowrocket 2 | 3 | 基于规则的代理实用客户端,适用于 iPhone/iPad。 4 | 5 | https://apps.apple.com/app/id932747118 6 | 7 | #### 特点 8 | 9 | 1. 支持kcptun、cloak、gost、v2ray插件,支持的协议比较全 10 | 2. 通过域名、用户代理规则阻止广告 11 | 3. 支持URL重写 12 | 4. 本地 DNS 映射 13 | 14 | #### 支持平台 15 | 16 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 17 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 18 | | :x: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | 19 | -------------------------------------------------------------------------------- /press/clients/src/clients.ts: -------------------------------------------------------------------------------- 1 | const clients = [ 2 | { 3 | "name": "Mihomo Party", 4 | "description": "一个更易用的客户端", 5 | "slug": "mihomo-party", 6 | "platforms": ["windows", "linux", "mac", "clash", "mihomo"] 7 | }, 8 | { 9 | "name": "Clash Verge Rev", 10 | "description": "Clash Verge 的延续,基于 Tauri 的 Clash Meta GUI", 11 | "slug": "clash-verge-rev", 12 | "platforms": ["windows", "linux", "mac", "clash", "mihomo"] 13 | }, 14 | { 15 | "name": "Clash Nyanpasu", 16 | "description": "新一代Clash GUI客户端", 17 | "slug": "clash-nyanpasu", 18 | "platforms": ["windows", "linux", "mac", "clash", "mihomo"] 19 | }, 20 | { 21 | "name": "Clash for Flutter", 22 | "description": "Clash的桌面客户端,支持 windows、linux、macos", 23 | "slug": "clash-for-flutter", 24 | "platforms": ["windows", "linux", "mac", "clash", "mihomo"] 25 | }, 26 | { 27 | "name": "GUI for Cores", 28 | "description": "为 mihomo 和 sing-box 内核设计的图形用户界面应用程序", 29 | "slug": "gui-for-cores", 30 | "platforms": [ 31 | "windows", 32 | "linux", 33 | "mac", 34 | "android", 35 | "clash", 36 | "mihomo", 37 | "singbox" 38 | ] 39 | }, 40 | { 41 | "name": "Egern", 42 | "description": "Egern 是一款功能丰富、强大的网络工具,专门用于代理、拦截和修改网络流量", 43 | "slug": "egern", 44 | "platforms": ["ios"] 45 | }, 46 | { 47 | "name": "Karing", 48 | "description": "简单而强大,基于规则的网络代理工具", 49 | "slug": "karing", 50 | "platforms": ["ios", "mac"] 51 | }, 52 | { 53 | "name": "Loon", 54 | "description": "Loon是一款iOS上强大的网络工具,支持基于域名、IP、URL,SSID规则进行分流,强大的策略组组合可以满足任何的网络分流需求;Loon可以抓取、保存、修改HTTP/HTTPs流量,配合Javascript可以处理任何复杂的需求", 55 | "slug": "loon", 56 | "platforms": ["ios", "appletv"] 57 | }, 58 | { 59 | "name": "NekoRay", 60 | "description": "基于 Qt 的跨平台代理配置管理器 (后端 sing-box)", 61 | "slug": "nekoray", 62 | "platforms": ["windows", "linux", "mac"] 63 | }, 64 | { 65 | "name": "Pandora Box", 66 | "description": "一个简易的 Mihomo 桌面客户端", 67 | "slug": "pandora-box", 68 | "platforms": ["windows", "linux", "mac"] 69 | }, 70 | { 71 | "name": "Shadowrocket", 72 | "description": "基于规则的代理实用客户端,适用于 iPhone/iPad", 73 | "slug": "shadowrocket", 74 | "platforms": ["ios"] 75 | }, 76 | { 77 | "name": "Stash", 78 | "description": "Stash 是Clash Premium 内核在Apple 设备上的最佳实现客户端,为iOS、tvOS、macOS 与visionOS 平台完整适配Clash 功能", 79 | "slug": "stash", 80 | "platforms": ["mac", "ios", "appletv"] 81 | }, 82 | { 83 | "name": "Surge", 84 | "description": "适用于 Mac 和 iOS 的高级网络工具箱", 85 | "slug": "surge", 86 | "platforms": ["mac", "ios", "appletv"] 87 | }, 88 | { 89 | "name": "v2RayN", 90 | "description": "适用于 Windows 的图形用户界面客户端,支持 Xray core 和 v2fly core 等", 91 | "slug": "v2rayn", 92 | "platforms": ["windows"] 93 | }, 94 | { 95 | "name": "FlClash", 96 | "description": "基于 ClashMeta 的多平台代理客户端,简单易用,开源且无广告", 97 | "slug": "flclash", 98 | "platforms": ["windows", "mac", "linux", "android"] 99 | }, 100 | { 101 | "name": "ClashTui", 102 | "description": "Mihomo (Clash.Meta) TUI 客户端", 103 | "slug": "clashtui", 104 | "platforms": ["windows", "linux"] 105 | }, 106 | ] 107 | 108 | const queryClients = (filters: Array, relation: String = "or") => { 109 | if (filters.length === 0) { 110 | return clients 111 | } else { 112 | switch (relation) { 113 | case 'and': 114 | return clients.filter(client => { 115 | return client.platforms.filter(platform => filters.includes(platform)).length === filters.length 116 | }) 117 | break; 118 | case 'or': 119 | default: 120 | return clients.filter(client => { 121 | return client.platforms.filter(platform => filters.includes(platform)).length > 0 122 | }) 123 | break; 124 | } 125 | } 126 | } 127 | 128 | export { clients, queryClients } 129 | -------------------------------------------------------------------------------- /press/clients/stash.md: -------------------------------------------------------------------------------- 1 | # Stash 2 | 3 | Stash 是 Clash Premium 内核在 Apple 设备上的最佳实现客户端,为 iOS、tvOS、macOS 与 visionOS 平台完整适配 Clash 功能。 4 | 5 | https://apps.apple.com/app/id1596063349 6 | 7 | Mac版: 8 | 9 | https://stash.wiki/stash-mac 10 | 11 | #### 特点 12 | 13 | 1. 支持插件和覆写 14 | 2. 支持多配置文件切换 15 | 16 | #### 支持平台 17 | 18 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 19 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 20 | | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | 21 | -------------------------------------------------------------------------------- /press/clients/surge.md: -------------------------------------------------------------------------------- 1 | # Surge 2 | 3 | Surge 是一个在 iOS 和 macOS 平台上的网络工具,功能主要包含对网络请求的接管、修改和转发。 4 | 5 | https://apps.apple.com/app/id1442620678 6 | 7 | #### 特点 8 | 9 | 1. 支持插件和覆写 10 | 2. 插件资源非常丰富 11 | 12 | #### 支持平台 13 | 14 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 15 | | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 16 | | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :white_check_mark: | :x: | 17 | -------------------------------------------------------------------------------- /press/clients/v2rayn.md: -------------------------------------------------------------------------------- 1 | # v2rayN 2 | 3 | 适用于 Windows 的图形用户界面客户端,支持 Xray core 和 v2fly core 等。 4 | 5 | https://github.com/2dust/v2rayN 6 | 7 | #### 特点 8 | 9 | 1. C# 编写,非常适合 Windows 平台 10 | 2. 系统资源占用比较低 11 | 12 | #### 支持平台 13 | 14 | | Windows | MacOS | Linux | Android | iOS | Apple TV | 路由器 | 15 | | :---: |:-----:| :---: | :---: |:---:|:--------:| :---: | 16 | | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | 17 | 18 | -------------------------------------------------------------------------------- /press/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: YaNet 3 | 4 | titleTemplate: ':title - 另一个互联网,无限新可能' 5 | 6 | # https://vitepress.dev/reference/default-theme-home-page 7 | layout: home 8 | 9 | navbar: true 10 | 11 | editLink: true 12 | 13 | nav: 14 | - text: Home 15 | link: / 16 | - text: Markdown Examples 17 | link: /markdown-examples 18 | - text: API Examples 19 | link: /api-examples 20 | 21 | hero: 22 | name: "YaNet" 23 | text: "Yet another Internet." 24 | tagline: 另一个互联网,无限新可能 25 | --- 26 | 27 | 28 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Yet another Internet 2 | 3 | 这里没有你想要的东西,只有我自己喜欢的东西。 4 | -------------------------------------------------------------------------------- /shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | // shims-vue.d.ts 2 | declare module '*.vue' { 3 | import type { DefineComponent } from 'vue' 4 | const component: DefineComponent<{}, {}, any> 5 | export default component 6 | } 7 | -------------------------------------------------------------------------------- /tools/rulesets.ts: -------------------------------------------------------------------------------- 1 | import { createAlova } from 'alova' 2 | import { useRequest } from 'alova/client' 3 | import VueHook from 'alova/vue'; 4 | import adapterFetch from 'alova/fetch' 5 | import { classicalExtractor, singJsonExtrator } from './src/ruleset-extrator' 6 | import * as path from 'node:path' 7 | import { writeFileSync, mkdirSync } from 'node:fs' 8 | 9 | const alova = createAlova({ 10 | requestAdapter: adapterFetch(), 11 | statesHook: VueHook, 12 | responded: response => response.text(), 13 | }) 14 | 15 | const { send: getAIChatNotCNRules } = useRequest(() => alova.Get('https://github.com/MetaCubeX/meta-rules-dat/raw/refs/heads/sing/geo/geosite/category-ai-chat-!cn.json', { 16 | transform(rawData: string) { 17 | return singJsonExtrator(rawData) 18 | } 19 | }), { immediate: false }) 20 | 21 | const { send: getJetbrainsAiRules } = useRequest(() => alova.Get('https://github.com/MetaCubeX/meta-rules-dat/raw/refs/heads/sing/geo/geosite/jetbrains-ai.json', { 22 | transform(rawData: string) { 23 | return singJsonExtrator(rawData) 24 | } 25 | }), { immediate: false }) 26 | 27 | const { send: getClaudeRules } = useRequest(() => alova.Get('https://github.com/blackmatrix7/ios_rule_script/raw/refs/heads/master/rule/Clash/Claude/Claude.list', { 28 | transform(rawData: string) { 29 | return classicalExtractor(rawData) 30 | } 31 | }), { immediate: false }) 32 | 33 | const { send: getOpenAIRules } = useRequest(() => alova.Get('https://github.com/blackmatrix7/ios_rule_script/raw/refs/heads/master/rule/Clash/OpenAI/OpenAI.list', { 34 | transform(rawData: string) { 35 | return classicalExtractor(rawData) 36 | } 37 | }), { immediate: false }) 38 | 39 | const { send: getBardAIRules } = useRequest(() => alova.Get('https://github.com/blackmatrix7/ios_rule_script/raw/refs/heads/master/rule/Clash/BardAI/BardAI.list', { 40 | transform(rawData: string) { 41 | return classicalExtractor(rawData) 42 | } 43 | }), { immediate: false }) 44 | 45 | const { send: getCopilotRules } = useRequest(() => alova.Get('https://github.com/blackmatrix7/ios_rule_script/raw/refs/heads/master/rule/Clash/Copilot/Copilot.list', { 46 | transform(rawData: string) { 47 | return classicalExtractor(rawData) 48 | } 49 | }), { immediate: false }) 50 | 51 | const { send: getNotionRules } = useRequest(() => alova.Get('https://github.com/blackmatrix7/ios_rule_script/raw/refs/heads/master/rule/Clash/Notion/Notion.list', { 52 | transform(rawData: string) { 53 | return classicalExtractor(rawData) 54 | } 55 | }), { immediate: false }) 56 | 57 | const build = async () => { 58 | const [AIChatNotCNRules, jetbrainsAiRules, claudeRules, openAIRules, bardAIRules, copilotRules, notionRules] = await Promise.all([getAIChatNotCNRules(), getJetbrainsAiRules(), getClaudeRules(), getOpenAIRules(), getBardAIRules(), getCopilotRules(), getNotionRules()]); 59 | const rules = Array.from(new Set([...AIChatNotCNRules, ...jetbrainsAiRules, ...claudeRules, ...openAIRules, ...bardAIRules, ...copilotRules, ...notionRules])) 60 | rules.sort() 61 | const header = `# AI ruleset\n# Creator URL: https://yanet.app\n# Created at ${new Date().toISOString()}\n\n` 62 | mkdirSync(path.resolve('./dist/rulesets/mihomo/'), { 63 | recursive: true 64 | }) 65 | writeFileSync(path.resolve('./dist/rulesets/mihomo/ai.list'), header + rules.join('\n')) 66 | } 67 | 68 | build() 69 | -------------------------------------------------------------------------------- /tools/src/ruleset-convertor.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | domain2classical: (rule: string) => { 3 | if (/^[+.].+$/i.test(rule)) { 4 | rule = rule.replace('+.', 'DOMAIN-SUFFIX,') 5 | } else if (/^[*.].+$/i.test(rule)) { 6 | rule = rule.replace('*.', 'DOMAIN-SUFFIX,') 7 | } else if (/^[.].+$/i.test(rule)) { 8 | rule = rule.replace('.', 'DOMAIN-SUFFIX,') 9 | } else { 10 | rule = 'DOMAIN,' + rule 11 | } 12 | return rule 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tools/src/ruleset-extrator.ts: -------------------------------------------------------------------------------- 1 | const listExtractor = function (content: string) { 2 | return content.split('\n').filter(line => { 3 | return /^[*.+a-z0-9][.a-z0-9-]+$/i.test(line) 4 | }) 5 | } 6 | 7 | const classicalExtractor = function (content: string) { 8 | return content.split('\n').filter(line => { 9 | return /^(DOMAIN|DOMAIN-SUFFIX|DOMAIN-KEYWORD|DOMAIN-REGEX|GEOSITE|IP-CIDR|IP-CIDR6|IP-SUFFIX|IP-ASN|GEOIP|SRC-GEOIP|SRC-IP-ASN|SRC-IP-CIDR|SRC-IP-SUFFIX|DST-PORT|SRC-PORT|IN-PORT|IN-TYPE|IN-USER|IN-NAME|PROCESS-PATH|PROCESS-PATH-REGEX|PROCESS-NAME|PROCESS-NAME-REGEX|UID|NETWORK|DSCP|AND|OR|NOT)[,.-a-z0-9]+$/i.test(line) 10 | }) 11 | } 12 | 13 | const singJsonExtrator = function (content: string) { 14 | const json = JSON.parse(content) 15 | let rules: string[] = [] 16 | for (const type in json.rules[0]) { 17 | if (typeof(json.rules[0][type]) == 'string') { 18 | json.rules[0][type] = [json.rules[0][type]] 19 | } 20 | switch (type) { 21 | case 'domain': { 22 | const new_rules = json.rules[0][type].map((domain: string) => 'DOMAIN,' + domain) 23 | rules = rules.concat(new_rules) 24 | break 25 | } 26 | case 'domain_suffix': { 27 | const new_rules = json.rules[0][type].map((domain: string) => 'DOMAIN-SUFFIX,' + domain) 28 | rules = rules.concat(new_rules) 29 | break 30 | } 31 | case 'domain_regex': { 32 | const new_rules = json.rules[0][type].map((domain: string) => 'DOMAIN-REGEX,' + domain) 33 | rules = rules.concat(new_rules) 34 | break 35 | } 36 | case 'domain_keyword': { 37 | const new_rules = json.rules[0][type].map((domain: string) => 'DOMAIN-KEYWORD,' + domain) 38 | rules = rules.concat(new_rules) 39 | break 40 | } 41 | } 42 | } 43 | return rules 44 | } 45 | 46 | export { listExtractor, classicalExtractor, singJsonExtrator } 47 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "es2015", 4 | "moduleResolution": "node", 5 | "target": "es5", 6 | "sourceMap": true, 7 | "allowJs": true 8 | }, 9 | "ts-node": { 10 | "esm": true 11 | }, 12 | "include": ["src/**/*", "press/**/*.vue", "press/**/*.ts", "tools/**/*.ts"] 13 | } 14 | -------------------------------------------------------------------------------- /uno.config.ts: -------------------------------------------------------------------------------- 1 | import fs from 'node:fs/promises' 2 | import { 3 | defineConfig, 4 | presetUno, 5 | presetIcons, 6 | presetWebFonts, 7 | transformerDirectives, 8 | transformerVariantGroup, 9 | presetAttributify, presetMini, 10 | } from 'unocss' 11 | import { presetScrollbar } from 'unocss-preset-scrollbar' 12 | 13 | export default defineConfig({ 14 | presets: [ 15 | presetUno(), 16 | presetIcons({ 17 | cdn: 'https://esm.sh/', 18 | scale: 1.2, 19 | warn: true, 20 | unit: 'em', 21 | extraProperties: { 22 | 'display': 'inline-block', 23 | 'vertical-align': 'middle', 24 | }, 25 | collections: { 26 | carbon: () => import('@iconify-json/carbon/icons.json').then(i => i.default), 27 | logos: () => import('@iconify-json/logos/icons.json').then(i => i.default), 28 | cib: () => import('@iconify-json/cib/icons.json').then(i => i.default), 29 | arcticons: () => import('@iconify-json/arcticons/icons.json').then(i => i.default), 30 | simple: () => import('@iconify-json/simple-icons/icons.json').then(i => i.default), 31 | twemoji: () => import('@iconify-json/twemoji/icons.json').then(i => i.default), 32 | skill: () => import('@iconify-json/skill-icons/icons.json').then(i => i.default), 33 | custom: { 34 | 'google-gemini-icon': () => fs.readFile('./IconSet/google-gemini-icon.svg', 'utf-8'), 35 | 'microsoft-copilot-icon': () => fs.readFile('./IconSet/copilot-icon.svg', 'utf-8'), 36 | 'dropbox-icon': () => fs.readFile('./IconSet/dropbox-icon.svg', 'utf-8'), 37 | 'evernote-icon': () => fs.readFile('./IconSet/evernote-icon.svg', 'utf-8'), 38 | 'quora-icon': () => fs.readFile('./IconSet/quora-icon.svg', 'utf-8'), 39 | 'slack-icon': () => fs.readFile('./IconSet/slack-icon.svg', 'utf-8'), 40 | } 41 | } 42 | }), 43 | presetAttributify(), 44 | presetMini(), 45 | presetWebFonts({ 46 | provider: 'bunny', 47 | fonts: { 48 | sans: 'Inter', 49 | }, 50 | }), 51 | presetScrollbar(), 52 | ], 53 | transformers: [ 54 | transformerDirectives(), 55 | transformerVariantGroup(), 56 | ], 57 | theme: { 58 | colors: { 59 | veryCool: '#0000ff', // class="text-very-cool" 60 | brand: { 61 | youtube: '#ff0000', //class="bg-brand-youtube" 62 | hulu: '#66aa33', //class="bg-brand-hulu" 63 | netflix: '#e50914', 64 | google: '#4285f4', 65 | spotify: '#1db954', 66 | }, 67 | }, 68 | } 69 | }) 70 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "git": { 3 | "deploymentEnabled": { 4 | "dev": false, 5 | "dist": false 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /vetur.config.js: -------------------------------------------------------------------------------- 1 | // vetur.config.js 2 | 3 | import { format } from 'path' 4 | 5 | /** @type {import('vls').VeturConfig} */ 6 | export const settings = { 7 | 'vetur.useWorkspaceDependencies': true, 8 | 'vetur.experimental.templateInterpolationService': true, 9 | } 10 | export const projects = [ 11 | './press', // shorthand for only root. 12 | { 13 | // **required** 14 | // Where is your project? 15 | // It is relative to `vetur.config.js`. 16 | root: './', 17 | // **optional** default: `'package.json'` 18 | // Where is `package.json` in the project? 19 | // We use it to determine the version of vue. 20 | // It is relative to root property. 21 | package: './package.json', 22 | // **optional** 23 | // Where is TypeScript config file in the project? 24 | // It is relative to root property. 25 | tsconfig: './tsconfig.json', 26 | // **optional** default: `'./.vscode/vetur/snippets'` 27 | // Where is vetur custom snippets folders? 28 | snippetFolder: './.vscode/vetur/snippets', 29 | // **optional** default: `[]` 30 | // Register globally Vue component glob. 31 | // If you set it, you can get completion by that components. 32 | // It is relative to root property. 33 | // Notice: It won't actually do it. You need to use `require.context` or `Vue.component` 34 | globalComponents: ['./press/.vitepress/components/**/*.vue'], 35 | }, 36 | ] 37 | -------------------------------------------------------------------------------- /vite-env.d.ts: -------------------------------------------------------------------------------- 1 | // 2 | 3 | interface ImportMetaEnv { 4 | readonly VITE_GITHUB_CLIENT_ID: string 5 | readonly VITE_GITHUB_CLIENT_SECRET: string 6 | // 更多环境变量... 7 | } 8 | 9 | interface ImportMeta { 10 | readonly env: ImportMetaEnv 11 | } 12 | --------------------------------------------------------------------------------