(Un) maombi rasmi ya Habr - HabrApp 2.0: kupata ufikiaji

Jioni moja iliyochoka na tayari ya kuchosha, nikipita rasmi Habr, kwa mara nyingine tena niliinamisha vidole vyangu, kimoja kwa kila kipengele kisichofanya kazi. Hapa, kwa mfano, huwezi kutoa maoni, hapa unanyimwa haki ya kupiga kura, na kwa ujumla, kwa nini fomula hazionekani kwenye skrini?

(Un) maombi rasmi ya Habr - HabrApp 2.0: kupata ufikiaji
Iliamuliwa: tulihitaji kitu kizuri, cha kupendeza, kitu chetu wenyewe. Vipi kuhusu maombi yako mwenyewe kwa Habr?
Ngoja nikupe picha za skrini ili kuelewa hali hiyo.

(Un) maombi rasmi ya Habr - HabrApp 2.0: kupata ufikiajiInaonekana kitu kama hiki hii -ya. maombi ya habr.com

Orodha ya "usumbufu"

  • Huwezi kukadiria chapisho ambalo ukadiriaji wake ni tofauti na 0
  • Si mara zote inawezekana kuandika maoni
  • Kura hazifanyi kazi
  • Fomula hazionekani katika mandhari meusi (nyeusi kwenye nyeusi)
  • Sio alamisho zote zinapatikana

Ndiyo, programu haijasasishwa tangu Agosti mwaka jana, lakini bado ni mbaya. Kwa ujumla, inahitaji kurekebishwa.

Sehemu ya kwanza. Inatafuta ufikiaji.

Hoja ya Haraka ya Google "habrahabr API" inasema tayari imepitwa na wakati hazina kwenye Github, haijasasishwa tangu wakati huo Novemba 21 2016, na hii, kwa muda, miaka miwili na nusu.

Kupuuza ukweli kwamba hii ni PHP, tembeza chini na usome:

Kupata Kitambulisho cha Maombi

Kuchukua faida fomu hii juu ya Habrahabr, unahitaji kueleza kwa ufupi kiini cha programu mpya na madhumuni ambayo inahitaji API.

Hakuna swali, ikiwa unahitaji kupata ufikiaji, basi unahitaji. Tunaandika barua (iliyofupishwa):

Kuandika

Kuna hamu ya kutuma maombi kwa Habr kulingana na PWA. Kuna sababu kadhaa za hii. 

Ya kwanza na dhahiri zaidi: programu ya Android haikidhi mahitaji yangu ya kibinafsi.

Pili: hakuna arifa za asili za kutosha kuhusu kila aina ya mambo ambayo kwa kawaida huja kwa barua pepe (maoni, kwa mfano).

Tatu: muhtasari wa kibinafsi (kama mtazamo) juu ya watu/vituo vinavyonivutia, kwa kuzingatia maslahi yangu.

Jibu, kwa kweli, halikuwa la kufurahisha sana, lakini angalau uaminifu:

Kwa bahati mbaya, ufikiaji wa API yetu haupatikani kwa sasa. Tunapanga kuendelea kutoa ufikiaji baada ya kumaliza kukamilisha API, lakini bado hatuna tarehe kamili, kwa sababu Kwa sasa tunashughulika kutatua kazi zingine za kipaumbele.

"Sawa hakuna shida! Tutakuja na kitu!" - Nilijiambia na kuanza kuangalia.

Sehemu ya pili. Uchimbaji wa kina.

Kulingana na mantiki, ikiwa programu inaendesha, basi ina ufikiaji wa API, na imeunganishwa kwa bidii kwenye programu. Hebu tuchambue.

Kwa kuwa tunashughulika na trafiki, Wireshark ndio chaguo letu. Sio bila uchungu fulani, baada ya kuunganisha simu kwenye mtandao kupitia kompyuta ya mezani, tunafungua programu na kuangalia maombi:

