Find a file
2026-06-18 04:03:59 +05:00
.github ci: ignore .dockerbuild 2026-06-06 03:43:31 +05:00
frontend feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
probe feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
querying feat: caching (#76) 2026-06-18 03:48:45 +05:00
reporter feat!: svelte rewrite (#68) 2026-05-28 22:34:50 +05:00
reports feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
rmqtt feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
website fix: permissions 2026-06-18 04:03:59 +05:00
.dockerignore feat!: svelte rewrite (#68) 2026-05-28 22:34:50 +05:00
.gitignore fix: permissions 2026-06-18 04:03:59 +05:00
biome.json feat!: svelte rewrite (#68) 2026-05-28 22:34:50 +05:00
Cargo.lock feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
Cargo.toml feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
Cross.toml feat: build deb (#3) 2025-12-12 05:26:52 +05:00
docker-compose.yaml fix: permissions 2026-06-18 04:03:59 +05:00
LICENSE initial commit 2025-11-19 21:52:35 +05:00
nginx.conf feat: dynamic probing (#71) 2026-06-06 03:03:48 +05:00
README.md feat: caching (#76) 2026-06-18 03:48:45 +05:00

Cheburcheck Logo Cheburcheck.ru

Cheburcheck.ru — open-source сервис для проверки доменов и IP-адресов на наличие в списках блокировок Роскомнадзора и популярных заблокированных CDN-провайдеров.


О проекте

Этот сервис реализован на языке Rust с использованием веб-фреймворка Rocket.rs. Основная задача — проверять, заблокирован ли домен или IP-адрес, основываясь на актуальных данных из реестров Роскомнадзора и других источниках.


Технологии

  • Rust — язык программирования, на котором написан весь бекенд.
  • Rocket.rs — веб-фреймворк для построения HTTP API и серверной логики.
  • DoH резолвер Quad9 — для разрешения DNS-запросов используется DNS-over-HTTPS, что позволяет обойти локальные ограничения и получать актуальные данные.
  • SvelteKit — SSR-фронтенд, который запускается отдельным Node.js сервисом.
  • nginx — публичная точка входа, проксирует API в Rocket, а страницы в SvelteKit.
  • lucide — библиотека иконок, применяемая для визуального оформления интерфейса.

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

  1. Пользователь вводит домен или IP-адрес в форму на сайте.
  2. Сервер выполняет DNS-запрос через Quad9 DoH для получения актуальной информации.
  3. Полученный домен/IP проверяется на наличие в блокировочных списках через префиксные деревья.
  4. Результат возвращается через API и отображается SSR-фронтендом SvelteKit.

Списки

Для проверки используются списки 123jjck/cdn-ip-ranges, antifilter.download и antifilter.network.

Мы собираем собственные белые списки с помощью Cheburcheck Reporter.


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

  • querying — модуль проверки сайтов по базам данных
  • reporterCheburcheck Reporter
  • reports — общий протокол для отправки отчетов
  • website — Rocket API и серверная логика
  • probeCheburcheck Probe
  • frontend — SvelteKit SSR-интерфейс

Запуск через Docker Compose

docker compose up --build

По умолчанию nginx слушает http://localhost:8080. Порт можно изменить через HTTP_PORT, например:

HTTP_PORT=80 docker compose up --build

Маршрутизация:

  • /api/v1/*, /agency/*, /whitelist/* идут в Rocket
  • остальные запросы идут в SvelteKit SSR

Базы проверок кешируются в database-cache/. Путь можно изменить через DATABASE_CACHE_DIR, основной интервал обновления — через DATABASE_INTERVAL_SECONDS, а интервал повтора после ошибки скачивания — через DATABASE_RETRY_INTERVAL_SECONDS (по умолчанию 300 секунд).


Вклад

Если хотите помочь с разработкой — открывайте issue или присылайте pull requests. Если хотите помочь финансово:

  • TON: UQAACsiwpGryjP-kqp4TJPAWpXytuB6M_puuO0Cg5zNvaSJW

Контакты

Для вопросов и обсуждений можно написать на support@cheburcheck.ru.