Cais Habr answyddogol - HabrApp 2.0: cael mynediad

Un noson ddi-flewyn ar dafod ac eisoes yn eithaf diflas, finnau, yn mynd trwodd swyddogol Cais Habr, unwaith eto yr wyf yn plygu fy mysedd, un ar gyfer pob nodwedd nad ydynt yn gweithio. Yma, er enghraifft, ni allwch wneud sylw, yma gwrthodir yr hawl i bleidleisio ichi, ac yn gyffredinol, pam nad yw'r fformiwlâu yn weladwy ar y sgrin?

Cais Habr answyddogol - HabrApp 2.0: cael mynediad
Penderfynwyd: roedd angen rhywbeth cyfforddus, dymunol, rhywbeth ein hunain. Beth am eich cais eich hun am Habr?
Gadewch imi roi ychydig o sgrinluniau i chi i ddeall y sefyllfa.

Cais Habr answyddogol - HabrApp 2.0: cael mynediadEdrych rhywbeth fel hyn hwn - o. cais habr.com

Rhestr o "anghyfleustra"

  • Ni allwch roi sgôr i gyhoeddiad y mae ei sgôr yn wahanol i 0
  • Nid yw bob amser yn bosibl ysgrifennu sylw
  • Nid yw arolygon barn yn gweithio
  • Nid yw fformiwlâu i'w gweld mewn thema dywyll (du ar ddu)
  • Nid yw pob nod tudalen ar gael

Ydy, nid yw'r app wedi'i ddiweddaru ers mis Awst y llynedd, ond mae'n dal yn ddrwg. Yn gyffredinol, mae angen ei osod.

Rhan un. Chwilio am fynediad.

Ymholiad Google Cyflym "habrahabr API" mae'n dweud ei fod yn hen ffasiwn yn barod ystorfa ar Github, heb ei ddiweddaru ers hynny Tachwedd 21 2016, a hyn, am eiliad, dwy flynedd a hanner.

Gan anwybyddu'r ffaith mai PHP yw hwn, sgroliwch i lawr a darllenwch:

Cael ID y Cais

Yn manteisio ar y ffurflen hon ar Habrahabr, mae angen i chi ddisgrifio'n fyr hanfod y cymhwysiad newydd a'r pwrpas y mae angen API arno.

Nid oes unrhyw gwestiwn, os oes angen i chi gael mynediad, yna mae ei angen arnoch chi. Rydym yn ysgrifennu llythyr (talfyredig):

Ysgrifennu

Mae awydd i wneud cais am Habr yn seiliedig ar PWA. Mae yna sawl rheswm am hyn. 

Y cyntaf a'r mwyaf amlwg: nid yw'r cymhwysiad Android yn bodloni fy ngofynion personol.

Yn ail: nid oes digon o hysbysiadau brodorol am bob math o bethau sy'n dod fel arfer trwy e-bost (sylwadau, er enghraifft).

Yn drydydd: crynodebau personol (fel persbectif) ar bobl/canolfannau sydd o ddiddordeb i mi, gan ystyried fy niddordebau.

Nid oedd yr ateb, wrth gwrs, yn ddymunol iawn, ond o leiaf yn onest:

Yn anffodus, nid yw mynediad i'n API ar gael ar hyn o bryd. Rydym yn bwriadu ailddechrau darparu mynediad ar ôl i ni orffen cwblhau'r API, ond nid oes gennym unrhyw ddyddiadau union eto, oherwydd Ar hyn o bryd rydym yn brysur yn datrys tasgau blaenoriaeth eraill.

“Iawn, dim problem! Fe wnawn ni rywbeth!" - Dywedais wrthyf fy hun a dechrau edrych.

Rhan dau. Cloddio dwfn.

Yn seiliedig ar resymeg, os yw'r cymhwysiad yn rhedeg, yna mae ganddo fynediad i'r API, ac mae wedi'i wifro'n galed i'r cymhwysiad. Gadewch i ni ddadansoddi.

Gan ein bod yn delio â thraffig, Wireshark yw ein dewis. Nid heb rai poenau, ar ôl cysylltu'r ffôn â'r Rhyngrwyd trwy gyfrifiadur bwrdd gwaith, rydym yn agor y rhaglen ac yn edrych ar y ceisiadau:

Cais Habr answyddogol - HabrApp 2.0: cael mynediad
Mae'n amlwg nad oes dim yn glir

Ydy, mae popeth wedi'i amgryptio, ond dydw i ddim eisiau llanast gyda cryptograffeg. Yna mae angen ichi edrych y tu mewn i'r cais ei hun.

Dadgrynhoi .apk, gadewch i ni ddechrau edrych. Beth sydd ei angen ar unrhyw API? Reit, endpoint, y man y myn pob cais. Mae'n debyg mai http(s) yw hwn, gadewch i ni geisio dod o hyd i “https://”:

Mewn ffeil AuthLinkManager.smali canfyddwn

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

Dyma'r cod ar gyfer y peiriant rhithwir Android (Dalvik VM), ddim yn ddealladwy iawn i fodau dynol, ond yn dal yn eithaf addysgiadol. Defnyddir y tri chysonyn hyn, a barnu yn ôl eu cynnwys a'u henw, yn ogystal ag ystorfa GitHub, i ofyn am docyn mynediad gan ddefnyddio'r dull GET.

Gadewch i ni edrych ymhellach. Y ffeil sy'n dod i fyny nesaf yn y chwiliad yw NetworkModule.smali:

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

A dyma'r lle i fynd gyda'ch ceisiadau!

Er mwyn i'r cleient hunan-ysgrifenedig weithio'n iawn, dim ond un peth sydd ar ôl i'w ddarganfod - client_id, sydd fwyaf tebygol yn ddynodwr unigryw ar gyfer y cais.

Fodd bynnag, ni arweiniodd chwilio am y testun hwn yn y cod ffynhonnell at ddod o hyd i wybodaeth berthnasol...

Ond yn sydyn yn un o'r ffeiliau fe ddaliodd fy llygaid rai llinellau diddorol:

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

Mae hwn, fel y gallwch ddeall, yn gofnod log. Ond cofnodi beth?

Rhan tri. Dyma'r boncyffion!

Rydym yn defnyddio adb logcat i weld logiau cais.

Cais Habr answyddogol - HabrApp 2.0: cael mynediad

Yn annisgwyl, roedd y logiau hyd yn oed yn fwy manwl na'r disgwyl.

Yma mae gennym nid yn unig yr hyn sydd ei angen arnom client_idOnd tocyn defnyddiwr/cymhwysiad, a mewngofnodi и cyfrinair mewn testun plaen!

Rhai damcaniaethau cynllwynNid yw presenoldeb mewngofnodi a chyfrinair yn unig yn y logiau yn niweidio unrhyw beth, gan mai dim ond gyda naill ai hawliau gwraidd neu gysylltiad trwy gyfrwng y gellir darllen y logiau hyn adb. Ond oherwydd y ffaith bod datblygwyr Android ymhlith y bobl sy'n darllen Habr a allai fod wedi galluogi dadfygio, mae hyn yn dod yn broblem.

Yn yr achos hwn, gall “codi tâl am ddim” yn y maes awyr arwain at ddwyn cyfrifon, ond pwy sydd ei angen?
O'r logiau hyn gallwn dynnu:

  • client_id и apikeyofynnol i gael mynediad api;
  • URL awdurdodiad defnyddiwr (rhyfedd, ond nid oes unrhyw beth yn yr ystorfa am y dull hwn, efallai nad yw wedi'i ddarparu?)

Dyna fel y digwyddodd. Yn seiliedig ar yr ymchwil fechan hon, mae gwaith eisoes yn mynd rhagddo ar brosiect bach - ein gweithrediad ein hunain o raglen symudol. Gofynnaf i’r rhai sydd am helpu i ysgrifennu neges, a phawb arall – i bleidleisio (achos dwi eisiau deall a oes angen hwn ar unrhyw un).

Diolch am eich sylw!

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Ydych chi'n defnyddio rhaglen symudol Habr?

  • Ydw, rwy'n ei ddefnyddio, rwy'n hapus ag ef

  • Ydw, rwy'n ei ddefnyddio, mae'r cais yn achosi anghyfleustra

  • Na, dwi'n defnyddio'r fersiwn we ar fy ffôn

  • Na, dwi'n defnyddio Habr o fy nghyfrifiadur

Pleidleisiodd 357 o ddefnyddwyr. Ataliodd 30 o ddefnyddwyr.

Ffynhonnell: hab.com

Ychwanegu sylw