Size: a a a

Wi-Fi в метро

2018 August 24
Wi-Fi в метро
361-я сборка #master!

* Перенаправил отчёты о вылетах ACRA на HockeyApp. Бэкенд acra-go всё ещё слишком сырой и вряд-ли когда-то будет доработан (разработчик не активен, а я не особо разбираюсь в Go);
* Перефразировал некоторые сообщения из MosMetroV3. Например, теперь при смене алгоритма в скобках пишется, что "это не ошибка", а то многие думают, что алгоритм ничего не делает и потом переключается на MosMetroV2;
* Временно скрыл опцию "Создать ярлык" на Android 8+. Ярлык по-прежнему можно создать через системный лаунчер. Подробности здесь: #211.


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

Добавлены быстрые ярлыки на Android 7.0+. Попробуйте зажать иконку на рабочем столе :)


Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2018 August 25
Wi-Fi в метро
8-я сборка #sdk-27!

* Приложение обновлено до 362-й сборки #master (её ещё даже не существует);
* Модуль ACRA обновлён до версии 5.2.0-rc1. Теперь он будет отправлять отчёты только по Wi-Fi и сможет перезапустить приложение после вылета;
* Исправлена проблема с иконкой приложения на версиях Android старше, чем 8.0;
* Добавлены быстрые ярлыки на Android 7.0+. Попробуйте зажать иконку приложения на рабочем столе;

Напомню: В плане алгоритмов эта версия почти не отличается от #master. Но если у вас не срабатывает автоматическое фоновое подключение, то здесь оно может заработать. Особенно жду хороших (надеюсь) новостей от владельцев Xiaomi с MiUI :)


Актуальная сборка sdk-27 всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=sdk-27
источник
Wi-Fi в метро
3-я сборка #webview-experimental! Удалось исправить все недочёты, найденные во 2-й сборке. Получилось даже лучше, чем я предполагал :)

* Ветка обновлена до 362-й сборки #master (см. изменения выше);

* Проблема с преждевременным выходом из метода get() решена при помощи "дебаунсинга" (есть такое слово?) методов onPageFinished() и shouldOverrideUrlLoading(). Проще говоря, теперь приложение не верит первому сообщению WebView и ждёт 100 миллисекунд на случай, если что-то поменяется. Тесты покажут, нужно ли увеличить или уменьшить это значение. На эмуляторе разница между этими методами была равна единицам миллисекунд, но всё может оказаться не так просто;

* Если провайдера определить не удалось, приложение выберет либо MosMetroV2WV, либо MosMetroV2 в зависимости от настроек (pref_webview_enabled в настройках подключения);

* Был реализован механизм редактирования HTTP запросов и ответов, которые отправляет и получает WebView. За счёт этого удалось
 1. Убрать костыль с чёрным списком URL. Теперь всё решают регулярные выражения и асинхронная задача;
 2. Вытащить CSRF-токен из страницы авторизации без сильного вмешательства в процесс подключения (просто подслушиваем за WebView);
 3. Подменить GET-запрос к /auth/init на аналогичный POST-запрос;

В общем, всё, что нашли, я исправил. Но это не значит, что ещё что-нибудь не вылезет. Хотя эта ветка уже гораздо лучше спроектирована, чем оригинальная #webview :)


Актуальная сборка webview-experimental всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
Примечание: работоспособность сборки ещё не подтверждена. Будьте готовы к тому, что она не сможет подключиться.
источник
2018 August 27
Wi-Fi в метро
Предварительные результаты тестирования 3-й сборки #webview-experimental

#webview-experimental

* Отвалился алгоритм MosMetroV3: Поведение ветки webview-experimental при появлении welcome.wi-fi.ru стало совпадать с 350-й сборкой #master (адрес игнорируется и приложение само переходит на MosMetroV2WV). Из-за этого данная ветка не будет работать в Санкт-Петербурге до исправления.  Если вспомнить, сколько проблем было с JavaScript-переходом с auth.wi-fi.ru на auth.wi-fi.ru/auth, то добавление в эту цепочку welcome.wi-fi.ru может всё поломать. Так что эксперименты пока не закончились.

* Предположительно, на странице auth.wi-fi.ru появился какой-то ресурс (скрипт, картинка и т.п.), который не загружается полностью и блокирует работу WebView. Возможно, что он всегда там был, а может это просто неполадки на серверах. Проявляется эта проблема в сообщении Synchronizer timed out после попытки открыть страниу авторизации. Первым делом надо расширить лог, чтобы видеть, куда WebView обращается. А также можно попробовать уменьшить таймауты для запросов.

