Aplicativo Habr (não)oficial - HabrApp 2.0: obtendo acesso

Numa noite lânguida e já bastante chata, eu, folheando oficial Aplicativo Habr, mais uma vez dobrei meus dedos, um para cada recurso que não funciona. Aqui, por exemplo, você não pode comentar, aqui lhe é negado o direito de voto e, em geral, por que as fórmulas não ficam visíveis na tela?

Aplicativo Habr (não)oficial - HabrApp 2.0: obtendo acesso
Estava decidido: precisávamos de algo confortável, agradável, algo nosso. E quanto ao seu próprio aplicativo para Habr?
Deixe-me dar algumas capturas de tela para entender a situação.

Aplicativo Habr (não)oficial - HabrApp 2.0: obtendo acessoDe alguma forma parece com isso это - de. Aplicativo habr.com

Lista de "inconvenientes"

  • Você não pode avaliar uma publicação cuja classificação seja diferente de 0
  • Nem sempre é possível escrever um comentário
  • As pesquisas não funcionam
  • As fórmulas não são visíveis no tema escuro (preto sobre preto)
  • Nem todos os favoritos estão disponíveis

Sim, o aplicativo não é atualizado desde agosto do ano passado, mas ainda está ruim. Em geral, precisa ser consertado.

Parte um. Procurando acesso.

Consulta rápida no Google "API Habrahab" diz que já está bastante desatualizado repositório no Github, não atualizado desde Novembro 21 2016, e isso, por um momento, dois anos e meio.

Ignorando o fato de que se trata de PHP, role para baixo e leia:

Obtendo o ID do aplicativo

Tirando vantagem essa forma no Habrahabr, você precisa descrever brevemente a essência do novo aplicativo e a finalidade para a qual ele precisa de uma API.

Não há dúvida de que se você precisa obter acesso, então você precisa dele. Escrevemos uma carta (abreviada):

Carta

Há um desejo de fazer um pedido para Habr com base no PWA. Há várias razões para isso. 

A primeira e mais óbvia: o aplicativo Android não atende às minhas necessidades pessoais.

Segundo: não há notificações nativas suficientes sobre todo tipo de coisa que normalmente chega por e-mail (comentários, por exemplo).

Terceiro: resumos pessoais (como perspectiva) sobre pessoas/hubs que me interessam, tendo em conta os meus interesses.

A resposta, claro, não foi muito agradável, mas pelo menos honesta:

Infelizmente, o acesso à nossa API não está disponível no momento. Planejamos retomar o fornecimento de acesso depois de finalizarmos a API, mas ainda não temos datas exatas, porque No momento, estamos ocupados resolvendo outras tarefas prioritárias.

"Ok sem problemas! Nós vamos inventar alguma coisa!" - disse a mim mesmo e comecei a procurar.

Parte dois. Escavações profundas.

Com base na lógica, se o aplicativo estiver em execução, ele terá acesso à API e estará conectado ao aplicativo. Vamos analisar.

Como estamos lidando com tráfego, o Wireshark é a nossa escolha. Não sem alguns problemas, depois de conectar o telefone à Internet através de um computador desktop, abrimos o aplicativo e olhamos as solicitações:

Aplicativo Habr (não)oficial - HabrApp 2.0: obtendo acesso
Claro que nada está claro

Sim, tudo está criptografado, mas não quero mexer com criptografia. Então você precisa olhar dentro do próprio aplicativo.

Descompilado .apk, vamos começar a procurar. O que qualquer API precisa? Certo, Ponto final, o local para onde vão todas as solicitações. Provavelmente é http(s), vamos tentar encontrar “https://”:

No arquivo AuthLinkManager.smali nós achamos

.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 da máquina virtual Android (VM Dalvik), não muito compreensível para os humanos, mas ainda assim bastante informativo. Essas três constantes, a julgar pelo seu conteúdo e nome, bem como pelo repositório GitHub, são usadas para solicitar um token de acesso usando o método GET.

Vamos dar uma olhada mais de perto. O arquivo que aparece a seguir na pesquisa é NetworkModule.smali:

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

E aqui é o lugar para atender seus pedidos!

Para que o cliente auto-escrito funcione corretamente, só resta uma coisa a descobrir: client_id, que provavelmente é um identificador exclusivo do aplicativo.

Porém, a busca por esse texto no código-fonte não levou à localização de informações relevantes...

Mas de repente, em um dos arquivos, meus olhos captaram algumas linhas interessantes:

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

Isto, como você pode entender, é uma entrada de log. Mas gravar o quê?

Parte TRÊS. Estes são os registros!

Nós usamos adb logcat para visualizar os logs do aplicativo.

Aplicativo Habr (não)oficial - HabrApp 2.0: obtendo acesso

Inesperadamente, os logs revelaram-se ainda mais detalhados do que o esperado.

Aqui não temos apenas o que precisamos client_idMas token usuário/aplicativo, e login и senha em texto simples!

Algumas teorias da conspiraçãoA mera presença de login e senha nos logs não prejudica em nada, pois esses logs só podem ser lidos com direitos de root ou com conexão via adb. Mas devido ao fato de que entre as pessoas que leem Habr existem desenvolvedores Android que podem ter a depuração habilitada, isso se torna um problema.

Neste caso, a “cobrança gratuita” no aeroporto pode resultar em roubo de conta, mas quem precisa disso?
Desses logs podemos extrair:

  • client_id и apikeynecessário para acessar api;
  • URL de autorização do usuário (estranho, mas não há nada no repositório sobre esse método, talvez não seja fornecido?)

Foi assim que aconteceu. Com base nesta pequena pesquisa, já está em andamento um trabalho em um pequeno projeto - nossa própria implementação de um aplicativo móvel. Peço a quem quiser ajudar que escreva uma mensagem, e a todos os demais - que votem (porque quero entender se alguém precisa disso).

Obrigado!

Apenas usuários registrados podem participar da pesquisa. Entrarpor favor

Você usa o aplicativo móvel Habr?

  • Sim, eu uso, estou feliz com isso

  • Sim, eu uso, o aplicativo causa transtorno

  • Não, eu uso a versão web no meu telefone

  • Não, eu uso o Habr no meu computador

357 usuários votaram. 30 usuários se abstiveram.

Fonte: habr.com

Adicionar um comentário