Leonid PershinandClaude Opus 5 f905a76caf feat: сборка geosite для ipcheck-доменов в нескольких форматах
Собирает список сервисов проверки IP (ip-lookup, leak-test, geoip-db,
fraud-score) в geosite.dat для Xray/3x-ui, а также в sing-box, Clash/mihomo,
AdGuard, plain text и JSON.

Сборщик на чистой стандартной библиотеке: пишет protobuf вручную, после
записи разбирает .dat обратно и сверяет с исходником. Формат сверен с
настоящим geosite.dat и проверен реальным Xray 26.3.27.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 14:11:06 +03:00

ipcheck-domains

Список доменов сервисов, которые определяют и проверяют IP-адрес: «какой у меня IP», тесты утечек DNS/WebRTC, GeoIP-базы и скоринг прокси/VPN.

Собирается в несколько форматов. Основной — geosite.dat (protobuf v2ray/Xray) для 3x-ui. Сборка идёт автоматически при каждом изменении data/ и раз в сутки по расписанию.

Категории

Категория Что внутри
ipcheck всё вместе — то, что обычно и нужно в роутинге
ip-lookup «какой у меня IP»: 2ip, whoer, ipinfo, ifconfig.me, ipify…
leak-test тесты утечек: browserleaks, ipleak, dnsleaktest
geoip-db GeoIP-базы и справочники: maxmind, db-ip, ip2location…
fraud-score детекторы VPN/прокси: spur, scamalytics, ipqualityscore…

Скачать

Ветка release обновляется при каждой сборке — ссылки стабильны:

https://raw.githubusercontent.com/mrleo1nid/ipcheck-domains/release/<путь>
Файл Для чего
ipcheck.dat Xray / v2ray / 3x-ui — кладётся рядом со штатным geosite.dat
geosite.dat то же самое, но именем по умолчанию — если хотите заменить штатный файл
sing-box/<категория>.srs sing-box, скомпилированный rule-set
sing-box/<категория>.json sing-box, исходный rule-set
mihomo/<категория>.mrs mihomo, бинарный rule-provider
clash/<категория>.yaml Clash/mihomo rule-provider, behavior: domain
clash/<категория>.list Clash/mihomo rule-provider, behavior: classical
txt/<категория>.txt просто домены, по одному на строку
json/<категория>.json структурированный список с типами правил
adguard/<категория>.txt AdGuard Home / uBlock — если нужно блокировать, а не роутить
metadata.json время сборки, счётчики, sha256

Плюс каждая сборка публикуется как GitHub Release с датой в теге.

3x-ui

Файл кладётся туда же, где лежат geoip.dat и geosite.dat панели. Обычно это /usr/local/x-ui/bin (панель, установленная скриптом) или /usr/local/share/xray:

curl -fsSL -o /usr/local/x-ui/bin/ipcheck.dat https://raw.githubusercontent.com/mrleo1nid/ipcheck-domains/release/ipcheck.dat

Дальше в панели: Xray Settings → Routing Rules → Add Rule, поле domain:

ext:ipcheck.dat:ipcheck

и нужный outboundTag. Тем же правилом в JSON-конфиге:

{
  "type": "field",
  "domain": ["ext:ipcheck.dat:ipcheck"],
  "outboundTag": "proxy"
}

Если вы заменили штатный geosite.dat нашим файлом, синтаксис короче — geosite:ipcheck. Отдельные категории адресуются так же: ext:ipcheck.dat:leak-test.

После замены файла Xray нужно перезапустить (в 3x-ui — Restart Xray).

sing-box

{
  "route": {
    "rules": [{ "rule_set": "ipcheck", "outbound": "proxy" }],
    "rule_set": [
      {
        "type": "remote",
        "tag": "ipcheck",
        "format": "binary",
        "url": "https://raw.githubusercontent.com/mrleo1nid/ipcheck-domains/release/sing-box/ipcheck.srs",
        "download_detour": "direct"
      }
    ]
  }
}

Clash / mihomo

rule-providers:
  ipcheck:
    type: http
    behavior: domain
    format: yaml
    url: "https://raw.githubusercontent.com/mrleo1nid/ipcheck-domains/release/clash/ipcheck.yaml"
    path: ./ruleset/ipcheck.yaml
    interval: 86400

rules:
  - RULE-SET,ipcheck,PROXY

Для .mrs укажите behavior: domain и format: mrs.

Как добавить домен

Правьте файлы в data/ — по одному домену на строку, в подходящую категорию. Всё остальное соберётся само.

Формат строки (тот же, что у v2fly/domain-list-community):

example.com            # домен и все его поддомены (тип по умолчанию)
domain:example.com     # то же самое, явно
full:www.example.com   # только этот хост, без поддоменов
keyword:ipcheck        # подстрока в имени
regexp:^ip[0-9]+\.com$ # регулярное выражение
include:ip-lookup      # подключить другую категорию целиком
example.com @ads       # атрибут — попадёт в .dat как geosite:ipcheck@ads

Пустые строки и всё после # игнорируются.

Локальная сборка

Нужен только Python 3.10+, зависимостей нет:

python tools/build.py

Результат — в dist/. Проверка исходников без сборки (синтаксис, дубликаты, домены, уже покрытые родительским суффиксом, циклические include):

python tools/build.py --check

.srs и .mrs собираются, только если в PATH есть sing-box и mihomo — без них остальные форматы всё равно соберутся. Пути можно указать явно:

python tools/build.py --sing-box ./bin/sing-box --mihomo ./bin/mihomo

Сборщик проверяет сам себя: после записи geosite.dat он разбирает файл обратно и сверяет с исходником. В CI дополнительно поднимается настоящий Xray с правилом ext:geosite.dat:ipcheck — если файл не читается, сборка падает.

Лицензия

MIT. Список доменов — общедоступные факты, используйте как угодно.

S
Description
No description provided
Readme MIT
97 KiB
2026-09-20 03:18:25 +00:00
Languages
Python 79%
Shell 21%