Перейти к основному содержимому

srscdat — генератор geosite.dat из списков Shadowrocket

·382 слов·2 минут·
logo

В Shadowrocket Simple Config у меня лежат списки доменов для маршрутизации трафика. Но некоторые прокси-клиенты (Xray, Clash, Mihomo) работают не с текстовыми списками, а с бинарным форматом geosite.dat. Чтобы не конвертировать руками, сделал автоматический генератор.

Что такое geosite.dat?
#

geosite.dat — это protobuf-файл, который используется в ядрах Xray/v2Ray/Clash для компактного хранения и быстрого поиска доменов по категориям. Вместо правил в конфиге пишется что-то тип такого:

rules:
  - GEOSITE,MAIN,PROXY
  - GEOSITE,RUDIRECT,DIRECT

А маршрутизатор сам проверяет домен по базе.

Зачем отдельный репозиторий?
#

Ручная конвертация — это Python, написать скрипт, запустить, проверить, загрузить куда-то. Кароче много дел.

Решение: отдельный репозиторий srscdat, который:

  1. Берёт списки из ShadowRocketSimpleConfig
  2. Конвертирует в формат domain-list-community
  3. Генерирует geosite.dat через официальный инструмент v2fly
  4. Публикует как GitHub Release с постоянной ссылкой

Как это работает
#

Всё построено на GitHub Actions:

on:
  workflow_dispatch:  # только вручную, без расписания

Процесс:

  1. Checkout srscdat и ShadowRocketSimpleConfig
  2. Клонирование domain-list-community (официальный генератор)
  3. Конвертация .list → формат нужный через convert.py
  4. Генерация geosite.dat через go run ./
  5. Публикация в Releases через softprops/action-gh-release

Структура проекта
#

srscdat/
├── .github/workflows/generate.yml  ← GitHub Actions
├── src/
│   ├── convert.py                  ← конвертер Shadowrocket → DLC
│   └── check.py                    ← проверка geosite.dat
├── data/                           ← промежуточные файлы (не коммитятся)
└── output/                         ← результат (не коммитится)

Категории в geosite.dat
#

На данный момент файл содержит 13 категорий:

КатегорияДоменовОписание
AI97ChatGPT, Claude, Gemini, Copilot
FITNESS4Спорт и здоровье
GAMES22Игровые платформы и CDN
MAIN254Соцсети, медиа, инструменты
MUSIC12Музыкальные стриминги
NEVAMESSENGER61Мессенджер
REDTUBE16RedTube и CDN
RUADS174Российская реклама и трекинг
RUBANKING671Российские банки
RUDIRECT337Российские локальные сервисы
RUIPCHECKER9Проверка IP
VIDEO41Видео стриминги
ZETASERVICES107Сервисы аналога ВК

Итого: 1805 доменов, ~33 КБ.

Как использовать
#

Постоянная ссылка (всегда ведёт на последнюю версию):

https://github.com/tatarinovms/srscdat/releases/latest/download/geosite.dat

В конфиге вашего клиента\сервера:

{
  "Geositeurl": "https://github.com/tatarinovms/srscdat/releases/latest/download/geosite.dat",
  "DirectSites": ["geosite:RUBANKING", "geosite:RUDIRECT"],
  "ProxySites": ["geosite:MAIN", "geosite:AI"],
  "BlockSites": ["geosite:RUADS"]
}

В Clash/Mihomo:

rule-providers:
  geosite:
    type: http
    behavior: domain
    url: https://github.com/tatarinovms/srscdat/releases/latest/download/geosite.dat
    path: ./geosite.dat
    interval: 86400

rules:
  - RULE-SET,geosite,DIRECT

Локальная генерация
#

Если не хочешь юзать GitHub Actions:

git clone https://github.com/tatarinovms/srscdat.git
cd srscdat
./update-geosite.sh --check

Требования: Python 3.6+, Go 1.21+, Git.

Репозиторий
#

Всё открыто: github.com/tatarinovms/srscdat

Если хочешь так же форкай и алга, поменяй ссылку на свои списки в generate.yml, запушъ. И теперь и у тебя есть автоматический генератор geosite.dat из любых списков Shadowrocket.

Related