23 ноября 2015
Беседка №65. «Темная сторона» Android-приложений
Илья Субботин
С развитием смартфонов в прямом смысле «поумнели» и программы. Однако, эта тенденция не всегда благоприятна для пользователя, особенно когда речь идёт о «теневой» работе приложений.
Недавнее исследование поведения Android-приложений указывает на ошеломляющий объём фонового интернет-трафика, который ни коим образом не улучшает работу системы, а лишь серьезно расходует заряд аккумулятора. Исследователи MIT и Global InfoTek провели тщательный анализ топовых приложений из каталога Google Play и обнаружили, что большая часть соединений ни коим образом не связана с взаимодействием непосредственно с приложением.
Результатом изысканий стал вывод, что 62.7% соединений, совершенных посредством популярных Android-приложений, входящих в топ-20 приложений на Google Play (не считая мессенджеры), можно отнести к разряду имплицитных (имеющих негласную фоновую деятельность, никак не влияющую на работу программы). Блокировка соединений с онлайн-ресурсами в рамках этих приложений не сможет повлечь за собой видимых или измеримых изменений в поведении программы.
В некоторых случаях такое имплицитное поведение связано с известными библиотеками A&A (Analytics and Advertising, аналитика и реклама), но к ним относятся лишь 43% случаев. Остальные соединения разделяются по разным сферам. В отчете говорится:
Twitter использует скрытые соединения для сбора информации о видео и других медиа-вложениях, отмечаемых пользователями в твитах. Приложение GO Keyboard посредством скрытого соединения отправляет набор идентификаторов на сервер launchermsg.3g.cn, а также неподдающуюся расшифровке информацию на nextbrowser.goforandroid.com. Pandora и Spotify используют социальные метрические сервисы Facebook, посылая информацию об использовании приложений. Другой пример, приложение Walmart использует определенную библиотеку от Red Laser (компания, специализирующаяся на сравнении цен) для работы с отсканированными штрих-кодами. Эта библиотека позволяет посылать информацию об отсканированном коде на сервер data.redlaser.com. Но, блокировка исходящей информации никак не влияет на работу сканера.
Как только команда получила вывод о том, что их механизмы обнаружения и блокировки точно обнаруживали фоновую активность в приложениях, не нанося урона производительности, они сразу же применили свои поисковые техники в исследовании пятисот самых популярных приложений на Google Play. Расширенный анализ показал, что 46.2% соединений внутри приложений являются скрытыми. Таблица ниже содержит самые частые запросы к различным сервисам по приложениям.
Тот факт, что API Google находятся в топе совсем не удивляет, однако позиция Gameloft может заставить задуматься. Несмотря на то, что из 500 приложений было протестировано лишь 17 продуктов от Gameloft, 87.4% соединений в их приложениях являются имплицитными.
Влияет ли это на расход заряда?
Несомненно, да, но уровень подобного влияния будет всецело зависеть от конкретного приложения. Поддерживающие связь с интернетом приложения уже будут иметь одно активное соединение, будь то Wi-Fi или мобильная сеть, поэтому затраты производительности на 1-2 дополнительных соединения будут незначительны. С другой стороны, Gameloft в среднем осуществляет по 46 скрытых соединений на каждое приложение. Даже если каждое из них использует совсем небольшой процент «лошадок» аппарат, то все вместе они дадут внушительную нагрузку.
Такое положение вещей не является откровением. Уже давно известно, что Android-приложения совсем не жалеют заряд аккумулятора наших смартфонов; многие продукты, в основу которых легла бизнес-модель freemium могут скачивать увесистые рекламные материалы в фоновом режиме, скрадывая скорость соединения и оставляя модем в активном состоянии намного дольше необходимого времени.
Всё же, подобные исследования объясняют, почему большие компании страдают от масштабных проблем с безопасностью и взлома информации пользователей. Разработчику, который создает продукт с дюжиной скрытых соединений без какого-либо влияния на сам сервис, зачастую не до безопасности частной информации. Очевиден и тот факт, что разработчикам нужно зарабатывать, да и включение в рекламу не является чем-то неправильным, но приложения совершают сотни соединений без ведома конечного пользователя, и это с большой долей вероятности скажется на расходе аккумулятора, сохранности частной информации или на всём сразу.
Оригинальный материал, автор — Джоел Хруска
Elir: подобные новости всплывают в новостных лентах с определенной периодичностью, в них чаще всего затрагиваются определенные продукты, как, например, в истории с множественными запросами местоположения клавиатурой Swype. Сложно сказать, что поголовно все скрытые соединения потенциально опасны, но нам, конечным пользователям, неприятен сам факт того, что «негласная деятельность» приложений как минимум негативно влияет на работу девайсов. Если копнуть глубже, то, скорее всего, найдётся много всего интересного. Я не алармист, но задуматься стоит. Тем более, что люди, стоящие за этим исследованием, довольно серьезно подошли к процессу.
Интересно, в Andriod 6 вроде можно будет полностью блокировать доступ в сеть любому приложению? То-есть что-бы прям вообще. Категорическая блокировка. Как по вашему, можно будет?
Что значит вроде? 6ка уже выкачена на Нексусы. Можно.
Но — приложения надо обновить только, что там со старыми будет — вот тут не знаю.
старые приложения ведут себя «как повезет». Это официально заявлено Google: «Приложение должно быть обновлено для поддержки системы отзываемых разрешений. В противном случае нормальная работа приложения не гарантируется.».
А, значит я правильно угадал. Новые приложения ОБЯЗАНЫ учитывать, что на запрос разрешения им может прилететь отказ и корректно отрабатывать эксепшен. Старые могут не понимать такого и падать с ошибкой. Ничего нового, но хорошо что сделали. Ещё внедрить поддержку фэйк-данных для упорных приложений надо было 😉
Приложения, как, впрочем, и разработчики, никому ничего не обязаны (особенно в контексте того, какая в обозримом будущем доля Android 6 на рынке — специально проверил перед отправкой: у вышедшего год назад Lollipop до сих пор только 25%). И, кстати, при отказе прилетает не «эксепшн», а пустые данные.
А фейковые данные — это какие? Вместо моих координат должны подставляться координаты Васи Пупкина? А почему именно его? А почему не Пети Васечкина?
Приложения обязаны соответствовать гайдлайнам ;). Но создатели могут и забить на это, ага.
Кстати, если прилетают пустые данные, то вообще странно, чего бы не работать любым приложениям?
Фейковые это не реальные. Пустые вместо реальных тоже под это попадают.
ага… точно!!!… вот купил ты смартфон вместо простой звонилки, и давай соединение вырубать, чтобы сделать из него как раз простую звонилку )))))
В чем смысл смартфона без сетевого соединения?!!!
Нет, что ты, мы все берём смартфоны для того, чтобы тратить аккумулятор и трафик на слив своих данных, который для работы большинства приложений нахрен не нужен. Ведь именно для этого и существуют смартфоны!
а что собственно, разве нет?))))) кроме читалок-фильмосмотрелок, все остальное таки требует соединения ))) ….
>>а что собственно, разве нет?)))
Эммммм… Нет. Могу тебя заверить что я брал смартфон совершенно не для того, чтобы сливать свои данные уйме в конец охреневших сволочей тратя на это свой трафик и аккумулятор в приложениях, которым этот слив нахрен не нужен.
А ты ради этого брал?
Ну а то что слив происходить будет в лббои случае итак понятно, но это же не значит что это правильно и с этим нужно мириться. И пусть DroidWall поможет мне в этом.
Если можно выключить определённые запросы от приложения без ущерба для его работы, то почему бы этого не сделать? Зачем мне сбор метрики для Яндекса через Кинопоиск? Под нож!
Правильно-правильно, отключить всю аналитику! А потом мы читаем фантастику про искусственный интеллект, персональные рекомендательные системы и мечтаем «вот бы и у нас так было…»
Кто мечтает? о_О
Я не хочу, чтоб так было. Пусть роботы в космосе свой искусственный интеллект применяют, а здесь нам не нужен тест Тьюринга на каждом шагу.
Т.е. вы покупаете мощные смартфоны, чтобы использовать их, как простые звонилки? Тогда почему не купить звонилки?
Смартфон нужно, а чтобы программы тратили заряд и трафик на активность, нужную не пользователю, а не пойми кому, это должно отключаться, что непонятного
А ещё чтобы кофе готовило, Т бесплатно.
Я выбираю не только смартфон, но и сценарии его использования.
Перед поездкой за границу придется включать мозг, да? А раньше можно?
если можно, то таки да )), но увы пока эта фигня не реализована в доступном для простого юзера виде (большая красная кнопка с надписью «отключить всю хрень кроме нужной»)… это танцы с бубном для активистов пока.. поэтому народ вырубает передачу данных вообще, что приводит смарт в состояние просто телефона и все…
Обезьяны тоже не сразу стали палкой фрукты сбивать… Сначали они ей просто ковыряли… 😉
вы издеваетесь над моею больной фантазией )))))))))…. Где по вашему ковыряли палкой обезьяны?))))) если не добывали при этом еду…….
например чтобы Яндекс знал какие функции Кинопоиска ты используешь чаще и какие надо совершенствовать а какие стоит выкинуть поскольку все равно никому не нужны.
Мне достаточно самому знать. Что-то дизайном Нового Кинопоиска они ни у кого не интересовались.
В том, что ряду приложений — фонарику, калькулятору, читалке, …, соединение с сетью не нужно. Абсолютно.
хм… смартфон то тогда зачем ))) все перечисленное вами спокойно реализуется на Java на любом просто телефоне?))) (ну фонарик если только нет, но он обычно на звонилках и так реализован), да и вообще не легче тогда к звонилке прикупить планшетец 7″ для всякой мультимедиа шняги…
Смартфон?
Для остальных приложений. SSH, Slack, если пользуетесь — социальные сети.
Так а зачем сбор данных приложениям которым эти данные не нужны? Зачем допустим калькулятору мое местоположение? Это просто пример.
>> все перечисленное вами спокойно реализуется на Java на любом просто телефоне?
1. Я правильно понимаю, что вы носите с собой два телефона одновременно? Смартфон + простой телефон. Причем не из-за разделения по симкам, а для того, чтобы запускать на них разные приложения.
2. Я правильно понимаю, что вы где-то нашли простые телефоны (не смартфоны) с диагональю 4″+? Чтобы комфортно гонять на них приложения, которые можно реализовать на Java.
3. Я правильно понимаю, что у вас есть источник Java-приложений, не уступающий Google Play?
Читалке нужно.
1) синхронизация последнего местоположения
2) доступ к библиотеке
Человек, а Вы, например, понимаете, что такое роуминг?
на любом андроиде получаем рут, ставим файрвол и сами решаем кому можно в интернет а кому нет.
Без рута — Opera Max
Вот например — очень удобно и можно видеть сетевую активность каждого приложения, если ему был разрешен доступ в сеть. Без всякого рута
А по доменам можно разбить?
именно в этой функции нет, тут похоже уже без рута не обойтись будет
Берёшь и отключаешь интернет рычажком в верхней панели 😉
Как раз доступ в сеть — нельзя. Много другого можно заблокировать в Android 6.0 но не это. При этом если у старого приложения по какой то причине (было поставлено до обновления на 6.0 например) доступа нет то поведение может быть…разным. У меня, при работе с гугловским софтом (у них тоже не все обновлено еще) были и падения причем в цикле пока руками не выдашь что нужно и просто не работоспособность (аттач в почте не отправляется).
То что блокировка отсылаемых данные не приводит к сбоям приложения это еще не значит что эти данные не нужны и что разработчик этими данными торгует (откуда знаю? хотя бы потому что я как раз разработчик который ставит изрядное количество аналитики, для того что бы знать как и где приложения используются, иногда и с привязкой к конкретным аккаунтам пользователей, данные в нашем случае собираются вовсе не для продажи или там таргетинга рекламы.)
файрвол и AdFree наше все! а можно и Xposed Framework поставить, тогда можно самому вибирать разрешения для приложений
Вполне ожидаемо, но всёравно обидно.
А вообще DroidWall спасёт отца русской демократии.
Рут и определенный набор программ решает эту ппроблему. Знания — сила!
В Emotion UI на аппаратах Huawei есть функция где можно разрешить или запретить доступ к сети для каждого приложения. Честно говоря, думал что везде есть что-то подобное
Через мобильную сеть у всех есть, но WiFi трафик это не ограничивает.
Там намного сильнее утилита. Приложениям можно вообще запретить соваться в интернет, в контакты, слать смс, делать фото и т.д. А еще ведется архив запретов, где можно увидеть любопытные данные. Тот же вконтакте в день раз до 700 пытается залезть в геоданные, даже если его не запускать.
и wifi тоже можно, ниже есть картинка
То что на картинке есть уже не у всех.
«Я не алармист» — так сказал бы каждый алармист!
Слово то какое выцепили из английского. Чем параноик не угодил?
«Я не синт» — именно так сказал бы синт)))
«Я не вэйклокщик!»
На запрос вэйклокщик Google выдает BetterBatteryStats на 4Pda)))))
Английский алармист мало чем отличается от греческого параноика. Какая-то поговорка прям получилась)
Ни одного из приложений с первой картинки у меня нет. Со второй только первое стоит.
Сами же себе вырыли яму, в которую свалились.
Описанный в статье левый фоновый трафик и потребление — это в некотором смысле бедствие и одна из основных причин, по которой я стараюсь избегать приложений там, где можно обойтись браузером. В своё время была тут статья и на тему, что лучше — программы или браузер. В описанном в статье аспекте, программа — не лучший выбор.
я сдуру перешeл на H2O
уже отказался. так вот кроме дурацкого сервиса 500мб трафика кончилиось за день с небольшим
все гугл апликации загружают на всякий случай ну дофига всякого на
смартфон, клинмастер хранит всё что удалил (или память о нём) почта
подгружает для удобтва всё что и так на сервере есть. решение там же.
варианта 2 либо кнопка очистить данные либо менедж спэйс и там очистить
данные . ничего не пропадает при следующем пуске программО всё подгрузит
что хочет (иногда как в гугле почта надо ввести подпись заново, но
этого стоит. кстати многие гугл программы уже при установке имеют кучу
мегабайт загруженного на всякий случай, мол вдруг юзеру интересно(при
инсталяции загружается не сама программ а готовый образ по региону)
хм…а нет такой штуки как в титаниум бэкапе — заморозка, но что бы при запуске проги из лаунчера она размораживалась, а по закрытия обратно замораживалась?
хотя не — это тогда будет Windows x86 =))