Size: a a a

Wi-Fi в метро

2021 August 12
Wi-Fi в метро
Пояснение: Данный опрос связан с тем, что 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 нет, то могу написать, как это сделать с помощью любого ПК (там всё не так сложно).
источник
2021 August 13
Wi-Fi в метро
427-я сборка #master!

#master!

* Gen204 теперь сообщает о false negative только один раз, при первом обнаружении. Это нужно, чтобы в следующих сборках приложение могло подсказать, как это исправить;

* Добавлена кнопка для исправления системной проверки generate_204 и решения проблемы с midsession. Включить эту функцию можно галочкой "Исправить системную проверку" ("Fix system-wide check") в секции "Captive Portal" в "Настройках подключения";

При установке галочки приложение запросит права root. Если прав root нет или доступ не был предоставлен, то будет показан диалог со ссылкой на инструкцию для ADB. Инструкция пока что находится в процессе написания, но основной принцип метода там уже есть: https://git.io/JR9Tl

Пока что приложение не предлагает использовать эту опцию. Я хочу сделать сообщение о false negative более понятным, и включить туда все три известных варианта решения проблемы: кнопка "Использовать эту сеть" в CaptivePortalLogin, "Исправить системную проверку" и "Обработка midsession".

Сразу предупрежу, что на некоторых прошивках метод может не сработать. По идее, глобальные настройки должны работать на всех версиях Android, но некоторые производители решили пойти по своему пути и, например, открывать браузер автоматически при подключении к сети (да, чистый Android так не должен делать). Также сам вызов команд с правами root может быть не очень надёжным. Тут нужно всё тестировать, так что жду ваших сообщений :)

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 August 16
Wi-Fi в метро
428-я сборка #master!

#master!

* Добавлена поддержка интерактивных элементов в логе. Теперь в логе могут появляться сообщения, на которые можно кликнуть для выполнения каких-либо дополнительных действий;

* Теперь при обнаружении midsession приложение предлагает применить одно из известных исправлений. Пока что оно это делает только в логе, но я также планирую сделать уведомления;

* Новая версия алгоритма Unknown перенесена в основную ветку. Подробности можно узнать в этом посте: https://t.me/wifi_v_metro/231

* Обработка midsession также переписана под новый Unknown. Хотя в случае с московским midsession это не поможет;

* Добавлено логирование вывода команд при использовании функций root. Это поможет найти источник проблем на устройствах, где галочка "Исправить системную проверку" ставится и сразу снимается;

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Первый вариант инструкции по исправлению midsession без root готов! Инструкция будет дополняться при появлении дополнительных вопросов или добавлении новых функций в скрипт.

Краткое содержание:
1) Включить отладку по USB на устройстве;
2) Скачать и распаковать captive_fix.zip;
3) Запустить captive_fix.bat (на Windows);
4) Подключить устройство к ПК;
5) Выдать разрешение на отладку;
6) Готово!
источник
2021 August 23
Wi-Fi в метро
429-я сборка #master!

#master!

* Алгоритм MosMetroV2WV теперь прямо в логе предлагает себя выключить. При нажатии на соответствующее сообщение алгоритм должен сразу переключиться на MosMetroV2. Если V2WV к этому моменту уже закончил работу, то ссылка просто снимет галочку в настройках.

* Проверка Gen204 теперь будет повторять попытку на 2-м этапе (HTTPS) при возникновении ошибки SSLHandshakeException с сообщением Connection reset by peer. Данная ошибка связана с разрывом соединения, а не проверкой сертификата, поэтому имеет смысл попробовать снова с другим сервером. Это должно исправить ошибку доступ в интернет отсутствует в конце успешного подключения.

* Переработаны случайные задержки. Теперь они отключены по умолчанию и влияют только на все запросы сразу. Т.е. я убрал отдельный этап "Ожидания" из начала подключения и из алгоритма MosMetroV2. Подключение теперь должно стать моментальным;

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 August 24
Wi-Fi в метро
В 429-й сборке есть проблема с зацикливанием после успешного подключения. Исправлю в ближайшее время 👍
источник
Wi-Fi в метро
430-я сборка #master!

#master!

* Исправлено зацикливание после успешного подключения;

Если что, проблема НЕ связана с midsession. Она связана с расширением жизненного цикла фонового процесса, чтобы MosMetroV2WV мог быстро перезапускаться в MosMetroV2 при нажатии на сообщение в логе.

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 September 01
Wi-Fi в метро
431-я сборка #master!

#master!

* MosMetroV2: Исправлена ошибка после успешной авторизации, вызванная неудачным выполнением запроса в финальной серии перенаправлений. В большинстве случаев эти перенаправления не нужны, поэтому ошибки в них можно игнорировать;

* MosMetroV2: Теперь ошибки в ответах /init и /check игнорируются, но записываются в лог. Я не уверен, что всем этим сообщениям можно доверять. Например, на пригородных поездах подключение часто заканчивается с неизвестной ошибкой на данном этапе;

* Добавлены дополнительные сообщения о midsession: запуск обработки (чтобы было понятно, почему подключение пошло по второму кругу), неудачная обработка (предлагает отключить одним нажатием);

* Теперь приложение отслеживает, какую сеть предпочитает использовать Android (Wi-Fi или мобильную). Если Android сразу переключился на Wi-Fi даже при midsession, то сообщение о midsession не будет показано, т.к. всё должно и так работать;

* Добавлен 4-й способ возможного обхода midsession: Если отключить мобильную сеть, то Android всегда переключается на Wi-Fi, даже несмотря на midsession. Это не очень удобно, но лучше, чем постоянно нажимать "Использовать эту сеть";

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
APK также должен появиться в ответе на этот пост. Тестируем бота :)
источник
2021 September 12
Wi-Fi в метро
432-я сборка #master!

#master!

* Сеть Moscow_WIFI_Free добавлена в список автоподключения - она использует те же алгоритмы, что и Moscow_WiFi_Free;

* Добавлена поддержка сети Wi-Fi МГТУ им. Баумана (название сети: bmstu_lb, для входа требуются логин и пароль). Источник: PR-242

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 October 21
Wi-Fi в метро
433-я сборка #master!

#master!

* Теперь приложение всегда привязывается к Wi-Fi, если опция "Привязка процесса к сети" включена. Раньше при активном VPN приложение привязывалось к нему, но сейчас от этого больше проблем, чем пользы. Привязка к Wi-Fi при активном VPN иногда позволяет полностью его обойти, если он это разрешает (например, AdGuard запрещает, а Cloudflare WARP разрешает);

* Исправлена функция "Переподключение к Wi-Fi" на Android 9 и старше. На Android 10+ эта функция не работает, т.к. в API отключили нужные методы. Там появилось что-то новое, попробую разобраться;

* Факт использования VPN теперь фиксируется в логе. Это нужно для упрощения отладки в сложных случаях (например, когда DNS по какой-то причине не работает или все соединения завершаются таймаутом). Также, в случае ошибки, приложение покажет в логе сообщение с просьбой попробовать отключить VPN и повторить подключение;

* Настройки алгоритмов MAInet и Bmstu упрощены. Теперь есть только по одному пункту на каждый алгоритм, где можно указать логин/пароль. Т.е. эти алгоритмы больше нельзя отключить, но в этом изначально не было особого смысла, т.к. проверка полностью пассивная, и с другими алгоритмами они не конфликтуют (в отличие от MosMetroV3 или MosMetroV2WV).

* Исправлен баг в HTTP-клиенте, который приводил к ошибке в алгоритме Bmstu при использовании конструктора POST-запроса;

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник