Size: a a a

Wi-Fi в метро

2018 October 03
Wi-Fi в метро
Вот такая вот жуть на новом сегменте. Или это она везде такая?
источник
Wi-Fi в метро
источник
Wi-Fi в метро
источник
2018 October 04
Wi-Fi в метро
41-я сборка #webview#webview! Реализованы таймауты для загрузки страницы авторизации (1 минута) и ожидания завершения работы скрипта (2 минуты).

Также появилась временная ветка mcc-rm, в которой я попробовал реализовать новый алгоритм с МЦК. Так и не определился, как вообще называть эти алгоритмы, поэтому пусть пока будет MosMetroV2mcc (т.к. сводится к MosMetroV2 и встречается только на МЦК). Потом, возможно, придётся как-то переименовать, чтобы название лучше отражало суть.

А сам алгоритм довольно простой и состоит из нескольких запросов, не требующих никакой логики со стороны клиента. Так что MosMetroV2mcc всего лишь следует перенаправлениям до тех пор, пока не встретит знакомый ответ (но делает максимум 5 попыток с интервалом 100мс).

Если что, ветка mcc-rm основана на 41-й сборке webview, поэтому можно спокойно на неё переключаться. Но смысла в этом нет, если вы не бываете на МЦК :)


webview: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
mcc-rm: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
2018 October 05
Wi-Fi в метро
2-я сборка #mcc-rm!#mcc-rm!

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

Что нового:

* Произведён rebase на ветку #master. Решил отделить эти изменения от #webview, т.к. там и так много всего. Так что эта сборка основана уже на master-368, а не на webview-41;

* Алгоритмы MosMetroV* теперь повторно используют ответ generate_204 в начале подключения. Это позволяет не отправлять два одинаковых запроса, что немного увеличивает скорость подключения и должно снизить подозрительную активность. Изменение достаточно значительное, затрагивает все основные алгоритмы и может всё сломать. Особенно важно в нём то, что теперь все алгоритмы используют один и тот же метод проверки соединения с интернетом. Различается лишь дополнительная обработка ответа сервера.

Как только убедимся в работоспособности этой версии, сразу перенесу изменения в #master и #webview. Поэтому жду от вас любые логи (особенно с МЦК), причём желательно на почту, т.к. у меня сейчас везде ужасный завал :)


Актуальная сборка mcc-rm всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
2018 October 10
Wi-Fi в метро
Всё-таки изменения в #mcc-rm некоторые вещи поломали. Например, MosMetroV3 перестал парсить MAC-адрес устройства из ответа сервера, из-за чего постоянно выдавал ошибку. Также оказалось, что сегмент mcc_rm всё-таки возвращается к обычному mcc, но только делает он это очень странно — в середине алгоритма MosMetroV2, уже после загрузки /auth. Это проявлялось в том, что алгоритм успешно доходил до конца, но интернет пропадал через секунду. Сплошной бардак! :)

В результате выпускаю 3-ю сборку #mcc-rm#mcc-rm:

* Исправлен парсинг перенаправления в алгоритме MosMetroV3. Сегодня проверить его не удалось, но должно сработать;
* Попытался подправить MosMetroV2 для совместимости с новым алгоритмом на МЦК. Решение мне не очень понравилось, так что возможно, что придётся переделать. Но это уже второй вариант, т.к. в первом случае я просто заменял сегмент mcc_rm на mcc в самом начале. Теперь же приложение, как и браузер, ждёт указания от сервера, что пора сменить сегмент. Первый вариант я проверил (сработало), а вот второй не успел;

А так напомню, что изменения в этой ветке достаточно важные: во-первых, в начале подключения теперь отправляется лишь один запрос generate_204 (раньше было два — для определения провайдера, а затем уже самим алгоритмом); во-вторых, парсинг перенаправлений стал проще (приложение ищет и meta-теги и HTTP-заголовок Location); ну и в-третьих, проверка интернета у всех провадеров теперь производится одним и тем же методом.

Скорее всего завтра доведу эту ветку до ума и произведу слияние с #master и #webview.


Актуальная сборка mcc-rm всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
2018 November 23
Wi-Fi в метро
Всем привет! Я вернулся (надеюсь) и принёс новые сборки :)

369-я сборка #master#master

* Портировал механизм подмены запросов из #webview. Теперь редактировать запросы и ответы можно не только в алгоритмах с WebView, но и в обычных. Это изменение сначала готовилось для ветки mcc-rm, но в итоге стало неактуально за 1.5 месяца моего отсутствия (подробнее ниже);

* Исправил сообщение "Пытаюсь подключиться с помощью MosMetroV2" на "Пытаюсь подключиться с помощью стандартного алгоритма (MosMetroV2 или MosMetroV3)". Дело в том, что алгоритм выбирается в зависимости от того, включен ли MosMetroV3 в настройках.

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

42-я сборка #webview#webview

* Механизм подмены запросов заменён на тот, что был реализован в #master. По сути ничего не изменилось и можно было бы эту сборку вообще не выпускать, но лучше проверить, не сломалось ли что.

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

4-я сборка #mcc-rm#mcc-rm

* С момента выхода 3-й сборки сеть на МЦК немного перенастроили. Теперь там нет никакого сегмента mcc_rm, т.е всё почти вернулось в норму (ну или мне повезло в среду). Поэтому я отменил хак для алгоритма MosMetroV2, добавленный в 3-й сборке. Код стал чуть лучше, но всё-равно пока не идеален.

* По-прежнему пытаюсь разобраться, почему подключение не происходит с первого раза. В браузере всё работает, а приложение обязательно проходит три этапа: успех, ошибка, уже подключено. Ради эксперимента добавил два запроса, чтобы упаковать эти три попытки в одну.

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



Изменений не так много, т.к. я ещё только пытаюсь снова вникнуть в код после долгого перерыва. Текущий план разработки такой: сначала чиним МЦК, затем допиливаем и сливаем #webview, потом переходим на SDK 27 (или новее) и только после всего этого исправляем общий бардак.

Не знаю, сколько времени это займёт, особенно с моим графиком учебы. Я заметил, что многие предполагали, что я всё время трачу на универ (и это было бы реально неплохо), но нет, я просто немного приболел (по 2 недели дома и в больнице) и вот только недавно выписался. Так что пока я по универу мало что делаю и редко езжу на общественном транспорте (занятия пропадают почти каждый день), а в декабре начнётся подготовка к сессии, все начнут бегать в панике, и времени на допиливание приложения может не быть. Это я сразу предупреждаю, чтобы вы не думали, что я забросил проект :)

В общем, жду логи 4-й сборки mcc-rm. Лучше отправляйте их на почту, т.к. у меня всё никак не получается разгрести завал в мессенджерах. И перед отправкой, пожалуйста, убедитесь, что интернет реально появился, а то на МЦК успешное подключение не всегда реально успешное. Спасибо!
источник
Wi-Fi в метро
Эх, всё-таки где-то поломал #master (и, наверное, не только его).

Если что, старые сборки находятся здесь:
master #368 — https://jenkins.thedrhax.pw/job/mosmetro-android-pipeline/job/master/368/artifact/SignApksBuilder-out/android-keystore/pw.thedrhax.*/MosMetro-master-v71-b368-unsigned.apk/MosMetro-master-v71-b368.apk
webview #41 — https://jenkins.thedrhax.pw/job/mosmetro-android-pipeline/job/webview/41/artifact/SignApksBuilder-out/android-keystore/pw.thedrhax.*/MosMetro-webview-v71-b41-unsigned.apk/MosMetro-webview-v71-b41.apk

Постараюсь исправить в ближайшее время.
источник
Wi-Fi в метро
Воу! Сегодня, судя по первому коммиту, проекту исполняется ровно 3 года! Не ожидал, что столько времени уже прошло :)
источник
Wi-Fi в метро
Только что появилась 370-я сборка #master#master, в которой я удалил ненадёжные функции из HTTP-клиента. В теории это должно исправить проблемы с подключением, появившиеся в 369-й сборке.

Остальные ветки обновлю сразу, как только станет известно, что эта версия работает нормально. Извините за неудобства, запутался в своём же древнем коде :)

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
Wi-Fi в метро
Похоже, что сработало! 369-й сборки нет в статистике, а 370-я уже появилась. Но логи подожду на всякий случай.

UPD: Всё-таки обновил остальные ветки. Посмотрим, что получится.
источник
2018 November 26
Wi-Fi в метро
Небольшое тихое напоминание: Если кто-нибудь сегодня будет на МЦК, попробуйте, пожалуйста, ветку mcc-rm. Приветствуются любые логи, желательно на почту (через конверт в ручном подключении).

Также перед отправкой лога желательно убедиться, что интернет действительно появился, т.к. подключение не с первого раза – одна из основных проблем алгоритма MosMetroV2mcc и сети на МЦК. Предыдущие сборки всегда подключались только со 2-3 раза (успех - ошибка - уже подключено).

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

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
Wi-Fi в метро
Только что проверил #mcc-rm на МЦК. На скриншоте видно, что решение немного кривое (особенно с "всё идет по плану"). Пока не придумал, как проще эту проблему исправить. Сервер нарушает стандарт HTTP и ломает библиотеку OkHttp именно в этом месте. Попробую ещё дампы пособирать :)
источник
2018 November 30
Wi-Fi в метро
6-я сборка #mcc-rm!#mcc-rm!

* [MosMetroV2mcc] Нашёл в дампе браузера дополнительные шаги, из-за отсутствия которых, похоже, предыдущая сборка и работала так странно. Теперь подключение на МЦК должно выглядеть так:

 - Прохождение 4-х перенаправлений с кодом 302;
 - Запуск алгоритма MosMetroV2;
 - Возвращение к алгоритму MosMetroV2mcc;
 - Ещё 4 перенаправления с кодом 302 (после запроса к новому домену hotspot.maximatelecom);
 - Проверка наличия интернета.

Это уже лучше, чем костыль в 5-й сборке, но выглядит страшно, конечно :)

* Портировал механизм переключения и инициализации алгоритмов из ветки #webview.

* [MosMetroV2] Теперь для вытаскивания CSRF-токена и определения наличия бана используется Interceptor, как в MosMetroV2WV в #webview (раньше для этого был отведена статичная процедура в двух местах алгоритма).

* [MosMetroV2] Была удалена обработка midsession, так как она мало того, что кривая (работает только один раз), так ещё и непонятно, как она будет сочетаться с MosMetroV2mcc.


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
Wi-Fi в метро
6-я сборка #mcc-rm вылетает на МЦК, но подключение всё равно происходит. Проблему исправить очень легко, просто закодить в поезде не успел. Через дебаггер отредактировал одну переменную и оно успешно подключилось :)
источник
Wi-Fi в метро
7-я сборка #mcc-rm!#mcc-rm!

* Исправил баг, который вызывал вылет в 6-й сборке. Дело в том, что одно из перенаправлений в цепочке было не с абсолютным URL (не был указан протокол, т.е. URL начинался с //домен/путь вместо http://домен/путь). OkHttp от этого сильно ломается и роняет всё приложение, так что теперь все перенаправления сначала приводятся к нормальному виду.

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

Не надеюсь, что кто-то проверит её на МЦК раньше понедельника, но было бы круто. Только не надо специально ради этого на МЦК идти :)


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=mcc-rm
источник
2018 December 01
Wi-Fi в метро
Получил несколько логов из 7-й сборки #mcc-rm. Похоже, что она теперь нормально работает на МЦК, а остальные алгоритмы чувствуют себя лучше, чем в #master. Сейчас солью её с #master (это будет 372-я сборка).

А вот по поводу #master поступило несколько сообщений о неполадках:
* Говорят, что MosMetroV3 теперь тоже сообщает о банах, поэтому приложение выдаёт "CSRF token not found";
* В самом алгоритме MosMetroV2 тоже частично сломалось определение бана (но может заработать после слияния #mcc-rm);
источник
Wi-Fi в метро
372-я сборка #master!#master! (слияние с #mcc-rm)

* Исправлены повторные попытки в HTTP-клиенте. Теперь они ведут себя более очевидно и стабильно.

* Теперь все алгоритмы повторно используют ответ сервера из функции generate_204. Раньше так умел только алгоритм-заглушка Unknown. Это позволяет избавиться от повторения одинаковых запросов в начале подключения;

* Добавлена поддержка нового алгоритма для МЦК.

* Добавлена поддержка сети MAInet_public в Московском авиационном институте.

* [MosMetroV2] Удалена обработка midsession. Она оказалась несовместима с алгоритмом MosMetroV2mcc, да и вообще работала не очень хорошо. Напомню, что midsession — это страница с рекламой, появляющаяся на сайтах, не использующих шифрование.

* Исправлен баг, из-за которого приложение иногда не реагировало на кнопку "Остановить".


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

* Исправлены повторные попытки в HTTP-клиенте. Теперь они ведут себя более очевидно и стабильно.

* Теперь все алгоритмы повторно используют ответ сервера из функции generate_204. Раньше так умел только алгоритм-заглушка Unknown. Это позволяет избавиться от повторения одинаковых запросов в начале подключения;

* Добавлена поддержка нового алгоритма для МЦК.

* Добавлена поддержка сети MAInet_public в Московском авиационном институте.

* [MosMetroV2] Удалена обработка midsession. Она оказалась несовместима с алгоритмом MosMetroV2mcc, да и вообще работала не очень хорошо. Напомню, что midsession — это страница с рекламой, появляющаяся на сайтах, не использующих шифрование.

* Исправлен баг, из-за которого приложение иногда не реагировало на кнопку "Остановить".


APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
44-я сборка #webview!#webview! По сути, всё то же, что и в 372-й сборке #master.

APK: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 December 02
Wi-Fi в метро
373-я сборка #master!#master! Исправил небольшой баг с зацикливанием HTTP-запросов (особенно на МЦК). Он уже был исправлен в #webview, а сюда забыл патч отправить.

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