(Не)официално приложение на Habr - HabrApp 2.0: получаване на достъп

Една вяла и вече доста скучна вечер, аз, разлиствайки официален Приложение Habr, за пореден път свих пръсти, по един за всяка неработеща функция. Тук например не можете да коментирате, тук ви отказват да гласувате и въобще защо формулите не се виждат на екрана?

(Не)официално приложение на Habr - HabrApp 2.0: получаване на достъп
Беше решено: имахме нужда от нещо удобно, приятно, нещо наше. Какво ще кажете за вашето собствено приложение за Habr?
Нека ви дам няколко екранни снимки, за да разберете ситуацията.

(Не)официално приложение на Habr - HabrApp 2.0: получаване на достъпИзглежда нещо подобно този - на. приложение habr.com

Списък с "неудобства"

  • Не можете да оценявате публикация, чиято оценка е различна от 0
  • Не винаги е възможно да напишете коментар
  • Анкетите не работят
  • Формулите не се виждат в тъмна тема (черно върху черно)
  • Не всички отметки са налични

Да, приложението не е актуализирано от август миналата година, но все още е лошо. Като цяло трябва да се поправи.

Част първа. Търся достъп.

Бърза заявка в Google "habrahabr API" пише, че вече е доста остаряло хранилище в Github, не е актуализиран оттогава Ноември 21 2016, и това за момент, две години и половина.

Пренебрегвайки факта, че това е PHP, превъртете надолу и прочетете:

Получаване на ID на приложението

Възползвам се тази форма на Habrahabr, трябва да опишете накратко същността на новото приложение и целта, за която се нуждае от API.

Няма съмнение, че ако трябва да получите достъп, значи имате нужда от него. Пишем писмо (съкратено):

писмо

Има желание да се направи приложение за Habr, базирано на PWA. Причините за това са няколко. 

Първият и най-очевиден: приложението за Android не отговаря на личните ми изисквания.

Второ: няма достатъчно родни известия за всякакви неща, които обикновено идват по имейл (коментари, например).

Трето: лични дайджести (като гледна точка) за хора/хъбове, които ме интересуват, като се вземат предвид моите интереси.

Отговорът, разбира се, не беше много приятен, но поне честен:

За съжаление в момента няма достъп до нашия API. Планираме да възобновим предоставянето на достъп, след като приключим с финализирането на API, но все още нямаме точни дати, т.к. В момента сме заети с решаването на други приоритетни задачи.

"Добре няма проблем! Ще измислим нещо!" – казах си и започнах да търся.

Част две. Дълбоки изкопи.

Въз основа на логиката, ако приложението работи, тогава то има достъп до API и е свързано към приложението. Да анализираме.

Тъй като имаме работа с трафик, Wireshark е нашият избор. Не без известни болки, след като свързахме телефона към интернет чрез настолен компютър, отваряме приложението и разглеждаме заявките:

(Не)официално приложение на Habr - HabrApp 2.0: получаване на достъп
Ясно, че нищо не е ясно

Да, всичко е криптирано, но не искам да се забърквам с криптографията. След това трябва да погледнете вътре в самото приложение.

Декомпилиран . Apk, нека започнем да търсим. От какво се нуждае всеки API? правилно, крайна точка, мястото, където отиват всички заявки. Това вероятно е http(s), нека се опитаме да намерим „https://“:

Във файла AuthLinkManager.smali намирам

.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"

Това е кодът за виртуалната машина на Android (Далвик В.М.), не много разбираемо за хората, но все пак доста информативно. Тези три константи, съдейки по тяхното съдържание и име, както и хранилището на GitHub, се използват за заявяване на токен за достъп чрез метода GET.

Да погледнем по-нататък. Файлът, който се появява следващият при търсенето, е NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

И тук е мястото, където да отидете с вашите заявки!

За да може самонаписаният клиент да работи правилно, остава само едно нещо, което трябва да разберете - client_id, което най-вероятно е уникален идентификатор за приложението.

Търсенето на този текст в изходния код обаче не доведе до намиране на подходяща информация...

Но изведнъж в един от файловете очите ми хванаха няколко интересни реда:

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

Това, както можете да разберете, е запис в дневника. Но запис на какво?

Част трета. Това са трупите!

употреба adb logcat за преглед на регистрационните файлове на приложението.

(Не)официално приложение на Habr - HabrApp 2.0: получаване на достъп

Неочаквано дневниците се оказаха дори по-подробни от очакваното.

Тук имаме не само това, от което се нуждаем client_idно жетон потребител/приложение и Вход и парола в чист текст!

Някои теории на конспирациятаСамото присъствие на потребителско име и парола в регистрационните файлове не вреди на нищо, тъй като тези регистрационни файлове могат да се четат само с root права или връзка чрез adb. Но поради факта, че сред хората, които четат Habr, има разработчици на Android, които може да имат разрешено отстраняване на грешки, това се превръща в проблем.

В този случай „безплатното таксуване“ на летището може да доведе до кражба на акаунт, но кому е нужно?
От тези регистрационни файлове можем да извлечем:

  • client_id и apikeyнеобходими за достъп API;
  • URL адрес за упълномощаване на потребител (странно, но в хранилището няма нищо за този метод, може би не е предоставен?)

Така и стана. На базата на това малко проучване вече се работи по малък проект - собствено внедряване на мобилно приложение. Моля тези, които искат да помогнат, да напишат съобщение, а всички останали - да гласуват (защото искам да разбера дали някой има нужда от това).

Спасибо за внимание!

В анкетата могат да участват само регистрирани потребители. Впиши се, Моля те.

Използвате ли мобилното приложение Habr?

  • Да, ползвам го, доволен съм

  • Да, използвам го, приложението причинява неудобство

  • Не, използвам уеб версията на телефона си

  • Не, използвам Habr от моя компютър

357 потребители гласуваха. 30 потребители се въздържаха.

Източник: www.habr.com

Добавяне на нов коментар