Aplicación (non) oficial de Habr - HabrApp 2.0: obtendo acceso

Unha noite lánguida e xa bastante aburrida, eu, folleando Oficial Aplicación Habr, unha vez máis dobrei os dedos, un por cada función que non funciona. Aquí, por exemplo, non se pode opinar, aquí se lle nega o dereito a voto e, en xeral, por que non se ven as fórmulas na pantalla?

Aplicación (non) oficial de Habr - HabrApp 2.0: obtendo acceso
Decidiuse: necesitabamos algo cómodo, agradable, algo propio. E a túa propia aplicación para Habr?
Permíteme darche algunhas capturas de pantalla para entender a situación.

Aplicación (non) oficial de Habr - HabrApp 2.0: obtendo accesoParece algo así este - de. aplicación habr.com

Lista de "inconvenientes"

  • Non podes valorar unha publicación cuxa valoración sexa diferente de 0
  • Non sempre é posible escribir un comentario
  • As enquisas non funcionan
  • As fórmulas non son visibles no tema escuro (negro sobre negro)
  • Non todos os marcadores están dispoñibles

Si, a aplicación non se actualizou desde agosto do ano pasado, pero aínda está mal. En xeral, hai que arranxar.

Primeira parte. Buscando acceso.

Consulta rápida de Google "habrahabr API" di que xa está bastante anticuado repositorio en Github, sen actualizar desde entón Novembro 21 2016, e isto, por un momento, dous anos e medio.

Ignorando o feito de que isto é PHP, desprázate cara abaixo e le:

Obtención do ID da aplicación

Aproveitando esta forma en Habrahabr, cómpre describir brevemente a esencia da nova aplicación e o propósito para o que necesita unha API.

Non hai dúbida, se precisas acceder, entón o necesitas. Escribimos unha carta (abreviada):

Unha carta

Hai un desexo de facer unha solicitude para Habr baseada en PWA. Hai varias razóns para iso. 

O primeiro e máis obvio: a aplicación de Android non cumpre os meus requisitos persoais.

Segundo: non hai suficientes notificacións nativas sobre todo tipo de cousas que adoitan chegar por correo electrónico (comentarios, por exemplo).

Terceiro: resúmenes persoais (como perspectiva) sobre persoas/centros que me interesan, tendo en conta os meus intereses.

A resposta, por suposto, non foi moi agradable, pero polo menos honesta:

Desafortunadamente, o acceso á nosa API non está dispoñible actualmente. Pensamos retomar a oferta de acceso despois de que rematemos de finalizar a API, pero aínda non temos datas exactas porque Actualmente estamos ocupados resolvendo outras tarefas prioritarias.

"Está ben, non hai problema! Imos dar con algo!" - díxenme e empecei a buscar.

Segunda parte. Escavacións profundas.

Segundo a lóxica, se a aplicación está en execución, entón ten acceso á API e está conectada á aplicación. Analicemos.

Xa que estamos lidando co tráfico, Wireshark é a nosa elección. Non sen problemas, despois de conectar o teléfono a Internet a través dun ordenador de sobremesa, abrimos a aplicación e miramos as solicitudes:

Aplicación (non) oficial de Habr - HabrApp 2.0: obtendo acceso
Está claro que nada está claro

Si, todo está cifrado, pero non quero meterse coa criptografía. Entón cómpre mirar dentro da propia aplicación.

Descompilado .apk, imos comezar a buscar. Que precisa calquera API? certo, punto final, o lugar onde van todas as solicitudes. Probablemente este sexa http(s), imos tentar buscar "https://":

En arquivo AuthLinkManager.smali atopamos

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

Este é o código para a máquina virtual Android (Dalvik VM), non moi comprensible para os humanos, pero aínda así bastante informativo. Estas tres constantes, a xulgar polo seu contido e nome, así como o repositorio de GitHub, úsanse para solicitar un token de acceso mediante o método GET.

Vexamos máis alá. O ficheiro que aparece a continuación na busca é NetworkModule.smali:

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

E aquí tes o lugar onde ir coas túas solicitudes!

Para que o cliente autoescrito funcione correctamente, só queda unha cousa por descubrir: client_id, que probablemente sexa un identificador único para a aplicación.

Porén, a busca deste texto no código fonte non levou a atopar información relevante...

Pero de súpeto nun dos ficheiros os meus ollos captaron algunhas liñas interesantes:

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

Esta, como podes entender, é unha entrada de rexistro. Pero gravar que?

Terceira parte. Estes son os rexistros!

Usamos adb logcat para ver os rexistros de aplicacións.

Aplicación (non) oficial de Habr - HabrApp 2.0: obtendo acceso

Inesperadamente, os rexistros resultaron ser aínda máis detallados do esperado.

Aquí non temos só o que necesitamos client_idPero tocón usuario/aplicación e Iniciar и contrasinal en texto claro!

Algunhas teorías conspirativasA mera presenza dun inicio de sesión e un contrasinal nos rexistros non prexudica nada, xa que estes rexistros só se poden ler con dereitos de root ou cunha conexión a través de adb. Pero debido ao feito de que entre as persoas que len Habr hai desenvolvedores de Android que poden ter activada a depuración, isto convértese nun problema.

Neste caso, a "cobra gratuíta" no aeroporto pode producir un roubo de conta, pero quen o necesita?
Destes rexistros podemos extraer:

  • client_id и apikeynecesario para acceder api;
  • URL de autorización do usuario (estraño, pero non hai nada no repositorio sobre este método, quizais non se proporcione?)

Así pasou. Con base nesta pequena investigación, xa se está a traballar nun pequeno proxecto: a nosa propia implementación dunha aplicación móbil. Pídolles aos que queiran axudar a escribir unha mensaxe e a todos os demais que voten (porque quero entender se alguén o precisa).

Спасибо за внимание!

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Usas a aplicación móbil Habr?

  • Si, úsoo, estou feliz con el

  • Si, úsoo, a aplicación causa inconvenientes

  • Non, uso a versión web no meu teléfono

  • Non, uso Habr desde o meu ordenador

Votaron 357 usuarios. 30 usuarios abstivéronse.

Fonte: www.habr.com

Engadir un comentario