(Un) maombi rasmi ya Habr - HabrApp 2.0: kupata ufikiaji
Ni wazi kwamba hakuna kitu kilicho wazi

Ndio, kila kitu kimesimbwa, lakini sitaki kusumbua na maandishi. Kisha unahitaji kuangalia ndani ya programu yenyewe.

Imetenganishwa apk, tuanze kuangalia. API yoyote inahitaji nini? Haki, Mwisho, mahali ambapo maombi yote huenda. Huenda hii ni http(s), hebu tujaribu kupata "https://":

Katika faili AuthLinkManager.smali tunapata

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

Hii ndio nambari ya mashine ya kawaida ya Android (Dalvik VM), haieleweki sana kwa wanadamu, lakini bado ina habari kabisa. Vipengele hivi vitatu, kwa kuzingatia yaliyomo na jina, na hazina ya GitHub, hutumiwa kuomba tokeni ya ufikiaji kwa kutumia njia. GET.

Hebu tuangalie zaidi. Faili inayokuja kwenye utaftaji ni NetworkModule.smali:

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

Na hapa ndio mahali pa kwenda na maombi yako!

Ili mteja aliyejiandikisha afanye kazi ipasavyo, kuna jambo moja tu lililobaki kufikiria - client_id, ambayo kuna uwezekano mkubwa kuwa ni kitambulisho cha kipekee cha programu.

Hata hivyo, kutafuta maandishi haya katika msimbo wa chanzo hakujasababisha kupata taarifa muhimu...

Lakini ghafla katika moja ya faili macho yangu yalipata mistari ya kupendeza:

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

Hii, kama unavyoweza kuelewa, ni kiingilio cha logi. Lakini kurekodi nini?

Sehemu ya tatu. Hizi ni kumbukumbu!

Tunatumia adb logcat kutazama kumbukumbu za programu.

(Un) maombi rasmi ya Habr - HabrApp 2.0: kupata ufikiaji

Bila kutarajia, magogo yaligeuka kuwa ya kina zaidi kuliko ilivyotarajiwa.

Hapa hatuna tu kile tunachohitaji client_idLakini ishara mtumiaji/programu, na kuingia ΠΈ password kwa maandishi wazi!

Baadhi ya nadharia za njamaUwepo tu wa kuingia na nenosiri kwenye kumbukumbu haudhuru chochote, kwani kumbukumbu hizi zinaweza kusomwa tu na haki za mizizi au unganisho kupitia. adb. Lakini kutokana na ukweli kwamba kati ya watu wanaosoma Habr kuna watengenezaji wa Android ambao wanaweza kuwa na utatuzi kuwezeshwa, hii inakuwa tatizo.

Katika kesi hii, "malipo ya bure" kwenye uwanja wa ndege inaweza kusababisha wizi wa akaunti, lakini ni nani anayehitaji?
Kutoka kwa kumbukumbu hizi tunaweza kutoa:

  • client_id ΠΈ apikeyinahitajika kufikia api;
  • URL ya idhini ya mtumiaji (ya kushangaza, lakini hakuna chochote kwenye hazina kuhusu njia hii, labda haijatolewa?)

Ndivyo ilivyotokea. Kulingana na utafiti huu mdogo, kazi tayari inaendelea kwenye mradi mdogo - utekelezaji wetu wenyewe wa programu ya rununu. Ninawauliza wale ambao wanataka kusaidia kuandika ujumbe, na kila mtu mwingine - kupiga kura (kwa sababu nataka kuelewa ikiwa kuna mtu anahitaji hii).

Asante!

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Je, unatumia programu ya simu ya Habr?

  • Ndio, ninaitumia, nimefurahiya nayo

  • Ndio, ninaitumia, programu husababisha usumbufu

  • Hapana, ninatumia toleo la wavuti kwenye simu yangu

  • Hapana, ninatumia Habr kutoka kwa kompyuta yangu

Watumiaji 357 walipiga kura. Watumiaji 30 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni