(Un) daim ntawv thov Habr official - HabrApp 2.0: nkag mus

Ib tug languid thiab twb heev boring yav tsaus ntuj, kuv, leafing los ntawm official Habr daim ntawv thov, ib zaug ntxiv kuv khoov kuv cov ntiv tes, ib qho rau txhua qhov tsis ua haujlwm. Ntawm no, piv txwv li, koj tsis tuaj yeem tawm tswv yim, ntawm no koj raug tsis lees paub txoj cai pov npav, thiab feem ntau, vim li cas cov qauv tsis pom ntawm qhov screen?

(Un) daim ntawv thov Habr official - HabrApp 2.0: nkag mus
Nws tau txiav txim siab: peb xav tau tej yam yooj yim, qab ntxiag, ib yam ntawm peb tus kheej. Yuav ua li cas txog koj tus kheej daim ntawv thov rau Habr?
Cia kuv muab ob peb lub screenshots rau koj kom nkag siab qhov xwm txheej.

(Un) daim ntawv thov Habr official - HabrApp 2.0: nkag musSaib tej yam zoo li no nws - ntawm. habr.com daim ntawv thov

Daim ntawv teev cov "inconveniences"

  • Koj tsis tuaj yeem ntsuas qhov kev tshaj tawm uas nws qhov kev ntaus nqi txawv ntawm 0
  • Nws tsis yog ib txwm ua tau los sau lus
  • Kev xaiv tsa tsis ua haujlwm
  • Cov qauv tsis pom nyob rau hauv lub ntsiab tsaus nti (dub ntawm dub)
  • Tsis yog txhua tus bookmarks muaj

Yog lawm, lub app tsis tau hloov kho txij li lub Yim Hli xyoo tas los, tab sis nws tseem tsis zoo. Feem ntau, nws yuav tsum tau kho.

Ntu ib. Nrhiav kev nkag.

Quick Google Query "Habrahabr API" nws hais tias nws twb dhau lawm chaw cia khoom ntawm Github, tsis hloov tshiab txij li thaum Kaum ib hlis 21 2016, thiab qhov no, ib pliag, ob thiab ib nrab xyoo.

Tsis quav ntsej qhov tseeb tias qhov no yog PHP, scroll down thiab nyeem:

Tau txais daim ntawv thov ID

Ua kom zoo dua daim ntawv no ntawm Habrahabr, koj yuav tsum tau piav qhia luv luv txog cov ntsiab lus ntawm daim ntawv thov tshiab thiab lub hom phiaj uas nws xav tau API.

Tsis muaj lus nug, yog tias koj xav tau nkag mus, ces koj xav tau. Peb sau ib tsab ntawv (abbreviated):

Sau ntawv

Muaj kev xav ua daim ntawv thov rau Habr raws li PWA. Muaj ob peb lub laj thawj rau qhov no. 

Thawj thiab pom tseeb tshaj plaws: daim ntawv thov Android tsis ua raws li kuv tus kheej xav tau.

Thib ob: tsis muaj cov ntawv ceeb toom ib txwm muaj txaus txog txhua yam khoom uas feem ntau tuaj los ntawm email (cov lus pom, piv txwv).

Thib peb: tus kheej digests (raws li kev xav) ntawm cov neeg / hubs uas txaus siab rau kuv, coj mus rau hauv tus account kuv nyiam.

Cov lus teb, tau kawg, tsis zoo siab heev, tab sis tsawg kawg yog ncaj ncees:

Hmoov tsis zoo, kev nkag mus rau peb API tsis muaj tam sim no. Peb npaj yuav rov pib muab kev nkag tau tom qab peb ua tiav qhov API tiav, tab sis peb tseem tsis tau muaj hnub tim, vim tias Peb tam sim no tibneeg hu tauj coob daws lwm yam haujlwm tseem ceeb.

β€œOkay, tsis muaj teeb meem! Peb yuav los txog ib yam dab tsi!" - Kuv hais rau kuv tus kheej thiab pib saib.

Ntu ob. Kev khawb tob.

Raws li cov logic, yog tias daim ntawv thov ua haujlwm, ces nws muaj kev nkag mus rau API, thiab nws yog hardwired rau hauv daim ntawv thov. Cia peb tsom xam.

Txij li thaum peb tab tom ua lag luam, Wireshark yog peb txoj kev xaiv. Tsis yog tsis muaj qee qhov mob, tau txuas xov tooj mus rau Is Taws Nem ntawm lub khoos phis tawj desktop, peb qhib daim ntawv thov thiab saib cov lus thov:

(Un) daim ntawv thov Habr official - HabrApp 2.0: nkag mus
Nws yog qhov tseeb tias tsis muaj dab tsi meej

Yog, txhua yam yog encrypted, tab sis kuv tsis xav mess nrog cryptography. Tom qab ntawd koj yuav tsum saib hauv daim ntawv thov nws tus kheej.

Decompiled .apk, cia peb pib saib. Ib qho API xav tau dab tsi? Txoj cai, xaus, qhov chaw uas txhua qhov kev thov mus. Qhov no tej zaum http(s), cia peb sim nrhiav "https://":

Hauv cov ntaub ntawv AuthLinkManager.smali peb nrhiav

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

Nov yog cov cai rau Android virtual tshuab (Dalvik AW), tsis nkag siab heev rau tib neeg, tab sis tseem ceeb heev. Peb qhov xwm txheej no, txiav txim siab los ntawm lawv cov ntsiab lus thiab lub npe, nrog rau GitHub qhov chaw cia khoom, yog siv los thov kom nkag mus rau token siv txoj kev. GET.

Cia peb saib ntxiv. Cov ntaub ntawv uas tuaj tom ntej hauv kev tshawb nrhiav yog NetworkModule.smali:

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

Thiab ntawm no yog qhov chaw mus nrog koj cov lus thov!

Rau tus kheej-sau tus neeg siv los ua haujlwm kom raug, tsuas muaj ib yam uas yuav tsum paub txog - client_id, uas feem ntau yuav yog tus cim tshwj xeeb rau daim ntawv thov.

Txawm li cas los xij, kev tshawb nrhiav cov ntawv no hauv qhov chaws tsis tau ua rau nrhiav cov ntaub ntawv cuam tshuam ...

Tab sis mam li nco dheev nyob rau hauv ib qho ntawm cov ntaub ntawv kuv ob lub qhov muag ntes tau ib co nthuav kab:

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

Qhov no, raws li koj tuaj yeem nkag siab, yog lub log nkag. Tab sis sau dab tsi?

Ntu peb. Cov no yog cov log!

Peb siv adb logcat mus saib daim ntawv teev npe.

(Un) daim ntawv thov Habr official - HabrApp 2.0: nkag mus

Unexpectedly, cov cav tau tig los ua kom ntxaws dua li qhov xav tau.

Ntawm no peb tsis muaj qhov peb xav tau xwb client_idTab sis token user/application, thiab tus ID nkag mus ΠΈ lo lus zais hauv cov ntawv dawb!

Qee qhov kev koom tes theoriesQhov tsuas yog muaj tus ID nkag mus thiab lo lus zais hauv cov cav tsis ua mob dab tsi, txij li cov cav no tsuas tuaj yeem nyeem nrog cov cai hauv paus lossis kev sib txuas ntawm adb. Tab sis vim qhov tseeb tias ntawm cov neeg nyeem Habr muaj cov neeg tsim tawm hauv Android uas tuaj yeem muaj kev debugging enabled, qhov no dhau los ua teeb meem.

Hauv qhov no, "kev them nyiaj pub dawb" ntawm lub tshav dav hlau yuav ua rau muaj kev nyiag nyiaj, tab sis leej twg xav tau nws?
Los ntawm cov cav no peb tuaj yeem rho tawm:

  • client_id ΠΈ apikeyyuav tsum tau nkag mus api;
  • Tus neeg siv kev tso cai URL (qhov txawv, tab sis tsis muaj dab tsi hauv qhov chaw khaws cia txog txoj kev no, tej zaum nws tsis muab?)

Yog li ntawd nws tshwm sim. Raws li qhov kev tshawb fawb me me no, kev ua haujlwm tau ua tiav ntawm qhov project me me - peb tus kheej ua raws li daim ntawv thov mobile. Kuv thov kom cov uas xav pab sau ntawv, thiab txhua leej txhua tus - mus pov npav (vim kuv xav nkag siab seb leej twg xav tau qhov no).

Ua tsaug rau koj txoj kev paub!

Tsuas yog cov neeg siv sau npe tuaj yeem koom nrog hauv daim ntawv ntsuam xyuas. Kos npe rau hauvthov.

Koj puas siv Habr mobile thov?

  • Yog, kuv siv nws, kuv zoo siab nrog nws

  • Yog, kuv siv nws, daim ntawv thov ua rau tsis yooj yim

  • Tsis yog, kuv siv lub web version ntawm kuv lub xov tooj

  • Tsis yog, Kuv siv Habr los ntawm kuv lub computer

357 cov neeg siv pov npav. 30 cov neeg siv txwv tsis pub siv.

Tau qhov twg los: www.hab.com

Ntxiv ib saib