[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7600":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":22,"defaultBranch":23,"hasWiki":21,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},7600,"kitsunebi-android","yamada95\u002Fkitsunebi-android","yamada95"," A fully-featured V2Ray client for Android.","",null,"Kotlin",1803,327,1804,92,0,1,3,58.15,"MIT License",true,false,"master",[25,26],"android","v2ray","2026-06-12 04:00:35","# Kitsunebi\n\nA fully-featured V2Ray client for Android.\n\n## 下载\n\n\u003Ca href=\"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=fun.kitsunebi.kitsunebi4android\">\u003Cimg src=\"https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fimages\u002Fgeneric\u002Fen-play-badge.png\" height=\"100\">\u003C\u002Fa>\n\n## URI、二维码\nKitsunebi 安卓版所生成的 URI 和二维码格式为 [FOV001](https:\u002F\u002Fgithub.com\u002Fv2ray\u002Fv2ray-core\u002Fissues\u002F1569) 中所提出的 `面向协议格式`（`Protocol Oriented Serialization`），并支持该格式的导入。\n\n## 负载均衡策略\nKitsunebi 使用的 Core 扩展了 v2ray-core 的功能，新增根据节点延迟值来选择最快速节点的策略，图形界面上可以添加节点组来开启，使用自定义配置的话，有以下配置项，除 tolerance 为毫秒外，其它所有时间数值单位为秒：\n```json\n{\n    \"tag\": \"proxy\",\n    \"selector\": [\n        \"primary_proxy\",\n        \"backup_proxy\"\n    ],\n    \"strategy\": \"latency\",\n    \"interval\": 60, \u002F\u002F 每次测速之间的最少时间间隔\n    \"totalMeasures\": 3, \u002F\u002F 每次测速中对每个 outbound 所做的请求次数\n    \"delay\": 1, \u002F\u002F 每个测速请求之间的时间间隔\n    \"timeout\": 4, \u002F\u002F 测速请求的超时时间\n    \"tolerance\": 300, \u002F\u002F 可接受的延迟波动范围，切换最佳节点会将此波动范围考虑进去\n    \"probeTarget\": \"tls:www.google.com:443\", \u002F\u002F 测速请求发送的目的地\n    \"probeContent\": \"HEAD \u002F HTTP\u002F1.1\\r\\n\\r\\n\" \u002F\u002F 测速请求内容\n}\n```\n\n`probeTarget` 中的协议部分可以是 tcp\u002Fudp\u002Ftls, tls 表示 TLS over TCP，上面配置表示向 www.google.com 发起一个 HTTPS 的 HEAD 请求，相当于这条命令：\n\n```sh\ncurl -I 'https:\u002F\u002Fwww.google.com'\n```\n\n如果 `probeTarget` 是 \"tcp:www.google.com:80\"，则相当于这条命令：\n\n```sh\ncurl -I 'http:\u002F\u002Fwww.google.com'\n```\n\n## 延迟测试\n延迟测试并非 ICMP Ping 或 TCP Ping，所用的方法跟负载均衡中的 latency 策略所用的方法大致一样，实际向 outbound 发送一个代理请求，记录返回非空数据所使用的时间。\n\n延迟测试也相当于可用性或连通性测试，只要能测出延迟，就代表节点可用，如果测不出或超时，则可用性未知。\n\n需要注意的是 `延迟` 跟 `速度` 并不是同一个概念，比如说同一个服务器上使用 QUIC 的 outbound 和一个使用 TCP 的 outbound，QUIC outbound 一般会有较低的延迟，但实际速度有可能比 TCP 慢。\n\n## 规则集\n规则集目前支持以下配置项：\n- RoutingRule（等同于 Rule，路由规则配置）\n  - DOMAIN-KEYWORD（路由中的 `纯字符串`）\n  - DOMAIN-SUFFIX（路由中的 `子域名`）\n  - DOMAIN-FULL（路由中的 `完整匹配`）\n  - DOMAIN（同上，等效）\n  - IP-CIDR（路由中的 IP 或 CIDR 规则）\n  - PORT\n  - GEOIP（路由中的 GeoIP 规则）\n  - FINAL（根据域名策略，生成 network 规则 (`network: \"tcp,udp\"`) 或者 `IP 规则`(`ip: [\"0.0.0.0\u002F0\", \"::\u002F0\"]`) 作为一条默认出口规则）\n- RoutingDomainStrategy（路由域名策略）\n- FreedomDomainStrategy（Freedom outbound 域名策略）\n- LocalPolicy（本地策略）\n  - handshake\n  - connIdle\n  - uplinkOnly\n  - downlinkOnly\n  - bufferSize\n- DnsServer（V2Ray 内建 DNS 服务器配置）\n- DnsRule（内建 DNS 中的域名规则，跟路由规则配置方式一样）\n  - DOMAIN-KEYWORD\n  - DOMAIN-SUFFIX\n  - DOMAIN-FULL\n  - DOMAIN\n- DnsHost（内建 DNS 的 hosts）\n- DnsClientIp（内建 DNS 中的 clientIp）\n- Log\n  - loglevel（V2Ray 的日志等级）\n- PerAppVpn（可选配置 On\u002FOff，控制是否启用分应用代理功能，一旦应用，将覆盖到“设置”中）\n- PerAppMode（可选配置 Allow\u002FDisallow，对应分应用代理模式，一旦应用，将覆盖到“设置”中）\n- PerAppAllow（正则表达式列表，一行一个表达式，匹配应用包名称，匹配到的应用将会加入到分应用代理的“允许列表”，一旦应用，将覆盖到“设置”中）\n- PerAppDisallow（正则表达式列表，一行一个表达式，匹配应用包名称，匹配到的应用将会加入到分应用代理的“不允许列表”，一旦应用，将覆盖到“设置”中）\n\n更多关于规则集的示例及说明可以看这里：https:\u002F\u002Fgithub.com\u002Feycorsican\u002Frule-sets\n\n内置规则：\n- `geosite` 规则取自：https:\u002F\u002Fgithub.com\u002Fv2ray\u002Fdomain-list-community\n- `geoip` 规则为 MaxMind 的 GeoLite2，取自：https:\u002F\u002Fgithub.com\u002Fv2ray\u002Fgeoip\n\n第三方规则：\n- 兼容的第三方规则集，一般包含拦截广告、统计行为、隐私跟踪相关的规则：https:\u002F\u002Fgithub.com\u002FConnersHua\u002FProfiles\n\n## DNS 处理\n自 v1.0.0 起，默认的 DNS 处理方式为 Fake DNS，启用 Fake DNS 后，DNS 请求的流量几乎不会被传进 V2Ray，所以 V2Ray 的 `内置 DNS` 和 `DNS outbound` 配置不会起太大作用；当 Fake DNS 处于禁用状态，DNS 请求的流量会以正常 UDP 流量的形式进入 V2Ray，这时你可以使用 inbound tag 在路由中配置路由规则来识别出相应 DNS 流量，从而转发给 `DNS outbound`，从而让 V2Ray 的 `内置 DNS` 来处理（看下面配置示例）。\u003Cdel>如果使用自定义配置的同时开启 Fake DNS，则需要确保 freedom outbound 中的域名策略为 `非 AsIs`。\u003C\u002Fdel>\n\n\u003Cdel>为什么启用了 Fake DNS 后，freedom outbound 一定要用 `非 AsIs` 策略呢？如果你不熟悉 `Fake DNS` 怎么工作，可以看看 [这篇文章](https:\u002F\u002Fmedium.com\u002F@TachyonDevel\u002F%E6%BC%AB%E8%B0%88%E5%90%84%E7%A7%8D%E9%BB%91%E7%A7%91%E6%8A%80%E5%BC%8F-dns-%E6%8A%80%E6%9C%AF%E5%9C%A8%E4%BB%A3%E7%90%86%E7%8E%AF%E5%A2%83%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8-62c50e58cbd0)。\n启用 `Fake DNS` 后，本地的系统 DNS 缓存是被染污了的，如果 freedom outbound 用了 AsIs，对于那些非代理的域名请求，到了 freedom outbound 的时候，如果用系统 DNS 去解析（`AsIs` 策略），得到的 DNS 结果将会是被染污了不可用的 IP，会导致直连的请求发不出去。为了避免这个问题，方法就是让 freedom outbound 不使用系统的 DNS，也即不使用 `AsIs`，转而使用 V2Ray 的 `内置 DNS`（`UseIP` 策略）。\u003C\u002Fdel>目前看来使用 `AsIs` 也并不影响正常使用，我并没深究原因，意见保留。\n\nFake DNS 跟 V2Ray 的 `流量探测` 在效果上非常相似，目的同样是要拿到请求的域名，但工作原理上有较大差异：\n- Fake DNS\n  - 适用于任何请求的流量\n  - 对于走代理的请求，本地不会实际发出任何 DNS 请求流量（远程 DNS 解析）\n  - 会染污本地 DNS 缓存，VPN 关掉后的短暂时间内，可能会导致网络请求异常\n- `流量探测`\n  - 只适用 http\u002Ftls 流量\n  - 不能控制本地是否发出 DNS 请求流量（由 V2Ray 的 DNS 功能模块控制）\n\nFake DNS 与 流量探测都是解决 DNS 染污的方式，必须二选一，否则遇到 DNS 污染会导致一些 app 无法使用。\n\n## 配置示例\n\n```json\n{\n    \"dns\": {\n        \"clientIp\": \"115.239.211.92\",\n        \"hosts\": {\n            \"localhost\": \"127.0.0.1\"\n        },\n        \"servers\": [\n            \"114.114.114.114\",\n            {\n                \"address\": \"8.8.8.8\",\n                \"domains\": [\n                    \"google\",\n                    \"android\",\n                    \"fbcdn\",\n                    \"facebook\",\n                    \"domain:fb.com\",\n                    \"instagram\",\n                    \"whatsapp\",\n                    \"akamai\",\n                    \"domain:line-scdn.net\",\n                    \"domain:line.me\",\n                    \"domain:naver.jp\"\n                ],\n                \"port\": 53\n            }\n        ]\n    },\n    \"log\": {\n        \"loglevel\": \"warning\"\n    },\n    \"outbounds\": [\n        {\n            \"protocol\": \"vmess\",\n            \"settings\": {\n                \"vnext\": [\n                    {\n                        \"address\": \"1.2.3.4\",\n                        \"port\": 10086,\n                        \"users\": [\n                            {\n                                \"id\": \"0e8575fb-a71f-455b-877f-b74e19d3f495\"\n                            }\n                        ]\n                    }\n                ]\n            },\n            \"streamSettings\": {\n                \"network\": \"tcp\"\n            },\n            \"tag\": \"proxy\"\n        },\n        {\n            \"protocol\": \"freedom\",\n            \"settings\": {\n                \"domainStrategy\": \"UseIP\"\n            },\n            \"streamSettings\": {},\n            \"tag\": \"direct\"\n        },\n        {\n            \"protocol\": \"blackhole\",\n            \"settings\": {},\n            \"tag\": \"block\"\n        },\n\t{\n\t    \"protocol\": \"dns\",\n\t    \"tag\": \"dns-out\"\n\t}\n    ],\n    \"policy\": {\n        \"levels\": {\n            \"0\": {\n                \"bufferSize\": 4096,\n                \"connIdle\": 30,\n                \"downlinkOnly\": 0,\n                \"handshake\": 4,\n                \"uplinkOnly\": 0\n            }\n        }\n    },\n    \"routing\": {\n        \"domainStrategy\": \"IPIfNonMatch\",\n        \"rules\": [\n            {\n                \"inboundTag\": [\"tun2socks\"],\n                \"network\": \"udp\",\n                \"port\": 53,\n                \"outboundTag\": \"dns-out\",\n                \"type\": \"field\"\n            },\n            {\n                \"domain\": [\n                    \"domain:setup.icloud.com\"\n                ],\n                \"outboundTag\": \"proxy\",\n                \"type\": \"field\"\n            },\n            {\n                \"ip\": [\n                    \"8.8.8.8\u002F32\",\n                    \"8.8.4.4\u002F32\",\n                    \"1.1.1.1\u002F32\",\n                    \"1.0.0.1\u002F32\",\n                    \"9.9.9.9\u002F32\",\n                    \"149.112.112.112\u002F32\",\n                    \"208.67.222.222\u002F32\",\n                    \"208.67.220.220\u002F32\"\n                ],\n                \"outboundTag\": \"proxy\",\n                \"type\": \"field\"\n            },\n            {\n                \"ip\": [\n                    \"geoip:cn\",\n                    \"geoip:private\"\n                ],\n                \"outboundTag\": \"direct\",\n                \"type\": \"field\"\n            },\n            {\n                \"outboundTag\": \"direct\",\n                \"port\": \"123\",\n                \"type\": \"field\"\n            },\n            {\n                \"domain\": [\n                    \"domain:pstatp.com\",\n                    \"domain:snssdk.com\",\n                    \"domain:toutiao.com\",\n                    \"domain:ixigua.com\",\n                    \"domain:apple.com\",\n                    \"domain:crashlytics.com\",\n                    \"domain:icloud.com\",\n                    \"cctv\",\n                    \"umeng\",\n                    \"domain:weico.cc\",\n                    \"domain:jd.com\",\n                    \"domain:360buy.com\",\n                    \"domain:360buyimg.com\",\n                    \"domain:douyu.tv\",\n                    \"domain:douyu.com\",\n                    \"domain:douyucdn.cn\",\n                    \"geosite:cn\"\n                ],\n                \"outboundTag\": \"direct\",\n                \"type\": \"field\"\n            },\n            {\n                \"ip\": [\n                    \"149.154.167.0\u002F24\",\n                    \"149.154.175.0\u002F24\",\n                    \"91.108.56.0\u002F24\",\n                    \"125.209.222.0\u002F24\"\n                ],\n                \"outboundTag\": \"proxy\",\n                \"type\": \"field\"\n            },\n            {\n                \"domain\": [\n                    \"twitter\",\n                    \"domain:twimg.com\",\n                    \"domain:t.co\",\n                    \"google\",\n                    \"domain:ggpht.com\",\n                    \"domain:gstatic.com\",\n                    \"domain:youtube.com\",\n                    \"domain:ytimg.com\",\n                    \"pixiv\",\n                    \"domain:pximg.net\",\n                    \"tumblr\",\n                    \"instagram\",\n                    \"domain:line-scdn.net\",\n                    \"domain:line.me\",\n                    \"domain:naver.jp\",\n                    \"domain:facebook.com\",\n                    \"domain:fbcdn.net\",\n                    \"pinterest\",\n                    \"github\",\n                    \"dropbox\",\n                    \"netflix\",\n                    \"domain:medium.com\",\n                    \"domain:fivecdm.com\"\n                ],\n                \"outboundTag\": \"proxy\",\n                \"type\": \"field\"\n            }\n        ],\n        \"strategy\": \"rules\"\n    }\n}\n```\n","Kitsunebi 是一款专为 Android 设计的全功能 V2Ray 客户端。它支持生成和导入面向协议格式的 URI 和二维码，方便用户快速配置。项目的一大亮点是其负载均衡策略，能够根据节点延迟自动选择最快的节点，并提供了详细的自定义配置选项来优化测速过程。此外，Kitsunebi 还具备强大的规则集管理能力，支持多种路由规则、域名策略及本地策略设置，满足不同场景下的需求。适用于需要通过 V2Ray 实现安全稳定网络连接的个人或企业用户，特别是在对网络速度和稳定性有较高要求的情况下使用。",2,"2026-06-11 03:13:14","top_language"]