В остальном эта ветка уже работает лучше, чем простая webview, поэтому скоро возможно их слияние. В случае слияния ветка webview-experimental предложит обновиться до master, но вам нужно будет проигнорировать это сообщение и вручную переключиться на webview.
источник
Wi-Fi в метро
4-я сборка #webview-experimental!#webview-experimental!

* Снова активирован алгоритм MosMetroV3 (обычный). Пока что решил не переписывать его под WebView. Если подтвердится, что и за него могут забанить, то перепишу ¯\_(ツ)_/¯;

* Запуск процесса с WebView теперь проверяется на успешность. Не уверен, насколько надёжен этот метод проверки, но хоть что-то;

* Должен быть исправлен вылет при завершении WebView. С момента выхода 3-я сборка упала 11 раз. Теперь эта ошибка должна быть проигнорирована (т.к. с ней больше ничего не сделать);

* В лог снова добавлены сообщения о запросах из WebView. Это должно помочь обнаружить источник проблемы, описанной во 2-м пункте сообщения выше. По сути, эта проблема ещё не исправлена;

* WebView теперь использует тот же экземпляр HTTP-клиента, что и сам алгоритм MosMetroV2WV. Это должно сделать сетевую активность менее подозрительной;

* MosMetroV2WV теперь использует перенаправление, полученное в ходе проверки соединения с интернетом (как и MosMetroV2);

Это должен быть заключительный тест ветки #webview-experimental, после которого она будет слита с обычной #webview. Если завтра всё будет нормально, то выйдет новая сборка #webview со всеми изменениями из этой ветки.

А вот дальше будет самое интересное: будем допиливать и пытаться слить #webview с #master :)


Актуальная сборка webview-experimental всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
источник
2018 August 29
Wi-Fi в метро
5-я сборка #webview-experimental!#webview-experimental! Они всё не заканчиваются >_>

* Обновлён чёрный список ресурсов. Теперь загрузка не должна зависать (надеюсь);

* Попытался исправить обнаружение блокировки провайдера. У меня не сохранилось точной информации о перенаправлении на /auto_auth, так что действовал наугад;

* Скрипт-кликер теперь проверяет, на какую страницу его загрузили. Если адрес страницы отличается, то он сообщит об этом приложению и подключение остановится, не дожидаясь ошибки Synchronizer timed out;


Актуальная сборка webview-experimental всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
источник
2018 August 30
Wi-Fi в метро
6-я сборка #webview-experimental!

#webview-experimental!

* Отменил вчерашнее обновление чёрного списка ресурсов, т.к. стало только хуже. Надо будет попробовать разные варианты (см. пункт 2);

* Временно добавил настройку фильтра ресурсов. Регулярное выражение можно поменять в "Настройках подключения". Это выражение применяется к адресам всех загружаемых ресурсов. Заблокированные ресурсы появляются в логе как Blocked, а загруженные — Requesting;

Значение по умолчанию: .*(ads\.adfox\.ru|mc\.yandex\.ru|ac\.yandex\.ru|\.mp4$).*
Значение, которое было в 5-й сборке: .*(adfox(\.ru|.*\.js)|(mail|yandex|tns-counter)\.ru(google(tagmanager|-analytics))\.com|sync\.1dmp\.io|\.mp4).*


Актуальная сборка webview-experimental всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
источник
2018 August 31
Wi-Fi в метро
364-я сборка #master!#master! Медленно готовимся к релизу.

* Добавлен выключатель MosMetroV3. Если вы не находитесь в Санкт-Петербурге и V3 работает слишком медленно, то эта настройка может помочь. Находится она в самом начале "Настроек подключения";

* Обновлен модуль отправки статистики. Теперь я смогу понять, нормально ли отработал MosMetroV3 и как много времени это заняло.


Q: Готовимся к релизу?
A: Да, хотелось бы выпустить релиз на первой неделе сентября (в идеале — вообще 1-го), так как 1.8.3.2 не работает в СПб. Если завтра не будет обнаружено никаких критичных проблем, то это будет самое время для обновления. Потом в #master уже будут обширные изменения, связанные с WebView или SDK-27, так что либо сейчас, либо ещё не скоро.


Актуальная сборка master всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=master
источник
2018 September 01
Wi-Fi в метро
VK
"Wi-Fi в метро" — официальная группа приложения
Всем привет! Только что вышла новая версия 1.9 (код 71) спустя 114 коммитов и ровно 9 месяцев с момента последнего релиза! :) Изменений много, но не так много, как хотелось бы. Основная причина для выпуска этого обновления — появление нового алгоритма, который можно заметить по адресу welcome.wi-fi.ru в строке браузера. Дело в том, что версия 1.8.3.2 обходила этот алгоритм, но где-то в середине лета MosMetroV3 стал обязательным в Санкт-Петербурге. В Москве его по прежнему можно обойти, но, скорее всего, это ненадолго. ★ Краткий список изменений (некотоыре изменения были сделаны в начале года, поэтому их описание может быть неточным) Процесс подключения: + Добавлен алгоритм MosMetroV3 для Санкт-Петербурга (отключается в настройках подключения) + Добавлены новое отслеживаемое событие Wi-Fi (supplicant.STATE_CHANGE) * HTTP-клиент значительно переработан для упрощения работы с ответами сервера * Обновлен список адресов generate_204 для проверки соединения с интернетом * Обновлены значения User-Agent для соответствия…
источник
2018 September 02
Wi-Fi в метро
365-я сборка #master, 9-я сборка #sdk-27, 33-я сборка #webview и 7-я сборка #webview-experimental!

* Релиз 1.9 (код 71)
* Обновлены ссылки на сообщества
* Удалены старые настройки и неиспользуемые функции
* Обновлён список User-Agent для рандомайзера


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

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

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

sdk-27 — https://mosmetro.duckdns.org/api/v1/download.php?branch=sdk-27
источник
2018 September 03
Wi-Fi в метро
8-я сборка #webview-experimental! Вырезал большую часть кода, из-за которого возникали проблемы.

* Скрипт входа теперь загружается путём встраивания в страницу авторизации. WebView будет считать, что этот скрипт так и пришёл в ответе от сервера. Зависать тут просто нечему, да и зависимость от версии Android тоже исчезла (должно работать везде);

* Удалён Synchronizer. Ошибок Synchronizer timed out больше не может быть в принципе. Состояние WebView теперь определяется по текущему URL страницы. Точность этого метода достаточно высока, как показали испытания прошлых сборок;

* Потеряна обратная связь от скрипта авторизации. Это побочный эффект нового метода загрузки скриптов, из-за которого приложение пока не может определить, загрузился скрипт или нет. Однако теперь в лог пишутся все сообщения консоли Chrome, так что можно будет понять, что же случилось со скриптом.


Актуальная сборка webview-experimental всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview-experimental
источник
2018 September 05
Wi-Fi в метро
366-я сборка #master и 34-я сборка #webview!

В обеих ветках:
* Уведомление об успешном подключении больше не пропадает при запуске с ярлыка. Также планирую сделать автоматическое удаление уведомления через некоторый промежуток времени;
* Добавлен ярлык для быстрой остановки фонового процесса. Может помочь в автоматизации подключения через AutoShortcut;

В webview:
* Выполнено слияние с webview-experimental, т.к. та более-менее работает, а поддерживать обе ветки я всё-равно не смогу. Сама ветка webview-experimental была удалена, поэтому приложение предложит обновиться до #master. Это сообщение можно проигнорировать и выбрать ветку #webview в главном меню;
* Исправлен обход welcome.wi-fi.ru при выключенном алгоритме MosMetroV3;
* MosMetroV2WV теперь отправляет те же метрики, что и MosMetroV2, что позволит мне отслеживать работоспособность алгоритма в разных сегментах сети;


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

Вчера проходил мимо остановки с провайдером Enforta и выяснил, что они тоже перешли на алгоритм MosMetroV2 (сегмент enforta_bus_stops). Однако у них был установлен заголовок HTTP X-Content-Type-Options, который не позволял загрузиться некоторым скриптам в WebView из-за неправильного MIME type. Теперь этот заголовок и X-XSS-Protection вырезаются перед попаданием в WebView, так что возможно, что теперь MosMetroV2WV будет работать и с Enforta!

Вот текст ошибки из консоли Chrome:
Refused to execute script from 'http://wn.wiflyad.net/wn.js?v=1' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.


Пока что это единственное изменение, т.к. сегодня я немного ограничен по времени. Вчерашний тест показал, что #webview подключалась во всех случаях: в автобусах, в метро, на МЦК и в трамваях (по крайней мере у меня). Так что, как минимум, проблему с Netbynet удалось решить :)


Актуальная сборка webview всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 September 14
Wi-Fi в метро
36-я сборка #webview! Опять исправления вылетов.

* Добавлена проверка компиляции RegEx. Оказалось, что Pattern.compile() вполне может уронить всё приложение, если указать в выражении неправильное число скобок;

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

* Исправлены вылеты, найденные с помощью ACRA. Не все, но самые "популярные".


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

Здесь также исправлен самый популярный вылет этой недели. Я его исправляю уже в третий раз, но NullPointerException всё никак не исчезает. На этот раз добавил проверку прямо перед вызовом проблемного метода. Если и тут вылетит, то я даже и не знаю :)


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

P.S. Простите, что опять пропал. Привыкаю к ритму магистратуры, болею и опять накопил 750 сообщений везде, где только можно. Постараюсь за выходные всё разобрать :)
источник
2018 September 16
Wi-Fi в метро
368-я сборка #master и 37-я сборка #webview

Теперь приложение будет пытаться подключиться с помощью алгоритма MosMetroV3 (вместо MosMetroV2), если оно не смогло определить провайдера. Дело в том, что MosMetroV2 по умолчанию не умеет обходить welcome.wi-fi.ru, из-за чего подключение завершалось с ошибкой.

Это изменение можно отменить, отключив MosMetroV3 в настройках. В таком случае приложение снова будет предполагать, что в любой непонятной ситуации нужно использовать алгоритм MosMetroV2.


master — https://mosmetro.duckdns.org/api/v1/download.php?branch=master
webview — https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 September 17
Wi-Fi в метро
38-я сборка #webview

Алгоритм MosMetroV2WV теперь может определять, что устройство было временно заблокировано, и писать об этом в лог. Это изменение также сделает статистику банов более точной, что позволит лучше оценить эффективность ветки webview.


Актуальная сборка webview всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 September 25
Wi-Fi в метро
39-я сборка #webview!

* Добавлен вывод в лог страницы авторизации в случае ошибки (например, когда CSRF-токен не найден);

* Исправлен вывод пустых ответов в лог (от заблокированной рекламы);

* Почищен код WebViewService: убрал JavascriptInterface, который больше не используется;

* Доработан механизм повторных попыток в HTTP-клиенте. Теперь если указать 0 попыток, то первый запрос в любом случае произойдёт;

* Отключен повтор запросов из WebView. Я давно собирался это сделать. Посмотрим, к чему это приведёт;

* Пока приложение ожидает завершение работы скрипта авторизации, оно также будет периодически (раз в 10 секунд) проверять соединение с интернетом на случай, если скрипт отработал, но не завершился (костыль, но во многих случаях спасёт);

* Настройка pref_webview_enabled заменена на отдельную галочку для MosMetroV2WV и сброшена на значение по умолчанию (вкл);

* Исправлен вылет приложения при прерывании подключения на этапе ожидания скрипта (ACRA);

* Скрипт авторизации теперь записывает в лог все мутации DOM, связанные с изменением количества элементов. Т.е. в логе теперь должно быть видно, что на странице авторизации появились какие-то элементы (особенно кнопки). Надеюсь, что это поможет с отладкой скрипта, а также что объем лога не вырастет в 10 раз.

Если я ничего не сломал, то эта сборка должна стать последней. После этого будет произведено слияние #webview с #master, где MosMetroV2WV будет отключен по умолчанию. В результате большинство пользователей master не заметит разницы, пока мы сможем продолжать тестирование в одной общей ветке.

И да, опять я накопил кучу сообщений. Постараюсь разобрать в течение этой недели. Надо что-то с этим делать :)


Актуальная сборка webview всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
Wi-Fi в метро
Кстати, нас ровно тысяча! Ура :)
источник
2018 September 26
Wi-Fi в метро
40-я сборка #webview!

* Добавлен селектор для кнопки "Нажмите сюда чтобы войти в Интернет" (точно текст не помню);

* Скрипт авторизации теперь выводит в лог код всех элементов, на которые он кликнул. Это поможет понять, какие элементы он пропустил или наоборот активировал слишком много раз;

* Удалены повторяющиеся сообщения при периодической проверке доступа в интернет во время ожидания завершения скрипта;

* Сайт wi-fi.ru больше не будет рендериться в конце подключения (но запрос уходить будет). Я подозреваю, что именно из-за него приложение не всегда точно проверяет соединение. Сайт очень тяжёлый (по сравнению с остальными страницами) и может вызывать конфликты, т.к. загружается одновременно с проверкой. Да и просто он занимает примерно половину лога, не предоставляя полезной информации;

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


Актуальная сборка webview всегда находится здесь: https://mosmetro.duckdns.org/api/v1/download.php?branch=webview
источник
2018 October 03
Wi-Fi в метро
Похоже, что на МЦК сделали свой аналог MosMetroV3 – перед простым MosMetroV2 идёт несколько редиректов, без которых авторизация не проходит. Новый сегмент называется mcc_rm (вместо простого mcc). Так что если приложение не может определить провайдера на МЦК, то это оно. Постараюсь исправить в ближайшее время. Возможно даже выполню слияние master и webview раньше срока, т.к. там много полезных наработок для реализации новых алгоритмов.
источник