(Ó)opinbert Habr forrit - HabrApp 2.0: að fá aðgang

Eitt slappt og þegar ansi leiðinlegt kvöld blaðaði ég í gegnum embættismaður Með umsókn, enn og aftur beygði ég fingurna, einn fyrir hvern eiginleika sem ekki virkar. Hér getur þú til dæmis ekki tjáð þig, hér er þér neitað um kosningarétt og almennt, hvers vegna sjást formúlurnar ekki á skjánum?

(Ó)opinbert Habr forrit - HabrApp 2.0: að fá aðgang
Það var ákveðið: okkur vantaði eitthvað þægilegt, notalegt, eitthvað okkar eigið. Hvað með þína eigin umsókn fyrir Habr?
Leyfðu mér að gefa þér nokkrar skjáskot til að skilja ástandið.

(Ó)opinbert Habr forrit - HabrApp 2.0: að fá aðgangLítur eitthvað svona út это - af. habr.com forritið

Listi yfir "óþægindi"

  • Þú getur ekki gefið riti einkunn sem er önnur en 0
  • Það er ekki alltaf hægt að skrifa athugasemd
  • Kannanir virka ekki
  • Formúlur eru ekki sýnilegar í dökku þema (svart á svörtu)
  • Ekki eru öll bókamerki tiltæk

Já, appið hefur ekki verið uppfært síðan í ágúst á síðasta ári, en það er samt slæmt. Almennt séð þarf að laga það.

Fyrsti hluti. Er að leita að aðgangi.

Fljótleg Google fyrirspurn "habrahabr API" það segir að það sé nú þegar alveg úrelt geymsla á Github, ekki uppfært síðan Nóvember 21 2016, og þetta, í smá stund, tvö og hálft ár.

Hunsa þá staðreynd að þetta er PHP, skrunaðu niður og lestu:

Að sækja auðkenni umsóknar

Nýta sér þetta form á Habrahabr þarftu að lýsa í stuttu máli kjarna nýja forritsins og tilganginum sem það þarf API.

Það er engin spurning, ef þú þarft að fá aðgang, þá þarftu hann. Við skrifum bréf (skammstafað):

Ritun

Það er vilji til að gera umsókn fyrir Habr byggt á PWA. Það eru nokkrar ástæður fyrir þessu. 

Fyrsta og augljósasta: Android forritið uppfyllir ekki persónulegar kröfur mínar.

Í öðru lagi: það eru ekki nægar innfæddar tilkynningar um alls konar hluti sem venjulega koma í tölvupósti (til dæmis athugasemdir).

Í þriðja lagi: persónuleg samantekt (sem sjónarhorn) um fólk/miðstöðvar sem vekja áhuga minn, að teknu tilliti til hagsmuna minna.

Svarið var auðvitað ekki mjög skemmtilegt, en að minnsta kosti heiðarlegt:

Því miður er aðgangur að API okkar ekki í boði eins og er. Við ætlum að halda áfram að veita aðgang eftir að við höfum lokið við að ganga frá API, en við höfum engar nákvæmar dagsetningar ennþá, vegna þess að Núna erum við á fullu að leysa önnur forgangsverkefni.

„Jæja, ekkert mál! Við finnum upp á einhverju!" — Ég sagði við sjálfan mig og fór að leita.

Partur tvö. Djúpur uppgröftur.

Byggt á rökfræði, ef forritið er í gangi, þá hefur það aðgang að API og það er tengt inn í forritið. Við skulum greina.

Þar sem við erum að fást við umferð er Wireshark val okkar. Ekki án nokkurra sársauka, eftir að hafa tengt símann við internetið í gegnum borðtölvu, opnum við forritið og skoðum beiðnirnar:

(Ó)opinbert Habr forrit - HabrApp 2.0: að fá aðgang
Það er ljóst að ekkert er skýrt

Já, allt er dulkóðað, en ég vil ekki skipta mér af dulmáli. Þá þarftu að líta inn í forritið sjálft.

Afsamlað .apk, byrjum að leita. Hvað þarf einhver API? Rétt, endapunktur, staðurinn þar sem allar beiðnir fara. Þetta er líklega http(s), við skulum reyna að finna „https://“:

Í skrá AuthLinkManager.smali finna

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

Þetta er kóðinn fyrir Android sýndarvélina (Dalvík VM), ekki mjög skiljanlegt fyrir menn, en samt nokkuð fræðandi. Þessir þrír fastar, af innihaldi þeirra og nafni að dæma, sem og GitHub geymsluna, eru notaðir til að biðja um aðgangslykil með aðferðinni GET.

Við skulum líta lengra. Skráin sem kemur næst í leitinni er NetworkModule.smali:

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

Og hér er staðurinn til að fara með beiðnir þínar!

Til þess að hinn sjálfskrifaði viðskiptavinur virki sem skyldi er aðeins eitt eftir að finna út - client_id, sem er líklegast einstakt auðkenni fyrir forritið.

Hins vegar, leit að þessum texta í frumkóðanum leiddi ekki til að finna viðeigandi upplýsingar...

En skyndilega gripu augun í einni af skránum nokkrar áhugaverðar línur:

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

Þetta er, eins og þú getur skilið, logfærsla. En að taka upp hvað?

Þriðji hluti. Þetta eru logarnir!

Við notum adb logcat til að skoða forritaskrár.

(Ó)opinbert Habr forrit - HabrApp 2.0: að fá aðgang

Óvænt reyndust annálarnir vera enn ítarlegri en búist var við.

Hér höfum við ekki aðeins það sem við þurfum client_idEn tákn notandi/forrit, og tenging и lykilorð í einföldum texta!

Einhverjar samsæriskenningarEinungis tilvist innskráningar og lykilorðs í annálunum skaðar ekki neitt, þar sem aðeins er hægt að lesa þessa skrá með annað hvort rótarréttindum eða tengingu í gegnum adb. En vegna þess að meðal þeirra sem lesa Habr eru Android forritarar sem kunna að hafa kembiforrit virkt, verður þetta vandamál.

Í þessu tilviki getur „ókeypis hleðsla“ á flugvellinum leitt til reikningsþjófnaðar, en hver þarf á því að halda?
Úr þessum annálum getum við dregið út:

  • client_id и apikeyþarf til að fá aðgang api;
  • Vefslóð notandaheimildar (skrýtið, en það er ekkert í geymslunni um þessa aðferð, er hún kannski ekki gefin upp?)

Þannig varð það. Byggt á þessari örsmáu rannsókn er nú þegar verið að vinna að litlu verkefni - okkar eigin útfærsla á farsímaforriti. Ég bið þá sem vilja hjálpa til að skrifa skilaboð, og alla aðra - að kjósa (því ég vil skilja hvort einhver þurfi á þessu að halda).

Svara með tilvísun!

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Notar þú Habr farsímaforritið?

  • Já, ég nota það, ég er ánægð með það

  • Já, ég nota það, forritið veldur óþægindum

  • Nei, ég nota vefútgáfuna í símanum mínum

  • Nei, ég nota Habr úr tölvunni minni

357 notendur kusu. 30 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd