Size: a a a

Wi-Fi в метро

2021 June 01
Wi-Fi в метро
414-я сборка #master!

#master!

413-я сборка исправила подключение в московском метро, но там появилась проблема с обходом midsession (он зацикливался).

* Обновлён список поддерживаемых версий TLS и шифров в OkHttp - я выбрал наиболее совместимую конфигурацию, так как ошибка TLS по-прежнему периодически появляется и ломает проверку gen_204;
* Обновлён список адресов gen_204. Как оказалось, некоторые из надёжных адресов испортились: play.googleapis.com/generate_204 и clients1.google.com/generate_204 стали иногда возвращать код 200 вместо 204, даже если доступ в интернет есть. Также к ним в этот момент полностью блокируется доступ по HTTPS. Это изменение также должно помочь при зацикливании обхода midsession;
* Логика обхода midsession также немного подправлена. Теперь там больше условий для прекращения попыток;

Тестовые ветки пока не обновляю, сейчас максимальный приоритет - релиз ветки play.

---
master: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 June 02
Wi-Fi в метро
415-я сборка #master, 7-я сборка #lastochka, 8-я сборка #experimental!

#master, 7-я сборка #lastochka, 8-я сборка #experimental!

* Релиз 2.3.1
* Обработка midsession отключена по умолчанию - вы можете включить её обратно в настройках подключения, но она пока всё-равно нормально не работает;

Пост в группе ВК: https://vk.com/wifi_v_metro?w=wall-113596028_6583

P.S. Я их называю сборками, а не версиями, как раз из-за того, что они могут выходить хоть раз в 5 минут. Любое изменение кода на GitHub = сборка ¯\_(ツ)_/¯

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

#lastochka!

Обновил алгоритм HotspotSzimc по свежему дампу. Там была ошибка, из-за которой приложение не распознавало провайдера. Также сам алгоритм немного изменился с момента последнего обновления.

Ветка experimental тоже обновлена. Мне кажется, что нет смысла писать о каждой сборке experimental, т.к. они, по сути, появляются при каждом изменении в любой другой ветке.

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=lastochka
источник
Wi-Fi в метро
Нужен дамп из метро Москвы

В присланных логах стало часто появляться перенаправление на gowifi.ru вместо привычного auth.wi-fi.ru. К сожалению, из одного только лога невозможно понять, изменилось только начало или это абсолютно новый алгоритм.

Пример ошибки из расширенного лога подключения:

<html>
<head>
 <meta http-equiv="Refresh" content="0; url='http://gowifi.ru'">
</head>
<body></body>
</html>
[+0000] Ошибка: провайдер не опознан

Если вы увидите подобную ошибку, попробуйте, пожалуйста, создать дамп подключения по этой инструкции. Там всё подробно расписано по шагам, но нужно заранее всё подготовить. Root не требуется.

Присылать дампы можно мне на почту mosmetro@thedrhax.pw или сюда в ЛС @TheDrHax (в инструкции это всё есть).

Заранее спасибо ❤️
источник
2021 June 03
Wi-Fi в метро
10-я сборка #experimental!

#experimental!

Вчера собрать дамп не удалось, поэтому попробуем один экспериментальный метод :)

Добавлен тестовый алгоритм GoWifiRu. Его задача состоит в том, чтобы при обнаружении начального перенаправления на gowifi.ru запустить WebView и попытаться забраться как можно дальше, одновременно записывая в лог все события, а после этого отправить автоматический отчёт. Скрипту даётся 1 минута, после чего алгоритм завершится с ошибкой. Если в логе окажется полезная информация, то я смогу сделать ещё одну сборку, которая продвинется дальше.

Также я снова включил автоматическую отправку отчётов по умолчанию. Как выяснилось по опыту недавнего релиза, просто поменять значение по умолчанию недостаточно, поэтому я сделал новую настройку с тем же названием. Если вы не хотите, чтобы приложение отправляло мне лог в особых случаях, вы можете снять 3-ю галочку в меню "Отладка".

Эта сборка должна всё делать самостоятельно, так что вам не придётся искать в логе сообщения из поста выше. Но я всё-таки надеюсь, что у нас получится собрать полноценный дамп.

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

#hotspot!

Обнаружил в одном из логов, что отправка формы всё-таки работает. После этого провайдер выдаёт перенаправление на auth.wi-fi.ru, где алгоритм MosMetroV2 должен будет завершить подключение.

* Добавлена поддержка переключения алгоритмов между HotspotWifiRu и MosMetroV2(WV).

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

---

1-я сборка #gowifi!

#gowifi!

* Добавлен алгоритм GoWifiRu, который просто сразу переключается на MosMetroV2;

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

---

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

#experimental!

* Вчерашний эксперимент с GoWifiRu пока отключён. Из него выяснилось, что gowifi.ru перенаправляет на wi-fi.ru, и там всё останавливается;
* Добавлены все изменения из сборок, перечисленных выше;
* Отключена обработка midsession (теперь точно);

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

#master!

* Обработка midsession отключена по умолчанию (теперь точно). Также я немного перефразировал название и описание этой опции;

* Gen204 теперь пробует использовать другие адреса в случае ошибок соединения. Повторные попытки с теми же адресами практически никогда не помогали. Именно из-за ошибок в Gen204 и возникла идея, что появился новый алгоритм с gowifi.ru, о котором я писал вчера.  Оказалось, что это просто была неудачная комбинация вечного midsession (false negative в логе) и ошибок на втором этапе проверки Gen204.

* Unknown, самый важный алгоритм, стал умнее. Теперь он не просто сразу выпадает с ошибкой, а сначала пробует пройти по всем перенаправлениям в поисках какого-либо известного алгоритма. Теперь ошибка "провайдер не опознан" будет содержать гораздо больше информации, а иногда, возможно, её вообще получится избежать;

* К анонимным метрикам добавился настолько же анонимный UUID. Он генерируется при первой отправке статистики и сохраняется в приложении. Эта информация позволит мне примерно прикинуть: сколько уникальных пользователей у приложения, у скольких пользователей возникает какая-либо проблема и всё в таком духе. UUID не привязан ни к чему, и его можно сбросить путём очистки настроек или переустановки приложения. Если вам интересно, вот небольшой кусочек кода, который занимается генерацией и хранением этого ID;

Эта сборка - текущий кандидат на ещё один релиз. Так что жду от вас логов и отзывов :)

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

---

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

Я
#experimental!

Я полностью пересобрал эту ветку, избавившись от остатков недавних экспериментов. Она по-прежнему включает в себя ветки #hotspot и #lastochka, т.е. алгоритмы HotspotSzimc, AuthLastochkaCenter и HotspotWifiRu, а также все изменения из #master.

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

#master!

* Ещё немного доработана проверка Gen204. Теперь в случае ошибки SSLHandshakeException не будет производиться повторных попыток отправить запрос;

* Опция "Количество попыток" в настройках подключения теперь влияет только на алгоритмы в целом, но не на их составляющие. До этого она также влияла на количество попыток отправки каждого запроса, и если она была установлена в 0, то проверка Gen204 вообще не работала;

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

Ситуация с подключениями постепенно стабилизируется по мере того, как сборка 416 заменяет более старые. Завтра ещё немного погоняем эту, и я выпущу версию 2.3.2. Хотя её ждут не так много людей, т.к. на ветку play приходится лишь 25% всех подключений (тоже не мало, но гораздо меньше, чем у master).

P.S. Как обычно, также вышли новые сборки #lastochka, #hotspot и #experimental. Там всё то же самое 👍

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

#master!

* Релиз 2.3.2;

Пост в ВК: https://vk.com/wifi_v_metro?w=wall-113596028_6614

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

#master!

* Начальное перенаправление теперь всегда выводится в лог, чтобы было проще выявить некоторые проблемы;
* HTTP-клиент теперь более точно парсит и отправляет формы с method=GET (сохраняется порядок полей, и их значения правильно подставляются в URL);

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

