Блог :. Узнаем User-Agent официального приложения ВКонтакте (или же минутка юмора)

Узнаем User-Agent официального приложения ВКонтакте (или же минутка юмора)

23 Сен, 2016

Понадобилось, значит, мне выцепить User-Agent официальной приложухи ВКонтакте для Андроид. Выяснить-то удалось, формируется он как-то так:

USER_AGENT = String.format(Locale.US, "VKAndroidApp/%s-%d (Android %s; SDK %d; %s; %s %s; %s)", new Object[] { PackageInfo.versionName, PackageInfo.versionCode, Build.VERSION.RELEASE, Integer.valueOf(Build.VERSION.SDK_INT), Build.CPU_ABI, Build.MANUFACTURER, Build.MODEL, System.getProperty("user.language") });

Т.е. примерно такая строка - "VKAndroidApp/4.38-849 (Android 6.0; SDK 23; x86; Google Nexus 5X; ru)

Но, почитав код ниже, я неслабо так поугарал. Очень веселый код находится в файле com.vkontakte.android.api.ApiController.java. Подробности под катом.


Где смеяться:

  1. Я, конечно не имею по рукой гит блейма, но глядя на строку #5 не сложно догадаться об авторе писанного кода: https://vk.com/id25719408
  2. Строка #6, for (boolean bool = true;; bool = false) - это что блеать??
  3. Зачем вообще нужен цикл в строке #6, если скоуп все равно заканчивается return'ом в строке #35??
  4. Какую смысловую нагрузку несут конструкции str1 = str2 в строках ##15, 19, 21, 23
  5. Если вдруг словили эксепшн в строке #28 - то переходим в бесконечный цикл!!!
  6. Зачем нужна переменная j в строке #22 - хрен знает
  7. Отличное имя для константы FUCKING_AD_USER_AGENT = String.format(Locale.US, "VKApp/%s (Linux; U; Android %s; %s Build/%s)", new Object[] { str1, Build.VERSION.RELEASE, Build.MODEL, Build.ID });