(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamine

Ühel tuimal ja juba üsna igaval õhtul lehitsesin mina ametnik Habr rakendus, järjekordselt painutasin sõrmi, iga mittetöötava funktsiooni jaoks ühe. Siin näiteks ei saa kommenteerida, siin võetakse hääleõigus ära ja üleüldse, miks valemid ekraanil ei ole näha?

(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamine
Otsustati: vajame midagi mugavat, meeldivat, midagi oma. Aga teie enda taotlus Habrile?
Olukorra mõistmiseks annan teile mõned ekraanipildid.

(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamineNäeb välja midagi sellist это -. habr.com rakendus

"Ebamugavuste" nimekiri

  • Te ei saa hinnata väljaannet, mille reiting erineb 0-st
  • Alati pole võimalik kommentaari kirjutada
  • Küsitlused ei tööta
  • Valemid pole tumedal teemal nähtavad (must mustal)
  • Kõik järjehoidjad pole saadaval

Jah, rakendust pole eelmise aasta augustist saadik värskendatud, kuid see on endiselt halb. Üldiselt tuleb see parandada.

Esimene osa. Otsin juurdepääsu.

Kiire Google'i päring "habrahabr API" see ütleb, et see on juba üsna aegunud hoidla Githubis, pole pärast seda värskendatud November 21 2016, ja see, korraks, kaks ja pool aastat.

Ignoreerides tõsiasja, et see on PHP, kerige alla ja lugege:

Rakenduse ID hankimine

Kasutades ära see vorm Habrahabris peate lühidalt kirjeldama uue rakenduse olemust ja eesmärki, milleks see API-d vajab.

Pole kahtlust, kui teil on vaja juurdepääsu, siis on teil seda vaja. Kirjutame kirja (lühendatult):

Kirjutamine

On soov teha Habrile taotlus PWA põhjal. Sellel on mitu põhjust. 

Esimene ja kõige ilmsem: Androidi rakendus ei vasta minu isiklikele nõuetele.

Teiseks: pole piisavalt natiivseid teavitusi igasuguste asjade kohta, mis tavaliselt tulevad meili teel (näiteks kommentaarid).

Kolmandaks: isiklikud kokkuvõtted (perspektiivina) mind huvitavatest inimestest/keskustest, võttes arvesse minu huvisid.

Vastus polnud muidugi kuigi meeldiv, aga vähemalt aus:

Kahjuks pole juurdepääs meie API-le praegu saadaval. Plaanime juurdepääsu pakkumist jätkata pärast API lõpuleviimise lõpetamist, kuid meil pole veel täpseid kuupäevi, sest Hetkel tegeleme teiste prioriteetsete ülesannete lahendamisega.

"Olgu, pole probleemi! Me mõtleme midagi välja!" - ütlesin endale ja hakkasin otsima.

Teine osa. Sügavad kaevamised.

Loogika põhjal, kui rakendus töötab, on sellel juurdepääs API-le ja see on rakendusega ühendatud. Analüüsime.

Kuna tegemist on liiklusega, on meie valik Wireshark. Mitte ilma valuta, olles telefoni lauaarvuti kaudu Internetti ühendanud, avame rakenduse ja vaatame päringuid:

(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamine
Selge see, et miski pole selge

Jah, kõik on krüpteeritud, kuid ma ei taha krüptograafiaga jamada. Seejärel peate vaatama rakenduse enda sisse.

Dekompileeritud . APK, hakkame otsima. Mida iga API vajab? õige, tulemusnäitaja, koht, kuhu kõik taotlused lähevad. See on tõenäoliselt http(id), proovime leida "https://":

Failis AuthLinkManager.smali leida

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

See on Androidi virtuaalmasina kood (Dalvik VM), pole inimese jaoks kuigi arusaadav, kuid siiski üsna informatiivne. Neid kolme konstanti, otsustades nende sisu ja nime, samuti GitHubi hoidla järgi, kasutatakse juurdepääsuloa taotlemiseks meetodiga GET.

Vaatame edasi. Otsingus järgmisena kuvatav fail on NetworkModule.smali:

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

Ja siin on koht, kuhu oma soovidega minna!

Et isekirjutatud klient korralikult töötaks, tuleb välja mõelda vaid üks asi - client_id, mis on tõenäoliselt rakenduse kordumatu identifikaator.

Selle teksti otsimine lähtekoodist ei viinud aga asjakohase teabe leidmiseni...

Kuid äkki tabasid mu silmad ühes failis huvitavaid ridu:

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

Nagu aru saate, on see logikirje. Aga mida salvestada?

Kolmas osa. Need on palgid!

Me kasutame adb logcat rakenduste logide vaatamiseks.

(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamine

Ootamatult osutusid logid oodatust veelgi detailsemaks.

Meil pole siin mitte ainult seda, mida vajame client_idkuid märk kasutaja/rakendus ja logi и parool lihttekstina!

Mõned vandenõuteooriadAinuüksi sisselogimise ja parooli olemasolu logides ei kahjusta midagi, kuna neid logisid saab lugeda ainult kas juurõigustega või ühenduse kaudu adb. Kuid kuna Habrit lugevate inimeste seas on Androidi arendajaid, kellel võib olla silumine lubatud, muutub see probleemiks.

Sel juhul võib "tasuta laadimine" lennujaamas kaasa tuua kontovarguse, kuid kellele seda vaja on?
Nendest logidest saame välja võtta:

  • client_id и apikeyjuurdepääsuks vajalik API;
  • Kasutaja autoriseerimise URL (kummaline, kuid hoidlas pole selle meetodi kohta midagi, võib-olla pole seda ette nähtud?)

Nii see juhtuski. Selle pisikese uurimistöö põhjal on töö juba käimas väikese projektiga – meie enda mobiilirakenduse juurutamise kallal. Palun neil, kes soovivad aidata, kirjutada sõnum ja kõigil teistel - hääletada (sest ma tahan aru saada, kas kellelgi on seda vaja).

Tänan teid tähelepanu eest!

Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.

Kas kasutate Habri mobiilirakendust?

  • Jah, ma kasutan seda, olen sellega rahul

  • Jah, ma kasutan seda, rakendus tekitab ebamugavusi

  • Ei, ma kasutan oma telefonis veebiversiooni

  • Ei, ma kasutan Habrit oma arvutist

357 kasutajat hääletas. 30 kasutajat jäi erapooletuks.

Allikas: www.habr.com

Lisa kommentaar