Unu langvora kaj jam sufiĉe enuiga vespero, mi, foliumante oficiala Apliko Habr, denove mi fleksis miajn fingrojn, unu por ĉiu nefunkcianta funkcio. Ĉi tie, ekzemple, oni ne povas komenti, ĉi tie oni neas al vi la voĉdonrajton, kaj ĝenerale, kial la formuloj ne estas videblaj sur la ekrano?
Estis decidite: ni bezonis ion komfortan, agrablan, ion propran. Kio pri via propra aplikaĵo por Habr?
Lasu min doni al vi kelkajn ekrankopiojn por kompreni la situacion.
Aspektas io kiel ĉi tio ĝi - de. habr.com aplikaĵo
Listo de "malkomfortoj"
Vi ne povas taksi publikaĵon, kies takso diferencas de 0
Ne ĉiam eblas skribi komenton
Enketoj ne funkcias
Formuloj ne videblas en malhela temo (nigre sur nigra)
Ne ĉiuj legosignoj haveblas
Jes, la aplikaĵo ne estis ĝisdatigita ekde aŭgusto de la pasinta jaro, sed ĝi ankoraŭ estas malbona. Ĝenerale, ĝi devas esti riparita.
Unua parto. Serĉante aliron.
Rapida Google-Demando "habrahabr API" ĝi diras ke ĝi jam estas sufiĉe malmoderna deponejo sur Github, ne ĝisdatigita poste Novembro 21 2016, kaj ĉi tio, por momento, du jarojn kaj duonon.
Ignorante la fakton, ke ĉi tio estas PHP, rulumu malsupren kaj legu:
Akirante la Aplikan ID
Utiligante ĉi tiu formo en Habrahabr, vi devas mallonge priskribi la esencon de la nova aplikaĵo kaj la celo por kiu ĝi bezonas API.
Ne estas demando, se vi bezonas akiri aliron, tiam vi bezonas ĝin. Ni skribas leteron (mallongigita):
Letero
Estas deziro fari kandidatiĝon por Habr bazita sur PWA. Estas pluraj kialoj por ĉi tio.
La unua kaj plej evidenta: la Android-apliko ne plenumas miajn personajn postulojn.
Due: ne estas sufiĉe da denaskaj sciigoj pri ĉiaj aferoj, kiuj kutime venas per retpoŝto (komentoj, ekzemple).
Trie: personaj digestoj (kiel perspektivo) pri homoj/centroj kiuj interesas min, konsiderante miajn interesojn.
La respondo kompreneble ne estis tre agrabla, sed almenaŭ honesta:
Bedaŭrinde, aliro al nia API ne disponeblas nuntempe. Ni planas rekomenci provizi aliron post kiam ni finos finpretigi la API, sed ni ankoraŭ ne havas precizajn datojn, ĉar Nuntempe ni estas okupataj solvante aliajn prioritatajn taskojn.
“Bone, neniu problemo! Ni elpensos ion!" - Mi diris al mi kaj komencis serĉi.
Dua parto. Profundaj elfosadoj.
Surbaze de logiko, se la aplikaĵo funkcias, tiam ĝi havas aliron al la API, kaj ĝi estas fiksita en la aplikaĵon. Ni analizu.
Ĉar ni traktas trafikon, Wireshark estas nia elekto. Ne sen kelkaj doloroj, konektinte la telefonon al Interreto per labortabla komputilo, ni malfermas la aplikaĵon kaj rigardas la petojn:
Estas klare, ke nenio estas klara
Jes, ĉio estas ĉifrita, sed mi ne volas fuŝi kun ĉifro. Tiam vi devas rigardi en la aplikaĵon mem.
Malkompilita Apk, ni komencu serĉi. Kion bezonas iu ajn API? Ĝuste, finpunkto, la loko kie ĉiuj petoj iras. Ĉi tio verŝajne estas http(j), ni provu trovi "https://":
Ĉi tiu estas la kodo por la virtuala maŝino de Android (Dalvik VM), ne tre komprenebla por homoj, sed tamen sufiĉe informa. Ĉi tiuj tri konstantoj, juĝante laŭ sia enhavo kaj nomo, same kiel la GitHub-deponejo, estas uzataj por peti alirĵeton per la metodo. GET.
Ni rigardu plu. La dosiero, kiu aperas poste en la serĉo, estas NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
Kaj jen la loko por iri kun viaj petoj!
Por ke la memskribita kliento funkciu ĝuste, restas nur unu afero por eltrovi - client_id, kiu plej verŝajne estas unika identigilo por la aplikaĵo.
Tamen serĉi ĉi tiun tekston en la fontkodo ne kondukis al trovado de koncernaj informoj...
Sed subite en unu el la dosieroj miaj okuloj kaptis kelkajn interesajn liniojn:
Ĉi tio, kiel vi povas kompreni, estas protokolo-eniro. Sed registri kion?
Parto tri. Ĉi tiuj estas la ŝtipoj!
Ni uzas adb logcat por vidi aplikajn protokolojn.
Neatendite, la ŝtipoj montriĝis eĉ pli detalaj ol atendite.
Ĉi tie ni havas ne nur tion, kion ni bezonas client_idSed ĵetono uzanto/aplikaĵo, kaj ensalutu и pasvorto en klara teksto!
Kelkaj konspiraj teoriojLa nura ĉeesto de ensaluto kaj pasvorto en la protokoloj nenion damaĝas, ĉar ĉi tiuj protokoloj povas esti legitaj nur kun radikrajtoj aŭ konekto per adb. Sed pro la fakto, ke inter la homoj, kiuj legas Habr, estas Android-programistoj, kiuj eble havas sencimigon ebligita, tio fariĝas problemo.
En ĉi tiu kazo, "senpaga ŝarĝo" ĉe la flughaveno povas rezultigi kontoŝtelon, sed kiu bezonas ĝin?
El ĉi tiuj protokoloj ni povas ĉerpi:
client_id и apikeybezonata por aliri api;
Uzanto-rajtigo URL (stranga, sed estas nenio en la deponejo pri ĉi tiu metodo, eble ĝi ne estas provizita?)
Tiel okazis. Surbaze de ĉi tiu eta esploro, jam funkcias malgranda projekto - nia propra realigo de poŝtelefona aplikaĵo. Mi petas tiujn, kiuj volas helpi por skribi mesaĝon, kaj ĉiujn aliajn - voĉdoni (ĉar mi volas kompreni ĉu iu bezonas tion).
Спасибо за внимание!
Nur registritaj uzantoj povas partopreni la enketon. Ensaluti, bonvolu.