Прототип читерского ASO продвижения +10

- такой же как Forbes, только лучше.

Всем привет!


Сразу скажу, что ещё ни одно мое приложение не пользовалось популярностью, поэтому скорее неверны мои личные суждения о бесполезности настройки ключевых фраз и описания приложения в Google Play. Но знаете, первое желание после публикации долгожданного приложения, чтобы пользователи, наконец, начали его устанавливать и пользоваться. Какое же это разочарование, когда этого не происходит и спустя длительное время, думаю, многие знают. Кажется, что вовсе нет смысла создавать что-то стоящее, если все равно его судьба храниться на свалке маркета.


За последние полгода два раза встречал на фрилансе заказы по разработке приложения для автоматического скачивания приложений в Google Play. Первый раз взялся из-за интереса, но опыта не хватило закончить, второй раз и не брался, потому что это оказалось вовсе не простым делом (больше даже в плане практического тестирования). Честно, не уверен, что в итоге вообще может что-то получится стоящее, поскольку не дошел до завершающего этапа.


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


Техническая сторона вопроса


Во-первых, нужны рут права на устройстве. Из ui думаю здесь и нечего создавать для обеспечения самой работы.


Также нужен, например, один foreground сервис с таймером и несколько ресиверов системных событий (интернет, экран и тп) при необходимости.


Какой собственно алгоритм? Вход в аккаунт — открытие страницы приложения — скачивание приложения — завершение установки приложения — удаление приложения — выход из аккаунта, т.е. смена аккаунта.


Что касается открытия страницы приложения, тут все просто:


startActivity(new Intent(Intent.ACTION_VIEW, 
    Uri.parse("market://details?id=" + pckg)));

С удалением тоже сложностей нет (построчно команды для выполнения)


"rm -rf /data/app/" + packageName + "*"
"rm -rf /data/data/" + packageName
"am broadcast -a " + Intent.ACTION_PACKAGE_REMOVED +
    " -d \"package:" + packageName + "\"" +
    " --ez android.intent.extra.REMOVED_FOR_ALL_USERS true" +
    " --ez " + Intent.EXTRA_DATA_REMOVED + " true" +
    " --ez " + Intent.EXTRA_DONT_KILL_APP + " false" +
    " --ei " + Intent.EXTRA_UID + " " + applicationInfo.uid +
    " --ei android.intent.extra.user_handle 0"

Если не послать оповещение об удалении, то иконка в меню не пропадет.


Как узнать об завершении установки скачиваемого приложения? Для этого наследуем NotificationListenerService и слушаем появление уведомления об окончании установки. Причем с рут правами проще дать себе на это разрешение:


// проверка
"settings get secure enabled_notification_listeners"
// разрешение
"settings put secure enabled_notification_listeners " + packageWithClassName
// надо учитывать здесь, что могут быть и другие слушатели

Для выхода из аккаунта можно попробовать удалить системную базу данных (может быть в разных местах) accounts.db. Не пробовал, поэтому не знаю точно, будет ли работать. Вообщем, во всяком случае, для этого есть более трудная альтернатива.


Также для контроля смены аккаунтов следует использовать интерфейс OnAccountsUpdateListener.


Остается самое сложное: вход в аккаунт и скачивание приложения (и выход из аккаунта, если с удалением бд не получается). То, что пользователю легче всего, сложнее приложению. По началу думал об эмулировании нажатий по экрану, но быстро понял, что это запредельно сложно (либо невозможно). Оказалось гораздо проще эмулировать нажатие клавиш (enter, tab, menu, up, left и тп). Соотвественно нужно знать их коды


public static final int CODE_UP = 19;
public static final int CODE_DOWN = 20;
public static final int CODE_LEFT = 21;
public static final int CODE_RIGHT = 22;
public static final int CODE_POWER = 26;
public static final int CODE_TAB = 61;
public static final int CODE_ENTER = 66;
public static final int CODE_MENU = 82;

И команды для их вызова:


"input keyevent " + code
// для ввода текста (например, логин с паролем)
"input text " + text

Все бы хорошо, но как узнать, что нажатия по нужному окну происходят? Для этого есть команда dumpsys window windows. Grepim нужные данные и должны справиться с этим. Также пытался отталкиваться от разметки текущего экрана (иерархия виджетов, идентификаторы), но не нашел простого решения для этого (было какое-то, но там даже не стоит пробовать, так как просто гигантский и непонятный output выдает).


Еще был вопрос, как контролировать, что, например, Google Play (кстати, логина это тоже касается; по-сути за авторизацию отвечает тоже системное приложение, т.е. никакой магии) загрузил данные (картинки, описание, отзывы), иначе просто не туда будут нажатия идти. Для начала узнаем uid требуемого приложения:


"dumpsys package " + packageName + " | grep -E 'userId'"

Потом слушаем, меняются ли (скорее увеличиваются) размеры получаемых и передаваемых пакетов (по таймеру). Если нет изменений какое-то время и есть соединение устойчивое, то все загружено. Думал анализировать трафик чуть ли не на уровне wireshark, но зачем все усложнять. Но, к сожалению, нет абсолютной гарантии (даже если бы все реквесты с респонзами контролировали).


"cat proc/uid_stat/" + uid + "/" +  (rcvIf ? "tcp_rcv" : "tcp_snd")

Вроде все по этой части.


Экономическая сторона вопроса


— Зачем тебе человеческие души?
— При нынешней экономике? Да это единственная стоящая вещь!
Бальтазар



Как можно уже понять, для данной цели требуется много "гугловских душ". Хорошо, их можно купить (либо создавать, пока не надоест для самых экономных). В среднем, цена одного аккаунта Google составляет 10 руб. Простая арифметика, мне нужно 1к установок => плачу 10к рублей.

По-моему, грустные цифры. Из моего опыта подобных покупок скажу, что вы запросто можете потерять всех их в любой момент (всмысле Google забанит). Даже дело не в перепродаже аккаунтов больше, сколько в ошибках использования, хотя это и может быть следствием первого. Не знаю точно, какие существуют способы борьбы гугла с этим. Скорее всего они определяют такую активность по данным ip адресов (не думаю, что и прокси здесь хороший помощник), частоте использования аккаунта (в том числе входе и выходе из него) и тд. Вообщем весь этот огород скорее всего себя не оправдает.


PS Не подставляйте рабочий аккаунт, поскольку все описанное выше нарушает политику использования сервисов Google Play, его также могут попросту забанить.


PPS По поводу опроса, если победит да, то скорее всего опубликую наработки здесь.


PPPS Опубликовал

Вы можете помочь и перевести немного средств на развитие сайта

Теги:



Комментарии (6):

  1. a1ien_n3t
    /#10667852

    Может глупость спрошу. Но раньше можно было зная логин пароль и andoid id.
    Качать приложения с маркета(что приравнивалось к установке)
    Не проще ли просто написать на комп боста со списком аккаутов и просто качать(да даже просто делать запросы на скачивание)
    Вот вам и накрутка.

    наверно уже не актуально
    В свое время в универе даже писал приложение которое скачивало apk из маркета.

    • androidovshchik
      /#10668114

      Нет простого решения. На то это и search optimization

  2. whoose_daddy
    /#10668524

    Возможно нужно было посмотреть в сторону AccessibilityService

    • androidovshchik
      /#10668536

      Спасибо. Да, кстати, тоже хороший вариант. Можно с его помощью мониторить экран. Но есть задачи, которые без рута не решить все равно

  3. asmrnv777
    /#10669078

    Попробуйте автоматизировать через UI Automator, я в своё время так писал полностью автоматическую регу аккаунтов (с антикапчей) и установку из гугл плея. Дело было года 3 назад, успеха не принесло. Гугл ещё в те времена успешно банил подобные аккаунты сразу после регистрации с завидной регулярностью.
    Ну и нужно учитывать, что установки в наши дни — уже не далеко не единственный показатель. Если вы установите и сразу удалите приложение, или не будете им «пользоваться», это будет скорее негативным фактором, чем позитивным.