Aplicație (ne)oficială Habr - HabrApp 2.0: obținerea accesului

O seară lângă și deja destul de plictisitoare, eu, răsfoind oficial Aplicația Habr, încă o dată am îndoit degetele, câte unul pentru fiecare caracteristică nefuncțională. Aici, de exemplu, nu poți comenta, aici ți se interzice dreptul de vot și, în general, de ce formulele nu sunt vizibile pe ecran?

Aplicație (ne)oficială Habr - HabrApp 2.0: obținerea accesului
S-a hotărât: aveam nevoie de ceva confortabil, plăcut, ceva al nostru. Ce zici de propria ta aplicație pentru Habr?
Permiteți-mi să vă dau câteva capturi de ecran pentru a înțelege situația.

Aplicație (ne)oficială Habr - HabrApp 2.0: obținerea accesuluiCumva arată așa acest - de. aplicația habr.com

Lista de „neplăceri”

  • Nu puteți evalua o publicație a cărei evaluare este diferită de 0
  • Nu este întotdeauna posibil să scrii un comentariu
  • Sondajele nu funcționează
  • Formulele nu sunt vizibile pe tema întunecată (negru pe negru)
  • Nu toate marcajele sunt disponibile

Da, aplicația nu a fost actualizată din august anul trecut, dar este încă proastă. În general, trebuie reparat.

Prima parte. Caut acces.

Interogare rapidă Google "habrahabr API" se spune că este deja destul de depășit repertoriu pe Github, nu a fost actualizat de atunci Noiembrie 21 2016, și aceasta, pentru o clipă, doi ani și jumătate.

Ignorând faptul că acesta este PHP, derulați în jos și citiți:

Obținerea ID-ului aplicației

A profita acest formular pe Habrahabr, trebuie să descrieți pe scurt esența noii aplicații și scopul pentru care are nevoie de un API.

Nu există nicio întrebare, dacă trebuie să obțineți acces, atunci aveți nevoie de el. Scriem o scrisoare (abreviată):

scrisoare

Există dorința de a face o cerere pentru Habr pe baza PWA. Există mai multe motive pentru aceasta. 

Prima și cea mai evidentă: aplicația Android nu corespunde cerințelor mele personale.

În al doilea rând: nu există suficiente notificări native despre tot felul de lucruri care vin de obicei prin e-mail (comentarii, de exemplu).

În al treilea rând: rezumate personale (ca perspectivă) asupra oamenilor/huburilor care mă interesează, ținând cont de interesele mele.

Răspunsul, desigur, nu a fost foarte plăcut, dar cel puțin sincer:

Din păcate, accesul la API-ul nostru nu este disponibil momentan. Intenționăm să reluăm furnizarea accesului după ce terminăm finalizarea API-ului, dar nu avem încă date exacte, deoarece În prezent suntem ocupați cu rezolvarea altor sarcini prioritare.

"Bine nici o problema! Vom veni cu ceva!" - Mi-am spus și am început să caut.

Partea a doua. Săpături adânci.

Pe baza logicii, dacă aplicația rulează, atunci are acces la API și este conectată în aplicație. Să analizăm.

Din moment ce avem de-a face cu trafic, Wireshark este alegerea noastră. Nu fără câteva dureri, având conectat telefonul la internet printr-un computer desktop, deschidem aplicația și ne uităm la solicitări:

Aplicație (ne)oficială Habr - HabrApp 2.0: obținerea accesului
Clar că nimic nu este clar

Da, totul este criptat, dar nu vreau să mă încurc cu criptografia. Apoi trebuie să vă uitați în interiorul aplicației în sine.

Decompilat .apk, să începem să căutăm. De ce are nevoie orice API? Dreapta, punct final, locul unde merg toate cererile. Acesta este probabil http(e), să încercăm să găsim „https://”:

În dosar AuthLinkManager.smali găsim

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

Acesta este codul pentru mașina virtuală Android (Dalvik VM), nu foarte de înțeles pentru oameni, dar totuși destul de informativ. Aceste trei constante, judecând după conținutul și numele lor, precum și depozitul GitHub, sunt folosite pentru a solicita un token de acces folosind metoda GET.

Să privim mai departe. Fișierul care apare în continuare în căutare este NetworkModule.smali:

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

Și aici este locul unde să mergi cu cererile tale!

Pentru ca clientul auto-scris să funcționeze corect, mai rămâne un singur lucru de înțeles - client_id, care este cel mai probabil un identificator unic pentru aplicație.

Cu toate acestea, căutarea acestui text în codul sursă nu a condus la găsirea de informații relevante...

Dar dintr-o dată, într-unul dintre fișiere, ochii mei au prins câteva replici interesante:

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

Aceasta, după cum puteți înțelege, este o intrare de jurnal. Dar înregistrarea ce?

Partea a treia. Acestea sunt buștenii!

Folosim adb logcat pentru a vizualiza jurnalele aplicațiilor.

Aplicație (ne)oficială Habr - HabrApp 2.0: obținerea accesului

În mod neașteptat, jurnalele s-au dovedit a fi chiar mai detaliate decât se aștepta.

Aici avem nu numai ceea ce ne trebuie client_idDar jeton utilizator/aplicație și login и parolă în text simplu!

Câteva teorii ale conspirațieiSimpla prezență a unui login și a unei parole în jurnale nu dăunează la nimic, deoarece aceste jurnale pot fi citite doar cu drepturi de root sau o conexiune prin adb. Dar datorită faptului că printre cei care citesc Habr există dezvoltatori Android care ar putea avea depanarea activată, aceasta devine o problemă.

În acest caz, „încărcarea gratuită” la aeroport poate duce la furtul contului, dar cine are nevoie de ea?
Din aceste jurnaluri putem extrage:

  • client_id и apikeynecesare pentru a accesa api;
  • Adresa URL de autorizare a utilizatorului (ciudat, dar nu există nimic în depozit despre această metodă, poate nu este furnizată?)

Așa s-a întâmplat. Pe baza acestei mici cercetări, se lucrează deja la un mic proiect - propria noastră implementare a unei aplicații mobile. Îi rog pe cei care doresc să ajute să scrie un mesaj și pe toți ceilalți - să voteze (pentru că vreau să înțeleg dacă cineva are nevoie de asta).

Vă mulțumim pentru atenție!

Numai utilizatorii înregistrați pot participa la sondaj. Loghează-te, Vă rog.

Folosești aplicația mobilă Habr?

  • Da, il folosesc, sunt multumit de el

  • Da, îl folosesc, aplicația provoacă neplăceri

  • Nu, folosesc versiunea web pe telefonul meu

  • Nu, folosesc Habr de pe computer

Au votat 357 utilizatori. 30 utilizatori s-au abținut.

Sursa: www.habr.com

Adauga un comentariu