Skip to content
xadohoPublic

About

Android-приложение: проверяет, какие сайты реально открываются у вашего провайдера, и называет причину — блок по SNI, подмена DNS, блок по IP, «заморозка 16 КБ», геоблок сервиса. 567 сайтов, пинг ICMP/TCP, бережный темп. Kotlin + Compose.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

XadoPing

Android-приложение, которое честно проверяет, какие сайты открываются у вас прямо сейчас — у вашего провайдера или мобильного оператора, — и показывает, почему не открываются остальные.

Не просто «работает / не работает»: для каждого сайта видно, на каком шаге ломается доступ — DNS, соединение, шифрование или загрузка страницы, — и чем это вызвано: блокировкой по SNI, подменой DNS, блоком по IP, «заморозкой» ТСПУ или геоблоком со стороны самого сервиса.

Скачать APK · Android 10+ · Канал: t.me/xadohot

Обзор Идёт проверка Список сайтов Карточка сайта

История Настройки Светлая тема

На скриншотах — демонстрационные данные.

Возможности

  • 567 сайтов в 17 категориях: соцсети, мессенджеры, видео, музыка, ИИ-сервисы, СМИ, VPN, разработка, игры, магазины, финансы и другие. Около 20% — заведомо не запрещённые сайты, для сравнения. Можно добавить свои, в том числе кириллические домены и адреса с портом.
  • Причина для каждого сайта: блокировка по SNI, подмена DNS, нет соединения по IP, сброс соединения, «заморозка 16 КБ», заглушка провайдера, геоблок сервиса, ошибка сервера и другие — всего 22 итога с объяснением простыми словами.
  • Шаги проверки в карточке сайта: DNS провайдера, DNS-over-HTTPS, TCP, TLS, ответ сервера, загрузка — с временем каждого шага.
  • Пинг: ICMP-пакеты без root или время TCP-соединения, живой график, минимум/среднее/максимум, джиттер и потери.
  • Фильтры по статусу, категории и ожиданию, поиск, избранное, сортировка, фильтр «Расхождения» — когда «запрещённый» сайт вдруг открылся или «открытый» перестал.
  • Выводы: подсказывает, если включён VPN или личный DNS, если провайдер режет по SNI или подменяет DNS, и если похоже на режим «белых списков» у оператора.
  • История проверок и что изменилось с прошлого раза, экспорт в CSV и отчёт текстом.
  • Проверка продолжается в фоне с уведомлением и кнопкой «Остановить».
  • Тёмная, светлая и AMOLED-тема, шесть цветовых акцентов, настраиваемые анимации.

Без рекламы, регистрации и сбора статистики.

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

Каждый сайт проверяется так же, как его открыл бы браузер, а на каждом сбое ставится контрольный опыт, который отделяет блокировку от обычной поломки:

Шаг Что делается Что это выявляет
DNS провайдера Адрес сайта через системный резолвер (DnsResolver), с замером времени Пустой ответ, NXDOMAIN, адреса-заглушки
DNS-over-HTTPS Тот же запрос к Cloudflare / Google / Quad9 по зашифрованному каналу Если адреса разошлись и адрес провайдера мёртв, а настоящий отвечает — подмена DNS
Пинг ICMP через «пинг-сокеты» Linux, без root; если ответа нет — время TCP-рукопожатия Задержка до сервера даже у заблокированного сайта
TCP Соединение с портом 443 Тишина — блок по IP, мгновенный RST — сброс
TLS Рукопожатие с именем сайта в SNI Если оборвалось — повтор на тот же IP с другим именем. Прошло — DPI режет по SNI
Страница Один запрос главной по HTTP/1.1, до трёх редиректов Заглушка провайдера, геоблок сервиса (451, «not available in your country»), защита от ботов, ошибки 5xx
Загрузка Счёт байт первых 32–128 КБ Поток замер на 4–32 КБ — «заморозка» ТСПУ; низкая скорость — замедление

Неоднозначные сбои перепроверяются повторно, а если во время проверки пропала сеть — сайт не помечается заблокированным, приложение ждёт сеть и проверяет заново.

Бережность к сайтам

Проверка не должна выглядеть как атака:

  • на каждый сайт — один запрос страницы и 1–3 TCP-соединения;
  • ограничено число одновременных проверок (по умолчанию 10) и новых в секунду (по умолчанию 8);
  • поддомены одного сайта проверяются строго по очереди с паузой;
  • один и тот же сайт — не чаще раза в 8 секунд;
  • «Бережный режим» снижает нагрузку ещё сильнее: 4 проверки одновременно, 3 новых в секунду.

Нагрузка на любой отдельный сайт — как от одного посетителя.

Установка

Скачайте XadoPing-1.0.apk со страницы Releases, откройте файл на телефоне и разрешите установку. Нужен Android 10 или новее.

Для честной картины по провайдеру отключите VPN перед проверкой — иначе приложение покажет доступность через VPN.

Сборка из исходников

Нужны JDK 17 и Android SDK (platform 36, build-tools 35).

git clone https://github.com/xadoho/XadoPing.git
cd XadoPing
./gradlew assembleDebug        # отладочная сборка
./gradlew testDebugUnitTest    # тесты

Для релиза положите в корень keystore.properties со своим ключом:

storeFile=my-release.jks
storePassword=...
keyAlias=...
keyPassword=...

и выполните ./gradlew assembleRelease. Без этого файла релиз подписывается отладочным ключом.

Тесты движка поднимают настоящие TLS-серверы на 127.0.0.1 — обычный сайт, «DPI», режущий рукопожатие по SNI, сервер с «заморозкой» потока, геоблок, подмену DNS — и проверяют, что каждый случай распознаётся правильно. В сеть тесты не выходят.

Стек

Kotlin, Jetpack Compose, Material 3, Navigation Compose, kotlinx.coroutines, kotlinx.serialization. Сетевая часть написана без сторонних библиотек: DNS-over-HTTPS (RFC 8484), ICMP, TLS и HTTP/1.1 — вручную, ради точных замеров.

app/src/main/java/com/xadoping/app/
├── probe/    движок проверки: DNS, DoH, ICMP, TLS, HTTP, классификатор
├── scan/     планировщик с ограничением темпа
├── data/     каталог, настройки, результаты, история
├── net/      состояние сети: тип, VPN, личный DNS
└── ui/       экраны и компоненты
app/src/main/assets/sites.txt   каталог сайтов: категория|домен|название|ожидание

Лицензия

MIT. Шрифт Inter — SIL Open Font License 1.1.


Автор — Xadoho · t.me/xadohot

About

Android-приложение: проверяет, какие сайты реально открываются у вашего провайдера, и называет причину — блок по SNI, подмена DNS, блок по IP, «заморозка 16 КБ», геоблок сервиса. 567 сайтов, пинг ICMP/TCP, бережный темп. Kotlin + Compose.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages