Surge 使用 GeoSite/GeoIP 教程
编辑项目地址
项目 GitHub 主页:https://github.com/Sleepstars/Surge-Geosite-Enhance
前端浏览器: https://geo.sleepstars.de
规则接口基地址:
https://direct.sleepstars.de
项目背景
什么促成了这个项目
Surge 作为一个强大的网络调试工具,其规则匹配效率非常高,但是原生仅支持 GeoIP,不支持 GeoSite 的加载与使用。同时在前几个版本开始,另一个网络工具 Sing-box 也去除了官方的 Geo 系列的支持,转而使用其自己编写的更高效率的 .srs
的二进制格式。
为了更好的使用这两个软件,我决定自己动手完成规则转换和提供。经过搜索,我发现了来自 xxxbrian 大佬的 Surge-Geosite 项目。经过测试已经可以完全满足我对于规则转换的基本需求了,但是该项目是基于原版的 GeoSite,同时由于 Surge 不支持正则的局限性,像 ads 的正则只能转换为 wildcard 匹配,会造成匹配范围的扩大,反而丢失了项目细粒度的优势,所以还想要去除正则匹配。sing-box 则没有相关烦恼(支持 domain_regex 匹配)。虽然是 Fork 自 xxxbrian 的项目,但是实现原理已经基本完全不一致(使用 GitHub CI 流解包了 .dat 后再进行的规则拆分与规则组合、转换)
为什么不使用原版的 GeoSite/GeoIP
项目选用了 GitHub 产出的 GeoSite/GeoIP。该项目在原版的基础上,添加了更多更详细的数据,对重复的 CN 类型数据进行了去重划分。虽然不可避免的还是会有错漏去重,但是相较于原版项目,效果肯定是有提升的。
GeoSite 的局限性
Geo 系列的规则查询比较麻烦,因此我还顺便用 AI 糊了一个网页,便于我查询我需要的域名和 IP 规则。这里的前端样式参考了 https://geoviewer.aloxaf.com/ 这位大佬的设计,不过为了这个项目的长久存在,整体都是托管在 Cloudflare serverless 平台(D1 数据库、KV 键值对、R2 对象存储等),且数据写入是依赖于 CI 流程的,就不再支持自定义 .dat
上传了。同时额外支持了模糊搜索等功能(希望各位佬轻点草)
GeoSite 的优势
细粒度分类:支持按产品、地域、用途等多维度组织;域名规则分为
domain
、full
、regexp
;IP 支持 IPv4 与 IPv6 分离,组合灵活。覆盖广、更新快:数据来源于活跃社区,持续更新,分类体系不断完善。
策略更精准:可按需挑选细小集合,降低误匹配,使路由和分流更符合实际需求。
能力一览
GeoSite 域名规则:按需输出 Surge 纯文本规则或打包 SRS 文件
GeoIP IP/CIDR 规则:支持仅 IPv4(@v4)或仅 IPv6(@v6)
前端浏览/搜索:按分类浏览、关键词搜索、属性过滤(如 cn、!cn)
程序化接口:列表索引、规则明细、快速/全面搜索
注意:生成的 Surge 纯文本规则中会跳过正则(regexp)类规则,避免过宽的匹配。Sing-box 不受影响
快速上手
选择需要的数据集
在前端页面浏览名称: https://geo.sleepstars.de
或按名称直接请求:
GeoSite:
GET https://direct.sleepstars.de/geosite/<name>[@filter]
GeoIP:
GET https://direct.sleepstars.de/geoip/<name>[@v4|@v6]
立即获取规则(示例)
# GeoSite(附加属性过滤:@cn 或 @!cn)
curl -s https://direct.sleepstars.de/geosite/apple@cn | head
# GeoIP(仅 IPv4)
curl -s https://direct.sleepstars.de/geoip/cn@v4 | head
接入到客户端
Surge 示例
[Rule]
RULE-SET,https://direct.sleepstars.de/geosite/streaming,Streaming //流媒体规则
RULE-SET,https://direct.sleepstars.de/geosite/netflix@!cn,Netflix-Global //Netflix 规则
RULE-SET,https://direct.sleepstars.de/geoip/cn@v4,DIRECT //中国大陆 IPv4 直连
sing-box 示例
{
"type": "remote",
"tag": "geosite-apple-cn",
"format": "binary",
"url": "https://direct.sleepstars.de/srs-geosite/apple@cn.srs"
}
在路由中引用对应的 rule_set,并根据需要对 GeoIP 使用 https://direct.sleepstars.de/srs-geoip/<name>[@v4|@v6].srs
。
建议使用日志或 sing-box check
验证远程规则拉取状态。
由于唱歌盒子经常进行破坏性更新,建议更多查看官方 Wiki 查看对应内容
Web 前端用法
左侧树按类别浏览规则组;右侧实时显示条目
搜索支持:
快速搜索(域名后缀/主机名匹配)
全面搜索(更宽松的关键词与正则等)
顶部可用属性过滤(如
cn
、!cn
)来缩小结果直接复制规则链接或获取对应 SRS 下载链接
常见问题(FAQ)
返回 404?请先核对名称是否存在;若刚同步完数据,稍后重试即可。
名称大小写?接口会自动转换(如
APPLE
/apple
)。属性过滤?
纯文本
/geosite/<name>@<attr>
仅支持单一属性(如@cn
或@!cn
)。
为什么有些规则缺失?为避免误伤,纯文本输出会跳过正则(regexp)规则。
GeoIP 过滤?支持
@v4/@ipv4
与@v6/@ipv6
。
- 0
- 0
-
分享