(Ne)oficiala Habr-aplikaĵo - HabrApp 2.0: akiri aliron

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?

(Ne)oficiala Habr-aplikaĵo - HabrApp 2.0: akiri aliron
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.

(Ne)oficiala Habr-aplikaĵo - HabrApp 2.0: akiri alironAspektas 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:

(Ne)oficiala Habr-aplikaĵo - HabrApp 2.0: akiri aliron
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://":

En dosiero AuthLinkManager.smali ni trovas

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

Ĉ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:

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

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

(Ne)oficiala Habr-aplikaĵo - HabrApp 2.0: akiri aliron

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.

Ĉu vi uzas la moveblan aplikaĵon Habr?

  • Jes, mi uzas ĝin, mi estas kontenta pri ĝi

  • Jes, mi uzas ĝin, la aplikaĵo kaŭzas ĝenojn

  • Ne, mi uzas la retan version en mia telefono

  • Ne, mi uzas Habr de mia komputilo

357 uzantoj voĉdonis. 30 uzantoj sindetenis.

fonto: www.habr.com

Aldoni komenton