Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzea

Arratsalde latz eta jada nahiko aspergarria, ni, hostoa egiten ofiziala Habr aplikazioa, berriro ere behatzak tolestu ditut, funtzionatzen ez duen funtzio bakoitzeko bat. Hemen, adibidez, ezin duzu komentatu, hemen botoa emateko eskubidea ukatzen zaizu eta, oro har, zergatik ez dira formulak pantailan ikusten?

Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzea
Erabakia zegoen: zerbait erosoa, atsegina, gurea behar genuen. Zer gertatzen da Habr-erako zure aplikazioarekin?
Pantaila-argazki batzuk ematen dizkizut egoera ulertzeko.

Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzeaHonelako zerbait dirudi honetan --ren. habr.com aplikazioa

"eragozpenen" zerrenda

  • Ezin duzu baloratu 0tik desberdina den argitalpen bat
  • Ez da beti posible iruzkin bat idaztea
  • Inkestek ez dute funtzionatzen
  • Formulak ez dira ikusten gai ilunean (beltza beltzean)
  • Laster-marka guztiak ez daude erabilgarri

Bai, aplikazioa ez da iazko abuztutik eguneratu, baina oraindik txarto dago. Oro har, konpondu egin behar da.

Lehen zatia. Sarbide bila.

Google-ren kontsulta azkarra "habrahabr API" dagoeneko nahiko zaharkitua dagoela dio biltegia Github-en, geroztik eguneratu gabe Azaroan 21 2016, eta hau, une batez, bi urte eta erdi.

Hau PHP dela alde batera utzita, joan behera eta irakurri:

Aplikazioaren IDa lortzea

Aprobetxatuz forma hau Habrahabr-en, aplikazio berriaren funtsa eta API bat behar duen helburua labur deskribatu behar dituzu.

Ez dago zalantzarik, sarbidea lortu behar baduzu, behar duzu. Gutun bat idazten dugu (laburtua):

Gutun bat

PWAn oinarritutako Habr-erako eskaera bat egiteko gogoa dago. Hainbat arrazoi daude horretarako. 

Lehenengoa eta nabarmenena: Android aplikazioak ez ditu nire baldintza pertsonalak betetzen.

Bigarrena: ez dago posta elektronikoz etortzen diren mota guztietako jakinarazpen natibo nahikorik (iruzkinak, adibidez).

Hirugarrena: interesatzen zaizkidan pertsonen/erdiguneen laburpen pertsonalak (ikuspegi gisa), nire interesak kontuan hartuta.

Erantzuna, noski, ez zen oso atsegina izan, baina zintzoa behintzat:

Zoritxarrez, gure APIrako sarbidea ez dago eskuragarri une honetan. APIa amaitzen amaitu ondoren sarbidea ematen berriro hasteko asmoa dugu, baina oraindik ez dugu data zehatzik, izan ere Une honetan lehentasunezko beste zeregin batzuk konpontzen lanpetuta gaude.

β€œOngi da, ez dago arazorik! Zerbait asmatuko dugu!" - Esan nion neure buruari eta bilatzen hasi nintzen.

Bigarren zatia. Indusketa sakonak.

Logikaren arabera, aplikazioa exekutatzen ari bada, orduan APIrako sarbidea du, eta aplikazioan kablekatuta dago. Azter dezagun.

Trafikoarekin ari garenez, Wireshark da gure aukera. Ez minak gabe, telefonoa mahaigaineko ordenagailu baten bidez Internetera konektatu ondoren, aplikazioa ireki eta eskaerak aztertuko ditugu:

Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzea
Argi dago ezer ez dagoela argi

Bai, dena enkriptatuta dago, baina ez dut kriptografiarekin nahastu nahi. Ondoren, aplikazioaren barruan begiratu behar duzu.

Deskonpilatua APK, has gaitezen bilatzen. Zer behar du edozein API? Ondo, amaierako puntua, eskaera guztiak joaten diren lekua. Hau http(k) izango da ziurrenik, saia gaitezen "https://" aurkitzen:

Fitxategian AuthLinkManager.smali aurkitzen dugu

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

Hau da Android makina birtualaren kodea (Dalvik VM), ez da oso ulergarria gizakientzat, baina oraindik nahiko informatzailea. Hiru konstante hauek, edukia eta izena kontuan hartuta, baita GitHub biltegia ere, metodoa erabiliz sarbide-token bat eskatzeko erabiltzen dira. GET.

Ikus dezagun gehiago. Bilaketan hurrengoan agertzen den fitxategia da NetworkModule.smali:

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

Eta hona hemen zure eskaerak egiteko lekua!

Norberak idatzitako bezeroak behar bezala funtziona dezan, gauza bakarra geratzen da asmatzeko - client_id, hau da, ziurrenik, aplikazioaren identifikatzaile bakarra.

Hala ere, testu hori iturburu-kodean bilatu izanak ez zuen informazio garrantzitsua aurkitzea ekarri...

Baina bat-batean fitxategietako batean nire begiek lerro interesgarri batzuk harrapatu zituzten:

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

Hau, ulertu dezakezun bezala, erregistroko sarrera bat da. Baina zer grabatzen?

Hirugarren zatia. Hauek dira erregistroak!

Erabiltzen dugu adb logcat aplikazioen erregistroak ikusteko.

Habr aplikazio (ez) ofiziala - HabrApp 2.0: sarbidea lortzea

Ustekabean, erregistroak espero baino are zehatzagoak izan ziren.

Hemen ez dugu behar duguna bakarrik client_idBaina token erabiltzailea/aplikazioa, eta saioa hasi ΠΈ pasahitza testu arruntean!

Konspirazio teoria batzukErregistroetan saio-hasiera eta pasahitza egoteak ez du ezer kaltetzen, erregistro hauek root eskubideekin edo konexio baten bidez soilik irakur daitezkeelako. adb. Baina Habr irakurtzen duten pertsonen artean arazketa gaituta izan dezaketen Android garatzaileak daudelako, hau arazo bihurtzen da.

Kasu honetan, aireportuan "doako kargatzeak" kontu lapurreta eragin dezake, baina nork behar du?
Erregistro hauetatik atera dezakegu:

  • client_id ΠΈ apikeysartzeko beharrezkoak api;
  • Erabiltzaileen baimenaren URLa (bitxia, baina ez dago metodo honi buruzko biltegian ezer, agian ez da ematen?)

Horrela gertatu zen. Ikerketa txiki honetatik abiatuta, proiektu txiki batean lanean ari dira dagoeneko: gure aplikazio mugikor baten inplementazioa. Lagundu nahi dutenei mezu bat idazteko eta beste guztiei eskatzen diet botoa emateko (norbaitek behar duen ala ez ulertu nahi dudalako).

Eskerrik asko zure arreta!

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Habr mugikorreko aplikazioa erabiltzen al duzu?

  • Bai, erabiltzen dut, pozik nago

  • Bai, erabiltzen dut, aplikazioak eragozpenak sortzen ditu

  • Ez, telefonoan web bertsioa erabiltzen dut

  • Ez, Habr erabiltzen dut nire ordenagailutik

357 erabiltzailek eman dute botoa. 30 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria