Applikazzjoni Habr (mhux) uffiċjali - HabrApp 2.0: jiksbu aċċess
Filgħaxija waħda languid u diġà pjuttost boring, I, leafing permezz uffiċjali Applikazzjoni Habr, għal darb'oħra I bent swaba tiegħi, wieħed għal kull karatteristika li ma taħdem. Hawnhekk, pereżempju, ma tistax tikkummenta, hawn inti mċaħħad mid-dritt tal-vot, u b'mod ġenerali, għaliex il-formuli mhumiex viżibbli fuq l-iskrin?
Ġie deċiż: kellna bżonn xi ħaġa komda, pjaċevoli, xi ħaġa tagħna stess. Xi ngħidu dwar l-applikazzjoni tiegħek stess għal Habr?
Ħa nagħtikom ftit screenshots biex tifhem is-sitwazzjoni.
Jidher xi ħaġa bħal din dan - ta'. applikazzjoni habr.com
Lista ta' "inkonvenjenzi"
Ma tistax tikklassifika pubblikazzjoni li l-klassifikazzjoni tagħha hija differenti minn 0
Mhux dejjem possibbli li tikteb kumment
L-istħarriġ ma jaħdimx
Il-formuli mhumiex viżibbli f'tema skura (iswed fuq iswed)
Mhux il-bookmarks kollha huma disponibbli
Iva, l-app ma ġietx aġġornata minn Awwissu tas-sena l-oħra, iżda għadha ħażina. B'mod ġenerali, jeħtieġ li jiġi ffissat.
L-ewwel parti. Tfittex aċċess.
Mistoqsija ta' Google malajr "habrahabr API" jgħid li huwa diġà pjuttost skadut repożitorju fuq Github, mhux aġġornat minn dakinhar Novembru 21 2016, u dan, għal mument, sentejn u nofs.
Injora l-fatt li dan huwa PHP, iskrollja 'l isfel u aqra:
Ikseb l-ID tal-Applikazzjoni
Jieħdu vantaġġ din il-formola fuq Habrahabr, trid tiddeskrivi fil-qosor l-essenza tal-applikazzjoni l-ġdida u l-iskop li għalih teħtieġ API.
M'hemm l-ebda mistoqsija, jekk għandek bżonn tikseb aċċess, allura għandek bżonnha. Aħna niktbu ittra (imqassar):
Ittra
Hemm xewqa li ssir applikazzjoni għal Habr ibbażata fuq PWA. Hemm diversi raġunijiet għal dan.
L-ewwel u l-aktar ovvju: l-applikazzjoni Android ma tissodisfax ir-rekwiżiti personali tiegħi.
It-tieni: m'hemmx biżżejjed notifiki indiġeni dwar kull xorta ta 'affarijiet li normalment jiġu bl-email (kummenti, pereżempju).
It-tielet: diġesti personali (bħala perspettiva) fuq nies/hubs li jinteressawni, b'kont meħud tal-interessi tiegħi.
It-tweġiba, ovvjament, ma kinitx pjaċevoli ħafna, iżda għall-inqas onesta:
Sfortunatament, l-aċċess għall-API tagħna bħalissa mhuwiex disponibbli. Qed nippjanaw li nibqgħu nipprovdu l-aċċess wara li nispiċċaw nifinalizzaw l-API, iżda għad m'għandna l-ebda data eżatta, għaliex Bħalissa ninsabu okkupati nsolvu kompiti prijoritarji oħra.
“Tajjeb, l-ebda problema! Se noħorġu b’xi ħaġa!” - għidt lili nnifsi u bdejt infittex.
It-tieni parti. Skavi fil-fond.
Ibbażat fuq il-loġika, jekk l-applikazzjoni tkun qed taħdem, allura għandha aċċess għall-API, u hija mdaħħla b'mod iebes fl-applikazzjoni. Ejja nanalizzaw.
Peress li qed nittrattaw mat-traffiku, Wireshark hija l-għażla tagħna. Mhux mingħajr xi uġigħ, wara li kkonnettja t-telefon ma 'l-Internet permezz ta' kompjuter desktop, aħna niftħu l-applikazzjoni u nħarsu lejn it-talbiet:
Huwa ċar li xejn mhu ċar
Iva, kollox huwa encrypted, imma ma rridx niddejjaq mal-kriptografija. Imbagħad għandek bżonn tħares ġewwa l-applikazzjoni nnifisha.
Dekompilat .apk, ejja nibdew infittxu. X'għandu bżonn xi API? Dritt, endpoint, il-post fejn imorru t-talbiet kollha. Dan huwa probabbilment http(s), ejja nippruvaw insibu "https://":
Dan huwa l-kodiċi għall-magna virtwali Android (Dalvik VM), ma tantx jinftiehem mill-bnedmin, iżda xorta pjuttost informattiv. Dawn it-tliet kostanti, meta wieħed jiġġudika mill-kontenut u l-isem tagħhom, kif ukoll ir-repożitorju GitHub, jintużaw biex jitolbu token ta’ aċċess bl-użu tal-metodu GET.
Ejja nħarsu aktar. Il-fajl li jmiss fit-tfittxija huwa NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
U hawn huwa l-post fejn tmur bit-talbiet tiegħek!
Biex il-klijent miktub minnu nnifsu jaħdem sew, fadal biss ħaġa waħda biex insemmu - client_id, li x'aktarx huwa identifikatur uniku għall-applikazzjoni.
Madankollu, it-tfittxija għal dan it-test fil-kodiċi tas-sors ma wasslitx biex tinstab informazzjoni rilevanti...
Imma f'daqqa waħda f'wieħed mill-fajls għajnejja qabdu xi linji interessanti:
Din, kif tista' tifhem, hija dħul ta' log. Imma jirreġistra xiex?
It-tielet parti. Dawn huma z-zkuk!
Aħna nużaw adb logcat biex tara logs tal-applikazzjoni.
B'mod mhux mistenni, iz-zkuk irriżultaw li kienu saħansitra aktar dettaljati milli mistenni.
Hawnhekk għandna mhux biss dak li għandna bżonn client_idImma token utent/applikazzjoni, u login и password f'test sempliċi!
Xi teoriji tal-konfoffaIs-sempliċi preżenza ta' login u password fil-logs ma tagħmel ħsara lil xejn, peress li dawn ir-logs jistgħu jinqraw biss jew bi drittijiet tal-għeruq jew b'konnessjoni permezz adb. Iżda minħabba l-fatt li fost in-nies li jaqraw Habr hemm żviluppaturi ta 'Android li jista' jkollhom id-debugging attivat, dan isir problema.
F'dan il-każ, "iċċarġjar b'xejn" fl-ajruport jista 'jirriżulta f'serq ta' kont, imma min għandu bżonnha?
Minn dawn ir-zkuk nistgħu niġbdu:
client_id и apikeymeħtieġa għall-aċċess api;
URL tal-awtorizzazzjoni tal-utent (stramba, iżda m'hemm xejn fir-repożitorju dwar dan il-metodu, forsi mhux ipprovdut?)
Hekk ġara. Ibbażat fuq din ir-riċerka ċkejkna, diġà għaddej xogħol fuq proġett żgħir – l-implimentazzjoni tagħna stess ta’ applikazzjoni mobbli. Nitlob lil min irid jgħin biex jiktbu messaġġ, u lil kulħadd – jivvota (għax irrid nifhem jekk xi ħadd għandu bżonn dan).
Grazzi tal-attenzjoni tiegħek!
Utenti reġistrati biss jistgħu jipparteċipaw fl-istħarriġ. Idħol, ta 'xejn.