Собирает список сервисов проверки 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>
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. Список доменов — общедоступные факты, используйте как угодно.