feat(detect): six competitor-derived VPN/proxy detectors#74
Merged
Conversation
…ale/svpn/gre/l2tp/he-ipv6)
…, propagate needsReview
…(loopback, opt-in)
…IP leak detection
…(SERVICE/PLATFORM/LEGACY/OEM)
|
xtclovver
added a commit
that referenced
this pull request
Jun 11, 2026
Подготовка релиза v2.9.0 (versionCode 20900). - Добавлены fastlane changelog 20900.txt для en-US/ru-RU/fa/zh-CN, охватывающие коммиты #73/#74/#75 (6 детекторов VPN/прокси, детектор эмулятора/изоляции, профили маркетплейса, Ed25519-подпись каталога, фиксы). - README (все 4 локали) синхронизированы с новыми детекторами: дерево архитектуры, паттерны интерфейсов (4.2), BypassChecker (Clash API + SOCKS5-auth, 6.4), NativeSignsChecker (TUN/TAP по типу, host-route /32, эмулятор, изоляция, 12.1-12.4), тип VPN-транспорта (3.1). - build.gradle.kts: versionCode 20802 -> 20900, versionName 2.8.2 -> 2.9.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Добавляет шесть детекторов VPN/proxy, заимствованных из проектов
youtubediscord/yourvpndeadиcherepavel/VPN-Detector, интегрированных в существующую архитектуру (VerdictEngine,VpnCheckRunner,EvidenceSource). Каждая фича разработана по TDD, прошла spec- и code-quality-ревью, плюс финальный холистический ревью.Детекторы
NetworkInterfacePatterns) — добавленыutun/zt/tailscale/svpn/gre/l2tp/he-ipv6;xfrmнаправлен через IPsec-дизамбигуацию (не hard VPN), чтобы не давать ложных срабатываний на операторском VoLTE/IMS.DirectSignsChecker) — классификацияVpnTransportInfo.getType()→ SERVICE/PLATFORM/LEGACY/OEM (по константам AOSP). Диагностическое, на вердикт не влияет.NativeSignsChecker,NativeInterfaceProbe) — детект /32 (IPv6 /128) маршрута к публичному IP VPN-сервера через физический интерфейс (утечка IP сервера). Сигнал NATIVE_ROUTE → R5 indirect. ПереиспользуетUrlSanitizer.isPublicAddress.ProxyProber/ProxyScanner/BypassChecker) — словарь слабых учёток (RFC 1929) + UDP associate bypass (RFC 1928). Строго loopback, opt-in (toggle default false). Новый PROXY_AUTH_BYPASS → R1 hard DETECT.ClashApiClient/ClashApiScanner/BypassChecker) — пассивный REST-probe localhost (порты 9090/19090/9091/9097), вытаскивает реальные destination IP VPN-серверов из/connections. Новый CLASH_API → R1 hard DETECT.native_signs_probe.cpp→ JNI →NativeSignsChecker) — детект ARPHRD_TUNTAP по/sys/class/net/<iface>/typeнезависимо от имени интерфейса. Сигнал NATIVE_INTERFACE → R5 indirect.Все новые user-facing строки локализованы на en/ru/fa/zh-rCN.
Также включены два независимых коммита мейнтейнера: исправление отображения marketplace и fastlane icon/screenshots.
Known follow-ups (не блокеры)
bypassCheckлямбды вVpnCheckRunnerвBypassCheckParamsdata class (накопленный smell от фич 4+5; порядок параметров верифицирован корректным).VerdictNarrativeне отражает Clash-детекцию в structured discovered-секции (асимметрия с Xray); CLASH_API findings рендерятся через общий путь.leakedDestIpsиз Clash не интегрированы вIpConsensusBuilder(другая ось — destination IP, не observed public IP; намеренно пропущено).Test Plan
./gradlew testDebugUnitTest— все юнит-тесты проходят./gradlew assembleDebug lint— сборка (включая native CMake для arm64-v8a/armeabi-v7a/x86_64) и lint без ошибок