Wi-Fi в метро @wifi_v_metro Channel on Telegram

Wi-Fi в метро

@wifi_v_metro


Группа: https://t.me/joinchat/0S7nOjfkV2E2OTAy

Wi-Fi в метро (Russian)

Вы когда-нибудь задумывались о том, как оставаться на связи в метро? Теперь это стало возможным благодаря каналу "Wi-Fi в метро"! Здесь вы найдете все необходимые сведения о бесплатных и платных Wi-Fi точках доступа в метро вашего города. Основной целью данного канала является помощь путешественникам, студентам и всем, кто ценит доступ к интернету в любое время и в любом месте. Вы сможете узнать о самых быстрых и надежных интернет-сетях, а также делиться своими отзывами о качестве Wi-Fi соединения в метро. Присоединяйтесь к нашей группе по ссылке: https://t.me/joinchat/0S7nOjfkV2E2OTAy и станьте частью сообщества людей, которые ценят комфорт и удобство во время поездок по метро. Не упустите возможность всегда оставаться на связи, даже когда вы находитесь под землей! Подписывайтесь на наш канал "Wi-Fi в метро" уже сегодня!

Wi-Fi в метро

09 Nov, 00:26


438-я сборка #master!

Как обычно бывает с большими обновлениями после долгого перерыва, без проблем не обошлось...

* Исправлена поддержка Android 4.x (точнее она стала даже лучше, чем до 437-й сборки);
* Исправлено ложное сообщение о midsession на Android 4.x;
* Исправлено кэширование в проверке обновлений;
* Исправлен адрес, на который отправляется статистика;


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

07 Nov, 19:48


437-я сборка #master!

* Обновлена почти вся система сборки приложения, compileSdkVersion повышен до 31;
* Tracepot заменён на Sentry (отправка отчётов о вылетах);
* Для отправки логов теперь не нужен почтовый клиент (старый метод остался);
* Устранена зависимость от моего сервера — обновления теперь приходят с GitHub;
* Статистика подключений теперь накапливается и отправляется асинхронно, а также может быть отключена в "Настройках отладки";
* Исправлена ошибка в альтернативном DNS-клиенте, которая не позволяла отправлять запросы к адресам с IP вместо домена;


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

(вернул старую ссылку, т.к. новая всё-равно не помогла от блокировки)

Wi-Fi в метро

30 Oct, 00:19


436-я сборка #master!

Всем привет! Похоже, что в сети MT_FREE заблокировали очередной мой домен, поэтому я сделал новый :)

Что нового:
* Обновлён адрес бэкенда, используемый по умолчанию;
* Исправлена ошибка, из-за которой не удалось обновить этот адрес без создания новой сборки;

Удивительно, что домен продержался 5 лет и его заблокировали именно сейчас! Предыдущие (mosmetro.thedrhax.pw и wi-fi.metro-it.com) были заблокированы довольно быстро, т.к. в то время с приложением активно боролись.

Блокировка домена создаёт лишь небольшие неудобства: нельзя скачать обновление через MT_FREE, и я не вижу, работает приложение или сломалось. В остальном мой сервер вообще не нужен для нормальной работы.

тихое сообщение, т.к. ночь 👀


APK: https://mosmetro.my.to/api/v1/download.php?branch=master

Wi-Fi в метро

30 Jun, 15:43


39-я сборка #experimental!

* Обновлён список User-Agent'ов, а то там браузеры уже на 40 версий отстали. По идее, ничего сломаться не должно, но кто знает? 🤔

* Пытаюсь заставить приложение работать в сети Moscow_WiFi_Free в МИРЭА. Раньше там использовался уникальный алгоритм с подтверждением через СМС, а теперь сеть перешла на MosMetroV2, но с небольшими отличиями в начале и багами в конце. Пока что попытался поправить только начало, а дальше уже как пойдёт :)

* Добавлена начальная поддержка сети "Free Wi-Fi Zona" в Белграде. Мне тут прислали дамп, и оказалось, что алгоритм там очень простой, так что почему бы и нет?

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental

Wi-Fi в метро

22 Jun, 12:25


Нужны дампы из МЦК (MT_FREE) и МАИ (MAI_public)

Мне тут пришло несколько сообщений, что приложение не работает на МЦК, и что в МАИ заменили сеть с MAInet_public на MAI_public с новым алгоритмом.

Если есть возможность, соберите, пожалуйста, дампы по этой инструкции: https://drhx.ru/kqw2 (root не требуется)

Заранее спасибо! :)


UPD: Полученные дампы

* МЦК, сегмент mcc2, никаких изменений по сравнению с ЦППК
* МИРЭА, сегмент dit_mgts, сеть странно себя ведёт после init - нужно, чтобы приложение игнорировало ошибки;

Wi-Fi в метро

03 Jun, 18:31


435-я сборка #master!

🟢 Добавлена возможность автоподключения без доступа к геолокации

Вместо этого приложение использует DNS, чтобы быстро определить, есть ли в сети один из поддерживаемых алгоритмов.

Если у вас не работало автоподключение, и в логе есть сообщения с <unknown ssid>, то теперь всё должно заработать. По крайней мере 37-я сборка #experimental показала 94% успешных попыток :)

Геолокация по-прежнему полезна, т.к. это более быстрый и лёгкий способ проверки - на момент запуска фоновый процесс уже знает всё, что нужно. Но если у вас геолокация приводит к быстрому разряду аккумулятора и ни для чего больше не нужна, то проверка по DNS может быть легче (надо тестировать).

🟢 Обновлена проверка соединения с интернетом

Раньше использовалась 3-этапная проверка, которая перед подключением пыталась отправить HTTPS-запрос, ожидая ошибку. Чаще всего ошибка возникала очень быстро, однако в некоторых сетях вместо этого соединение зависало аж на 1.5 минуты (3 попытки, таймаут 30 секунд).

С новой проверкой для начала подключения достаточно отправить всего 1 HTTP-запрос, а HTTPS задействуется уже после завершения работы основного алгоритма. Так что подобных зависаний больше быть не должно.

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

25 May, 18:47


34-я сборка #experimental!

Ветка experimental сброшена до состояния master, т.е. из неё удалены все предыдущие тесты и неработающие алгоритмы.

В этой версии тестируется новая проверка сети через DNS, которая должна помочь приложению работать автоматически без требования включённой геолокации. Вместо названия сети приложение использует DNS-запрос и ожидает в ответе IP из частного диапазона. Если такой IP находится, то сразу же запускается фоновое подключение.

Как тестировать:
* В главном меню включите 1-й пункт "Автоматическая авторизация";
* Выключите определение местоположения (геолокацию) в настройках системы;
* Подключитесь к сети MT_FREE и подождите, пока приложение авторизуется в сети (надеюсь, что это произойдёт);

Если подключение прошло успешно, то приложение должно отправить лог самостоятельно (пункт "Участие в тестировании" в меню "Отладка").
Если что-то пошло не так (процесс завис на ожидании IP-адреса, подключение не удалось и т.д.), не забудьте прислать мне лог через "Посмотреть лог" в главном меню. Спасибо :)

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental

Wi-Fi в метро

27 Apr, 18:15


434-я сборка #master!

* Теперь сообщения коммитов пишутся на русском, так что список изменений должен стать более понятным. Хотя это всё-равно не сравнится с постами, написанными вручную :)

* Устранена зависимость от GitHub Pages, который часто попадает под блокировки РКН - вместо этого запросы делаются напрямую к содержимому репозитория;

* Исправлено 5 вылетов (некоторые из них довольно массовые);

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

21 Oct, 04:00


433-я сборка #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

Wi-Fi в метро

12 Sep, 12:24


432-я сборка #master!

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

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

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

31 Aug, 22:20


431-я сборка #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 также должен появиться в ответе на этот пост. Тестируем бота :)

Wi-Fi в метро

24 Aug, 11:42


430-я сборка #master!

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

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

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

24 Aug, 10:59


В 429-й сборке есть проблема с зацикливанием после успешного подключения. Исправлю в ближайшее время 👍

Wi-Fi в метро

23 Aug, 14:06


429-я сборка #master!

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

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

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

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master

Wi-Fi в метро

16 Aug, 17:39


Первый вариант инструкции по исправлению midsession без root готов! Инструкция будет дополняться при появлении дополнительных вопросов или добавлении новых функций в скрипт.

Краткое содержание:
1) Включить отладку по USB на устройстве;
2) Скачать и распаковать captive_fix.zip;
3) Запустить captive_fix.bat (на Windows);
4) Подключить устройство к ПК;
5) Выдать разрешение на отладку;
6) Готово!

Wi-Fi в метро

16 Aug, 17:35


428-я сборка #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 в метро

13 Aug, 11:32


427-я сборка #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

Wi-Fi в метро

12 Aug, 14:06


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

Wi-Fi в метро

28 Jul, 19:02


22-я сборка #experimental!

Я снова переписал алгоритм Unknown. Теперь он отвечает только за начальный поиск алгоритма, если его не удалось определить по первому перенаправлению.

Если алгоритм будет найден, то Unknown передаст ему управление. Любые возможные перенаправления после этого должны быть обработаны уже новым алгоритмом. Т.е., например, MosMetroV2 должен сам проследовать по afterAuth и дальше.

Основная причина изменений: На МЦК теперь сразу распознаётся MosMetroV2, но сеть по-прежнему требует проследовать по afterAuth. Из-за этого алгоритм Unknown не задействовался, и подключение там не работало.

Почему #experimental: Изменение довольно сильно затрагивает MosMetroV2, который сейчас используется вообще везде. Если что-то пойдёт не так, то приложение перестанет подключаться у всех.

Как только станет известно, что эта сборка работает, обновлю также и #master. Если она заработает в метро, то уже хорошо, а если на МЦК и в Moscow_WiFi_Free, то вообще отлично 👍

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=experimental