Aplicació Habr (no) oficial - HabrApp 2.0: obtenint accés

Una tarda lànguida i ja força avorrida, jo, fullejant oficial Aplicació Habr, una vegada més vaig doblegar els dits, un per cada funció que no funcionava. Aquí, per exemple, no es pot comentar, aquí se't nega el dret a vot i, en general, per què les fórmules no es veuen a la pantalla?

Aplicació Habr (no) oficial - HabrApp 2.0: obtenint accés
Es va decidir: necessitàvem quelcom còmode, agradable, quelcom propi. Què passa amb la teva pròpia aplicació per a Habr?
Permeteu-me donar-vos unes quantes captures de pantalla per entendre la situació.

Aplicació Habr (no) oficial - HabrApp 2.0: obtenint accésSembla una cosa així aquest - de. aplicació habr.com

Llista de "inconvenients"

  • No podeu puntuar una publicació la valoració de la qual sigui diferent de 0
  • No sempre és possible escriure un comentari
  • Les enquestes no funcionen
  • Les fórmules no són visibles en el tema fosc (negre sobre negre)
  • No tots els marcadors estan disponibles

Sí, l'aplicació no s'ha actualitzat des de l'agost de l'any passat, però encara està malament. En general, s'ha de solucionar.

Primera part. Buscant accés.

Consulta ràpida de Google "API habrahabr" diu que ja està força desfasat repositori a Github, no actualitzat des de llavors Novembre 21 2016, i això, per un moment, dos anys i mig.

Ignorant el fet que això és PHP, desplaceu-vos cap avall i llegiu:

Obtenció de l'identificador de l'aplicació

Aprofitant aquesta forma a Habrahabr, heu de descriure breument l'essència de la nova aplicació i el propòsit per al qual necessita una API.

No hi ha dubte, si necessiteu accedir, ho necessiteu. Escrivim una carta (abreujada):

Una carta

Hi ha un desig de fer una sol·licitud per a Habr basada en PWA. Hi ha diverses raons per a això. 

El primer i més evident: l'aplicació d'Android no compleix els meus requisits personals.

Segon: no hi ha prou notificacions natives sobre tot tipus de coses que solen arribar per correu electrònic (comentaris, per exemple).

Tercer: resums personals (com a perspectiva) sobre persones/centres que m'interessen, tenint en compte els meus interessos.

La resposta, és clar, no va ser gaire agradable, però almenys honesta:

Malauradament, l'accés a la nostra API no està disponible actualment. Tenim previst reprendre l'accés quan acabem de finalitzar l'API, però encara no tenim dates exactes, perquè Actualment estem ocupats resolent altres tasques prioritàries.

"D'acord, cap problema! Ens en sortirem alguna cosa!" - em vaig dir i vaig començar a buscar.

Segona part. Excavacions profundes.

Segons la lògica, si l'aplicació s'està executant, té accés a l'API i està connectada a l'aplicació. Analitzem.

Com que estem tractant amb trànsit, Wireshark és la nostra elecció. No sense problemes, havent connectat el telèfon a Internet mitjançant un ordinador de sobretaula, obrim l'aplicació i mirem les peticions:

Aplicació Habr (no) oficial - HabrApp 2.0: obtenint accés
Està clar que res és clar

Sí, tot està xifrat, però no vull ficar-me amb la criptografia. Aleshores, heu de mirar dins de l'aplicació.

Descompilat Apk, anem a buscar. Què necessita qualsevol API? Dret, punt final, el lloc on van totes les peticions. Això probablement és http(s), intentem trobar "https://":

A l'arxiu AuthLinkManager.smali trobem

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

Aquest és el codi de la màquina virtual d'Android (Dalvik VM), poc comprensible per als humans, però encara bastant informatiu. Aquestes tres constants, a jutjar pel seu contingut i nom, així com el repositori GitHub, s'utilitzen per sol·licitar un testimoni d'accés mitjançant el mètode GET.

Mirem més enllà. El fitxer que apareix a continuació a la cerca és NetworkModule.smali:

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

I aquí teniu el lloc on anar amb les vostres peticions!

Perquè el client escrit per si mateix funcioni correctament, només queda una cosa per esbrinar: client_id, que probablement sigui un identificador únic per a l'aplicació.

Tanmateix, la recerca d'aquest text al codi font no va conduir a trobar informació rellevant...

Però de sobte en un dels fitxers els meus ulls van captar algunes línies interessants:

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

Això, com podeu entendre, és una entrada de registre. Però gravar què?

Tercera part. Aquests són els registres!

Fem servir adb logcat per veure els registres de l'aplicació.

Aplicació Habr (no) oficial - HabrApp 2.0: obtenint accés

Inesperadament, els registres van resultar ser encara més detallats del que s'esperava.

Aquí no només tenim el que necessitem client_idSinó testimoni usuari/aplicació, i login и contrasenya en text pla!

Algunes teories de la conspiracióLa mera presència d'un inici de sessió i una contrasenya als registres no perjudica res, ja que aquests registres només es poden llegir amb drets d'arrel o una connexió mitjançant adb. Però a causa del fet que entre les persones que llegeixen Habr hi ha desenvolupadors d'Android que poden tenir la depuració habilitat, això es converteix en un problema.

En aquest cas, la "càrrega gratuïta" a l'aeroport pot comportar un robatori de compte, però qui ho necessita?
D'aquests registres podem extreure:

  • client_id и apikeynecessari per accedir api;
  • URL d'autorització de l'usuari (estrany, però no hi ha res al repositori sobre aquest mètode, potser no es proporciona?)

Així va passar. A partir d'aquesta petita investigació, ja s'està treballant en un petit projecte: la nostra pròpia implementació d'una aplicació mòbil. Demano a aquells que vulguin ajudar a escriure un missatge, i a tots els altres, que votin (perquè vull entendre si algú ho necessita).

Gràcies!

Només els usuaris registrats poden participar en l'enquesta. Inicia sessiósi us plau.

Utilitzes l'aplicació mòbil Habr?

  • Sí, el faig servir, n'estic content

  • Sí, el faig servir, l'aplicació causa molèsties

  • No, faig servir la versió web al meu telèfon

  • No, faig servir Habr des del meu ordinador

Han votat 357 usuaris. 30 usuaris es van abstenir.

Font: www.habr.com

Afegeix comentari