2021-08-12 17:06:44
Пояснение: Данный опрос связан с тем, что midsession стал главной проблемой как для пользователей приложения, так и вообще для пользователей Wi-Fi в Москве (в СПб, вроде, с этим проще). У меня на почте уже десятки писем, где проблема одна и та же: "приложение пишет, что подключено, но доступа в интернет нет".
Я попробовал разные методы 'обратно обмануть' систему:
1) Сделал свою простую реализацию CaptivePortalLogin, которая с помощью Java Reflection API сообщала системе, что подключение есть;
2) Попытался предотвратить подмену DNS с помощью Private DNS;
3) Использовал VpnService с той же целью - защитить DNS или вмешаться в системную проверку соединения с интернетом;
Эти три метода не сработали, т.к. системная проверка соединения их игнорирует (логично, но попробовать стоило).
Остались следующие методы:
1) Всем перейти на Android 11 и выше, который проверяет соединение не только по HTTP, но и по HTTPS (как это делает приложение уже очень давно);
2) Защитить системный DNS от провайдера в надежде на то, что он не перехватит запрос generate_204 к настоящему серверу;
3) Сменить адрес проверки generate_204;
4) Полностью отключить проверку generate_204;
3-й и 4-й варианты являются наиболее простыми и надёжными, но требуют либо права root на устройстве, либо компьютер с ADB и режим разработчика.
TLDR: Если у вас есть root, то я могу прямо в приложении сделать кнопку, которая исправит проверку generate_204. Если root нет, то могу написать, как это сделать с помощью любого ПК (там всё не так сложно).
1.1K viewsДмитрий Карих, 14:06