(Un) applicazione Habr ufficiale - HabrApp 2.0: uttene accessu

Una sera languida è già abbastanza noiosa, eiu, sfogliandu ufficiale L'applicazione Habr, una volta aghju piegatu i mo dita, una per ogni funzione chì ùn funziona micca. Quì, per esempiu, ùn pudete micca cummentà, quì vi hè denegatu u dirittu di votu, è in generale, perchè e formule ùn sò micca visibili nantu à u screnu?

(Un) applicazione Habr ufficiale - HabrApp 2.0: uttene accessu
Hè statu decisu: avemu bisognu di qualcosa cunfortu, piacevule, qualcosa di u nostru. E a vostra propria applicazione per Habr?
Lasciami dà uni pochi di screenshots per capisce a situazione.

(Un) applicazione Habr ufficiale - HabrApp 2.0: uttene accessuSembra qualcosa cusì si - di. applicazione habr.com

Lista di "inconvenienti"

  • Ùn pudete micca valutà una publicazione chì a so valutazione hè diversa da 0
  • Ùn hè micca sempre pussibule di scrive un cumentu
  • I sondaggi ùn funzionanu micca
  • E formule ùn sò micca visibili in tema scuru (negru nantu à neru)
  • Ùn sò micca tutti i marcati dispunibuli

Iè, l'app ùn hè micca stata aghjurnata da l'aostu di l'annu passatu, ma hè sempre male. In generale, deve esse riparatu.

Prima parte. Cerchendu accessu.

Quick Query Google "habrahabr API" dice chì hè digià abbastanza obsoleta repository nantu à Github, micca aghjurnatu dapoi Nuvembre 21 2016, è questu, per un mumentu, dui anni è mezu.

Ignorendu u fattu chì questu hè PHP, scorri è leghje:

Ottene l'ID di l'applicazione

Approfittendu di sta forma nantu à Habrahabr, avete bisognu di descriverà brevemente l'essenza di a nova applicazione è u scopu per quale hà bisognu di una API.

Ùn ci hè micca quistione, s'è avete bisognu di accede, allora avete bisognu. Scrivemu una lettera (abbreviata):

Lettera

Ci hè un desideriu di fà una applicazione per Habr basatu annantu à PWA. Ci hè parechje ragioni per questu. 

U primu è più ovvi: l'applicazione Android ùn risponde micca à i mo bisogni persunali.

Siconda: ùn ci sò micca abbastanza notificazioni native nantu à ogni tipu di cose chì venenu di solitu per email (cummenti, per esempiu).

Terzu: digestioni persunali (cum'è una perspettiva) nantu à e persone / centri chì m'interessanu, tenendu in contu i mo interessi.

A risposta, sicuru, ùn era micca assai piacevule, ma almenu onesta:

Sfortunatamente, l'accessu à a nostra API ùn hè micca dispunibule attualmente. Avemu pensatu à ripiglià a furnisce l'accessu dopu avè finitu di finalizà l'API, ma ùn avemu micca ancu data precisa, perchè Attualmente simu occupati à risolve altre attività prioritarie.

"Va bè, senza prublema! Avemu da vene cun qualcosa!" - Mi dissi è mi misi à circà.

A seconda parte. Scavi profondi.

Basatu nantu à a logica, se l'applicazione hè in esecuzione, allora hà accessu à l'API, è hè cablata in l'applicazione. Analizemu.

Siccomu avemu trattatu cù u trafficu, Wireshark hè a nostra scelta. Micca senza qualchì dolore, dopu avè cunnessu u telefunu à Internet via un computer desktop, apremu l'applicazione è fighjemu e dumande:

(Un) applicazione Habr ufficiale - HabrApp 2.0: uttene accessu
Hè chjaru chì nunda hè chjaru

Iè, tuttu hè criptatu, ma ùn vogliu micca mess with cryptography. Allora avete bisognu di circà l'applicazione stessa.

Decompiled .apk, cuminciamu à circà. Chì ci hè bisognu di qualsiasi API? Diritta, endpoint, u locu induve vanu tutte e dumande. Questu hè probabilmente http (s), pruvemu à truvà "https://":

In u schedariu AuthLinkManager.smali truvamu

.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"

Questu hè u codice per a macchina virtuale Android (Dalvik VM), micca assai comprensibile per l'omu, ma ancu assai informativu. Questi trè custanti, à ghjudicà da u so cuntenutu è u so nome, è ancu u repository GitHub, sò usati per dumandà un token d'accessu cù u metudu GET.

Fighjemu più in là. U schedariu chì vene dopu in a ricerca hè NetworkModule.smali:

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

È quì hè u locu per andà cù e vostre richieste!

Per chì u cliente auto-scrittu per travaglià bè, ci hè solu una cosa da capisce - client_id, chì hè probabilmente un identificatore unicu per l'applicazione.

Tuttavia, a ricerca di stu testu in u codice fonte ùn hà micca purtatu à truvà infurmazioni pertinenti ...

Ma di colpu in unu di i fugliali i mo ochji anu pigliatu alcune linee interessanti:

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

Questu, cum'è pudete capisce, hè una entrata di log. Ma arregistramentu chì?

Terza parte. Quessi sò i logs!

Avemu aduprà adb logcat per vede i logs di l'applicazione.

(Un) applicazione Habr ufficiale - HabrApp 2.0: uttene accessu

Inaspettatamente, i logs sò diventati ancu più detallati di l'espertu.

Quì ùn avemu micca solu ciò chì avemu bisognu client_idma token utilizatore / applicazione, è login и password in testu chjaru!

Alcune teorie di cuspirazioneA mera prisenza di un login è una password in i logs ùn dannu nunda, postu chì sti logs ponu esse letti solu cù diritti di root o una cunnessione via adb. Ma a causa di u fattu chì trà e persone chì leghje Habr ci sò sviluppatori Android chì ponu avè attivatu u debugging, questu diventa un prublema.

In questu casu, "caricamentu gratuitu" in l'aeroportu pò esse un furtu di contu, ma quale hè bisognu?
Da sti logs pudemu estrarre:

  • client_id и apikeynecessariu per accede Api;
  • URL d'autorizazione di l'utilizatori (stranu, ma ùn ci hè nunda in u repositoriu nantu à stu metudu, forse ùn hè micca furnitu?)

Hè cusì chì hè accadutu. Basatu annantu à sta piccula ricerca, u travagliu hè digià in corso nantu à un picculu prughjettu - a nostra propria implementazione di una applicazione mobile. Pregu à quelli chì volenu aiutà à scrive un missaghju, è tutti l'altri - à votu (perchè vogliu capisce s'ellu ci hè bisognu di questu).

Ti ringraziu per a vostra attenzione!

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Aduprate l'applicazione mobile Habr?

  • Iè, l'aghju utilizatu, sò cuntentu

  • Iè, l'aghju utilizatu, l'applicazione provoca inconvenienti

  • No, aghju utilizatu a versione web in u mo telefunu

  • Innò, aghju utilizatu Habr da u mo urdinatore

357 utilizatori anu vutatu. 30 utilizatori si sò astenuti.

Source: www.habr.com

Add a comment