Sleepstars 的记录室

Sleepstars 的记录室

Surge 使用 GeoSite/GeoIP 教程

2025-09-22

项目地址

GitHub 主页截图

项目背景

什么促成了这个项目

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 的优势

  • 细粒度分类:支持按产品、地域、用途等多维度组织;域名规则分为 domainfullregexp;IP 支持 IPv4 与 IPv6 分离,组合灵活。

  • 覆盖广、更新快:数据来源于活跃社区,持续更新,分类体系不断完善。

  • 策略更精准:可按需挑选细小集合,降低误匹配,使路由和分流更符合实际需求。

能力一览

  • GeoSite 域名规则:按需输出 Surge 纯文本规则或打包 SRS 文件

  • GeoIP IP/CIDR 规则:支持仅 IPv4(@v4)或仅 IPv6(@v6)

  • 前端浏览/搜索:按分类浏览、关键词搜索、属性过滤(如 cn、!cn)

  • 程序化接口:列表索引、规则明细、快速/全面搜索

注意:生成的 Surge 纯文本规则中会跳过正则(regexp)类规则,避免过宽的匹配。Sing-box 不受影响

快速上手

  1. 选择需要的数据集

  • 在前端页面浏览名称: https://geo.sleepstars.de

  • 或按名称直接请求:

  • GeoSite:GET https://direct.sleepstars.de/geosite/<name>[@filter]

  • GeoIP: GET https://direct.sleepstars.de/geoip/<name>[@v4|@v6]

  1. 立即获取规则(示例)

# 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
  1. 接入到客户端

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 查看对应内容

sing-box 官网 srs 使用方法截图

Web 前端用法

  1. 打开 https://geo.sleepstars.de

  2. 左侧树按类别浏览规则组;右侧实时显示条目

Geosite Exploer 界面预览截图

  1. 搜索支持:

    • 快速搜索(域名后缀/主机名匹配)

    • 全面搜索(更宽松的关键词与正则等)

域名匹配图

  1. 顶部可用属性过滤(如 cn!cn)来缩小结果

  2. 直接复制规则链接或获取对应 SRS 下载链接

常见问题(FAQ)

  • 返回 404?请先核对名称是否存在;若刚同步完数据,稍后重试即可。

  • 名称大小写?接口会自动转换(如 APPLE/apple)。

  • 属性过滤?

    • 纯文本 /geosite/<name>@<attr> 仅支持单一属性(如 @cn@!cn)。

  • 为什么有些规则缺失?为避免误伤,纯文本输出会跳过正则(regexp)规则。

  • GeoIP 过滤?支持 @v4/@ipv4@v6/@ipv6