Applicazione Habr (non)ufficiale - HabrApp 2.0: accesso

Una sera languida e già abbastanza noiosa, io, sfogliando ufficiale Applicazione Habr, ancora una volta ho piegato le dita, una per ogni funzione non funzionante. Qui, ad esempio, non puoi commentare, qui ti viene negato il diritto di voto e, in generale, perché le formule non sono visibili sullo schermo?

Applicazione Habr (non)ufficiale - HabrApp 2.0: accesso
Era deciso: avevamo bisogno di qualcosa di comodo, piacevole, qualcosa di nostro. E la tua applicazione per Habr?
Ti faccio qualche screenshot per capire la situazione.

Applicazione Habr (non)ufficiale - HabrApp 2.0: accessoIn qualche modo sembra così essa - Di. applicazione habr.com

Elenco degli "inconvenienti"

  • Non è possibile valutare una pubblicazione la cui valutazione è diversa da 0
  • Non è sempre possibile scrivere un commento
  • I sondaggi non funzionano
  • Le formule non sono visibili nel tema scuro (nero su nero)
  • Non tutti i segnalibri sono disponibili

Sì, l'app non è stata aggiornata dall'agosto dell'anno scorso, ma è ancora pessima. In generale, deve essere risolto.

Prima parte. In cerca di accesso.

Domanda rapida su Google "API habrahabr" dice che è già abbastanza obsoleto deposito su Github, non aggiornato da allora Novembre 21 2016, e questo, per un attimo, due anni e mezzo.

Ignorando il fatto che si tratta di PHP, scorri verso il basso e leggi:

Ottenere l'ID dell'applicazione

Approfittando questa forma su Habrahabr, devi descrivere brevemente l'essenza della nuova applicazione e lo scopo per il quale ha bisogno di un'API.

Non c’è dubbio: se hai bisogno di ottenere l’accesso, allora ne hai bisogno. Scriviamo una lettera (abbreviata):

Письмо

C'è il desiderio di presentare una domanda per Habr basata su PWA. Ci sono diverse ragioni per questo. 

Il primo e più evidente: l'applicazione Android non soddisfa le mie esigenze personali.

Secondo: non ci sono abbastanza notifiche native su tutti i tipi di cose che di solito arrivano via email (commenti, ad esempio).

Terzo: resoconti personali (come prospettiva) su persone/hub che mi interessano, tenendo conto dei miei interessi.

La risposta, ovviamente, non è stata molto piacevole, ma almeno onesta:

Purtroppo l'accesso alla nostra API non è al momento disponibile. Abbiamo in programma di riprendere a fornire l'accesso una volta completata la finalizzazione dell'API, ma non abbiamo ancora date precise perché Attualmente siamo impegnati a risolvere altri compiti prioritari.

"Ok nessun problema! Inventeremo qualcosa!" - Mi sono detto e ho iniziato a cercare.

Seconda parte. Scavi profondi.

In base alla logica, se l'applicazione è in esecuzione, ha accesso all'API ed è cablata nell'applicazione. Analizziamo.

Dato che abbiamo a che fare con il traffico, Wireshark è la nostra scelta. Non senza qualche fatica, dopo aver collegato il telefono a Internet tramite un computer desktop, apriamo l'applicazione ed esaminiamo le richieste:

Applicazione Habr (non)ufficiale - HabrApp 2.0: accesso
Cancella che nulla è chiaro

Sì, tutto è crittografato, ma non voglio scherzare con la crittografia. Quindi devi guardare all'interno dell'applicazione stessa.

Decompilato .apk, iniziamo a cercare. Di cosa ha bisogno un'API? Giusto, endpoint, il luogo dove vanno tutte le richieste. Probabilmente è http(s), proviamo a trovare "https://":

In archivio AuthLinkManager.smali trova

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

Questo è il codice per la macchina virtuale Android (Dalvik VM), non molto comprensibile per gli esseri umani, ma comunque abbastanza informativo. Queste tre costanti, a giudicare dal loro contenuto e nome, nonché dal repository GitHub, vengono utilizzate per richiedere un token di accesso utilizzando il metodo GET.

Guardiamo oltre. Il file che appare successivamente nella ricerca è NetworkModule.smali:

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

Ed ecco il posto dove andare con le vostre richieste!

Affinché il client autoprodotto funzioni correttamente, c'è solo una cosa da capire: client_id, che molto probabilmente è un identificatore univoco per l'applicazione.

Tuttavia, la ricerca di questo testo nel codice sorgente non ha portato a trovare informazioni rilevanti...

Ma all'improvviso in uno dei file i miei occhi hanno colto alcune righe interessanti:

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

Questa, come puoi capire, è una voce di registro. Ma registrare cosa?

Parte terza. Questi sono i registri!

Noi usiamo adb logcat per visualizzare i registri dell'applicazione.

Applicazione Habr (non)ufficiale - HabrApp 2.0: accesso

Inaspettatamente, i log si sono rivelati ancora più dettagliati del previsto.

Qui non abbiamo solo ciò di cui abbiamo bisogno client_idMa segno utente/applicazione e accesso и пароль in chiaro!

Alcune teorie del complottoLa semplice presenza di login e password nei log non nuoce a nulla, poiché questi log possono essere letti solo con diritti di root o con una connessione tramite adb. Ma poiché tra le persone che leggono Habr ci sono sviluppatori Android che potrebbero avere il debug abilitato, questo diventa un problema.

In questo caso la “ricarica gratuita” in aeroporto può comportare un furto del conto, ma a chi serve?
Da questi log possiamo estrarre:

  • client_id и apikeyobbligatorio per accedere api;
  • URL di autorizzazione dell'utente (strano, ma non c'è nulla nel repository su questo metodo, forse non è fornito?)

È così che è successo. Sulla base di questa piccola ricerca, è già in corso il lavoro su un piccolo progetto: la nostra implementazione di un'applicazione mobile. Chiedo a chi vuole aiutare di scrivere un messaggio, e a tutti gli altri di votare (perché voglio capire se qualcuno ne ha bisogno).

Grazie!

Solo gli utenti registrati possono partecipare al sondaggio. AccediPer favore.

Utilizzi l'applicazione mobile Habr?

  • Sì, lo uso, ne sono soddisfatto

  • Sì, lo uso, l'applicazione causa inconvenienti

  • No, utilizzo la versione web sul mio telefono

  • No, utilizzo Habr dal mio computer

357 utenti hanno votato. 30 utenti si sono astenuti.

Fonte: habr.com

Aggiungi un commento