---

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

#experimental!

* [lastochka] Исправлена ошибка при парсинге формы авторизации в алгоритме HotspotSzimc;

Важно: Ветки #lastochka и #hotspot больше не собираются. Если вы их использовали, вы можете переключиться на #experimental, там всё то же самое. Просто мне при каждом изменении в master приходилось создавать по 4 сборки. А так будет 2 :)

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

#master!

Теперь приложение умеет скачивать файлы APK и устанавливать их!

Предыдущие версии вместо этого открывали браузер в надежде на то, что тот скачает APK и предложит его установить. Иногда это не работало, и открывалась пустая страница или система не давала установить APK по какой-то причине.

Если у вас не заработает установка через приложение, вы можете воспользоваться старым вариантом, который всё ещё доступен через кнопку "Скачать" в диалоге обновления. Я его оставил на всякий случай, т.к. несколько лет назад уже была попытка улучшить систему обновления, и тогда всё сломалось :)

Также есть новость для пользователей Android 4.x: Если у вас не работали встроенные обновления, то теперь они должны заработать. Дело в том, что на этой версии Android по умолчанию используется протокол TLSv1.0, а у меня на сервере он был запрещён. Так что мне пришлось его разрешить ¯\_(ツ)_/¯

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

#master!

* Удалён устаревший алгоритм Enforta. Он так и не был реализован из-за довольно большой сложности и редкости. Всё, что он делал всё это время - показывал ошибку, если в перенаправлении было слово enforta;

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

* Алгоритм Unknown стал ещё чуть умнее: Если он запускает вложенные алгоритмы, то он больше не ожидает, что они успешно завершатся. Вместо этого он продолжает идти по перенаправлениям. Это должно помочь в сети Moscow_WiFi_Free (Билайн), где сначала идут перенаправления, затем внезапно запускается MosMetroV2, а после него снова перенаправления. Раньше в этой сети приложение срабатывало только со второго раза, а теперь, в теории, должно будет с первого;

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

#master!

Изменений в Unknown оказалось недостаточно для сети Билайн. Если приложение сразу после завершения MosMetroV2 пытается получить следующее перенаправление, то оно зацикливается и снова запускает MosMetroV2.

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

Также, в качестве теста, для парсинга того адреса используется библиотека JsonPath. С её помощью гораздо проще работать с большими документами JSON, так что я теперь планирую провести миграцию с JSON Simple.

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

#master!

* Лог теперь поддерживает временные метки до 99 секунд. Раньше вместо этого в тексте отображались [+>10s];

* Unknown: Добавлена задержка в 5 секунд после выполнения вложенного алгоритма. В некоторых сетях бэкенды обмениваются информацией с задержкой, из-за чего приложение зацикливается;

* MosMetroV2: Результат подключения теперь тоже парсится с помощью JsonPath. Поведение от этого не должно измениться, но код стал проще;

* MosMetroV2mcc теперь умеет использовать параметр afterAuth, который парсится в MosMetroV2. Результат от этого не меняется, но теперь алгоритм может пережить небольшие изменения в адресах перенаправлений;

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

#master!

Продолжаю дорабатывать алгоритм Unknown, который уже несколько сборок подряд "почти работает" в сети Moscow_WiFi_Free от Билайн. Также он может заменить MosMetroV2mcc на МЦК и, возможно, другие модификации MosMetroV2, о которых я не знаю.

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

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

В данный момент я продолжаю работать над встроенным дампером трафика на базе WebView, чтобы информацию о новых алгоритмах можно было собирать прямо в приложении. Сбор HTTP-запросов и событий из WebView уже работает (хотя может быть улучшен), осталось только сделать простенький UI и реализовать сохранение дампа в виде ZIP-архива.

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

#master!

* MosMetroV2: Адрес финального перенаправления теперь проходит через нормализацию, чтобы предотвратить вылет из-за ссылок вида //wi-fi.ru;

* Неожиданные исключения в алгоритмах теперь не должны приводить к вылету всего приложения. Вместо этого алгоритм просто завершится с ошибкой и сообщит об этом в уведомлении и логе;

* Приложение теперь сначала пробует сделать DNS запросы через систему, а затем, в случае ошибки, использует встроенный DNS-клиент. Раньше этот клиент использовался автоматически только при активном Private DNS. Вы также можете полностью переключиться на встроенный DNS-клиент, установив галочку "Альтернативный DNS клиент" в настройках. Я надеюсь, что это поможет исправить распространённую в последнее время проблему с ошибкой UnknownHostException;

* MosMetroV2: Определение провайдера исправлено, чтобы исключить конфликты с beeline.wi-fi.ru, start.wi-fi.ru и другими подобными адресами. То есть теперь MosMetroV2 реагирует только на домен auth.wi-fi.ru. В первую очередь это нужно для алгоритма Unknown, где снова возникали бесконечные циклы;

* MosMetroV2: Исправлена ошибка парсинга JSON, приводящая к редкому вылету. Скорее всего это проблема связана с предыдущим пунктом, но она могла бы возникнуть и по другим причинам;

* Улучшена установка обновлений в приложении. Теперь там используется два метода установки APK: сначала ACTION_INSTALL_PACKAGE, а затем ACTION_VIEW. Если ни один из методов не сработал, приложение попросит пользователя воспользоваться кнопкой "Скачать";

* При скачивании обновлений через приложение старые APK теперь удаляются автоматически. Оказалось, что DownloadManager не заменяет файлы, а просто переименовывает их;

* Сеть Moscow_WiFi_Free добавлена в список автозапуска;

---
APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2021 July 21
Wi-Fi в метро
Всем привет! Хотел напомнить, что в приложении есть функция отправки логов. Если приложение не смогло авторизоваться в сети, лог этой попытки может быть очень полезным для нахождения источника проблемы.

Чтобы отправить лог:
1) Откройте "Посмотреть лог" в главном меню;
2) В верхней панели нажмите на кнопку с конвертом;
3) В открывшемся диалоге нажмите "Хорошо" или "Больше не предупреждать" (а также прочтите текст, на всякий случай);
4) Выберите любой почтовый клиент (например, Gmail) и подтвердите отправку;

Адрес электронной почты и тема письма должны быть подставлены автоматически. Если этого не произошло, используйте этот адрес: mosmetro@thedrhax.pw.

Я решил сделать этот пост, т.к. увидел уже несколько жалоб на работу приложения, а на почте обнаружил только два лога, один из которых вообще был с успешным подключением :)
источник
2021 July 22
Wi-Fi в метро
426-я сборка #master!

#master!

* Удалён алгоритм MosMetroV2mcc. Оказалось, что алгоритм на МЦК немного изменился, и MosMetroV2mcc перестал там работать. Но это не создало особых проблем, т.к. его автоматически заменил Unknown, который дорабатывался в последних нескольких сборках;

* Снова доработано условие запуска MosMetroV2. Теперь там чётко прописаны адреса страниц авторизации, чтобы исключить случайные запуски. Например, на МЦК подключение было нестабильно, т.к. на одном из этапов встречалось перенаправление https://auth.wi-fi.ru/auth/target?segment=mcc, которое очень похоже на https://auth.wi-fi.ru/auth?segment=metro, из-за чего приложение запускало MosMetroV2 по второму кругу с неопределённым результатом;

* Немного подправил отправку статистики - сообщения терялись при запуске через ручное подключение, т.к. процесс завершался до того, как асинхронный запрос будет отправлен. Теперь этот запрос выполняется синхронно;

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

#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
источник
2021 August 12
Wi-Fi в метро
Разблокирован ли у вас Android? (Если ли root-права?)
Анонимный опрос
20%
Да
76%
Нет
3%
Не знаю
Проголосовало: 1088
источник