(Ne)uradna aplikacija Habr - HabrApp 2.0: pridobitev dostopa

Nekega dolgočasnega in že precej dolgočasnega večera, jaz, listam uradni Aplikacija Habr, spet sem upognil prste, enega za vsako nedelujočo funkcijo. Tukaj na primer ne morete komentirati, tukaj vam je odrečena volilna pravica in na splošno, zakaj se formule ne vidijo na ekranu?

(Ne)uradna aplikacija Habr - HabrApp 2.0: pridobitev dostopa
Odločeno je bilo: potrebujemo nekaj udobnega, prijetnega, nekaj svojega. Kaj pa lastna aplikacija za Habr?
Naj vam dam nekaj posnetkov zaslona, ​​da boste razumeli situacijo.

(Ne)uradna aplikacija Habr - HabrApp 2.0: pridobitev dostopaIzgleda nekako takole это - od. aplikacijo habr.com

Seznam "nevšečnosti"

  • Ne morete oceniti publikacije, katere ocena je drugačna od 0
  • Komentarja ni vedno mogoče napisati
  • Ankete ne delujejo
  • Formule niso vidne v temni temi (črno na črno)
  • Vsi zaznamki niso na voljo

Da, aplikacija ni bila posodobljena od avgusta lani, a je še vedno slaba. Na splošno je treba popraviti.

Prvi del. Iščem dostop.

Hitra Google poizvedba "habrahabr API" piše, da je že precej zastarelo repozitorij na Githubu, od takrat ni bil posodobljen November 21 2016, in to za trenutek, dve leti in pol.

Ne upoštevajte dejstva, da je to PHP, pomaknite se navzdol in preberite:

Pridobivanje ID-ja aplikacije

Izkoristiti ta obrazec na Habrahabru morate na kratko opisati bistvo nove aplikacije in namen, za katerega potrebuje API.

Nobenega dvoma ni, če potrebujete dostop, potem ga potrebujete. Pišemo pismo (skrajšano):

Pismo

Obstaja želja po izdelavi aplikacije za Habr na osnovi PWA. Razlogov za to je več. 

Prvi in ​​najbolj očiten: aplikacija za Android ne ustreza mojim osebnim zahtevam.

Drugič: premalo je izvornih obvestil o najrazličnejših stvareh, ki običajno prihajajo po e-pošti (komentarji, na primer).

Tretjič: osebni pregledi (kot perspektiva) o ljudeh/centrih, ki me zanimajo, ob upoštevanju mojih interesov.

Odgovor seveda ni bil preveč prijeten, a vsaj iskren:

Na žalost dostop do našega API-ja trenutno ni na voljo. Načrtujemo, da bomo nadaljevali z zagotavljanjem dostopa, ko bomo dokončali API, vendar še nimamo natančnih datumov, ker Trenutno se ukvarjamo z reševanjem drugih prioritetnih nalog.

"Vredu ni problema! Bomo že kaj izmislili!" - sem si rekla in začela iskati.

Drugi del. Globoki izkopi.

Na podlagi logike, če se aplikacija izvaja, potem ima dostop do API-ja in je vgrajena v aplikacijo. Analizirajmo.

Ker imamo opravka s prometom, je Wireshark naša izbira. Ne brez težav, ko telefon povežemo z internetom prek namiznega računalnika, odpremo aplikacijo in si ogledamo zahteve:

(Ne)uradna aplikacija Habr - HabrApp 2.0: pridobitev dostopa
Jasno je, da nič ni jasno

Da, vse je šifrirano, vendar se ne želim zapletati s kriptografijo. Nato morate pogledati v samo aplikacijo.

Dekompilirano . APK, začnimo iskati. Kaj potrebuje kateri koli API? Prav, končna točka, kraj, kamor gredo vse zahteve. To je verjetno http(s), poskusimo najti "https://":

V datoteki AuthLinkManager.smali najti

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

To je koda za navidezni stroj Android (Dalvik VM), ljudem ne preveč razumljivo, a vseeno precej informativno. Te tri konstante, sodeč po njihovi vsebini in imenu ter repozitorij GitHub, se uporabljajo za zahtevanje žetona za dostop z metodo GET.

Poglejmo naprej. Datoteka, ki se prikaže naslednja pri iskanju, je NetworkModule.smali:

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

In tukaj je kraj, kamor lahko izpolnite svoje zahteve!

Za pravilno delovanje odjemalca, ki ga je napisal sam, je treba ugotoviti samo eno stvar - client_id, ki je najverjetneje edinstven identifikator za aplikacijo.

Vendar iskanje tega besedila v izvorni kodi ni vodilo do iskanja ustreznih informacij ...

Toda nenadoma je v eni od datotek moje oko ujelo nekaj zanimivih vrstic:

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

Kot lahko razumete, je to vnos v dnevnik. Toda snemanje česa?

Tretji del. To so hlodi!

Uporaba adb logcat za ogled dnevnikov aplikacij.

(Ne)uradna aplikacija Habr - HabrApp 2.0: pridobitev dostopa

Nepričakovano se je izkazalo, da so dnevniki celo bolj podrobni od pričakovanega.

Tukaj nimamo samo tistega, kar potrebujemo client_idVendar token uporabnik/aplikacija in prijava и geslo v navadnem besedilu!

Nekaj ​​teorij zaroteSama prisotnost prijave in gesla v dnevnikih ne škoduje ničemur, saj je te dnevnike mogoče brati le s korenskimi pravicami ali s povezavo prek adb. Toda zaradi dejstva, da so med ljudmi, ki berejo Habr, tudi razvijalci za Android, ki imajo morda omogočeno odpravljanje napak, to postane težava.

V tem primeru lahko "brezplačno polnjenje" na letališču povzroči krajo računa, ampak kdo ga potrebuje?
Iz teh dnevnikov lahko izvlečemo:

  • client_id и apikeypotrebno za dostop API;
  • URL za avtorizacijo uporabnika (nenavadno, vendar v repozitoriju ni ničesar o tej metodi, morda ni na voljo?)

Tako se je zgodilo. Na podlagi te drobne raziskave že poteka delo na manjšem projektu - lastni izvedbi mobilne aplikacije. Prosim tiste, ki želijo pomagati, da napišejo sporočilo, vse ostale pa naj glasujejo (ker želim razumeti, ali kdo to potrebuje).

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

V anketi lahko sodelujejo samo registrirani uporabniki. Prijaviti se, prosim.

Ali uporabljate mobilno aplikacijo Habr?

  • Ja, uporabljam ga, zadovoljen sem z njim

  • Da, uporabljam ga, aplikacija povzroča nevšečnosti

  • Ne, v telefonu uporabljam spletno različico

  • Ne, Habr uporabljam iz računalnika

Glasovalo je 357 uporabnikov. 30 uporabnikov se je vzdržalo.

Vir: www.habr.com

Dodaj komentar