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






