Jedne trome i već prilično dosadne večeri, ja, listajući oficialʹnoe Aplikacija Habr, još jednom sam savio prste, po jedan za svaku neradnu značajku. Evo, na primjer, ne možete komentirati, ovdje vam se uskraćuje pravo glasa, i uopće, zašto se formule ne vide na ekranu?
Odlučeno je: trebamo nešto udobno, ugodno, nešto svoje. Što je s vlastitom aplikacijom za Habr?
Dat ću vam nekoliko snimaka zaslona da biste razumjeli situaciju.
Izgleda otprilike ovako ovo - od. aplikacija habr.com
Popis "neugodnosti"
Ne možete ocijeniti publikaciju čija je ocjena različita od 0
Nije uvijek moguće napisati komentar
Ankete ne rade
Formule nisu vidljive u tamnoj temi (crno na crno)
Nisu sve oznake dostupne
Da, aplikacija nije ažurirana od kolovoza prošle godine, ali i dalje je loša. Općenito, to treba popraviti.
Prvi dio. Tražim pristup.
Brzi Google upit "habrahabr API" kaže da je već prilično zastario spremište na Githubu, od tada nije ažuriran Studenog 21 2016, a ovo, na trenutak, dvije i pol godine.
Zanemarujući činjenicu da je ovo PHP, pomaknite se prema dolje i pročitajte:
Dobivanje ID aplikacije
Iskorištavanje ova forma na Habrahabru trebate ukratko opisati bit nove aplikacije i svrhu za koju joj je potreban API.
Nema sumnje, ako trebate dobiti pristup, onda vam je potreban. Pišemo pismo (skraćeno):
Pismo
Postoji želja napraviti aplikaciju za Habr temeljenu na PWA. Nekoliko je razloga za to.
Prvo i najočitije: Android aplikacija ne ispunjava moje osobne zahtjeve.
Drugo: nema dovoljno izvornih obavijesti o svakakvim stvarima koje obično dolaze e-poštom (komentari, na primjer).
Treće: osobni sažetci (kao perspektiva) o ljudima/centrilima koji me zanimaju, uzimajući u obzir moje interese.
Odgovor, naravno, nije bio baš ugodan, ali barem iskren:
Nažalost, pristup našem API-ju trenutno nije dostupan. Planiramo nastaviti pružati pristup nakon što završimo finaliziranje API-ja, ali još nemamo točne datume jer Trenutno smo zauzeti rješavanjem drugih prioritetnih zadataka.
"U redu nema problema! Smislit ćemo nešto!" - rekla sam sama sebi i počela tražiti.
Drugi dio. Duboki iskopi.
Na temelju logike, ako je aplikacija pokrenuta, tada ima pristup API-ju i ugrađena je u aplikaciju. Analizirajmo.
Budući da se bavimo prometom, Wireshark je naš izbor. Ne bez muke, nakon povezivanja telefona s internetom preko stolnog računala, otvaramo aplikaciju i gledamo zahtjeve:
Jasno je da ništa nije jasno
Da, sve je šifrirano, ali ne želim se petljati s kriptografijom. Zatim morate pogledati unutar same aplikacije.
Dekompilirano . APK, počnimo tražiti. Što je potrebno bilo kojem API-ju? Pravo, krajnja, mjesto gdje idu svi zahtjevi. Ovo je vjerojatno http(s), pokušajmo pronaći "https://":
Ovo je kod za Android virtualni stroj (Dalvik VM), ne baš razumljivo ljudima, ali ipak prilično informativno. Ove tri konstante, sudeći po njihovom sadržaju i nazivu, kao i GitHub repozitoriju, koriste se za traženje pristupnog tokena metodom GET.
Pogledajmo dalje. Datoteka koja se pojavljuje sljedeća u pretrazi je NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
A ovdje je mjesto na koje možete ići sa svojim zahtjevima!
Da bi klijent koji je sam napisao ispravno radio, preostaje samo jedna stvar koju treba shvatiti - client_id, što je najvjerojatnije jedinstveni identifikator za aplikaciju.
Međutim, traženje ovog teksta u izvornom kodu nije dovelo do pronalaska relevantnih informacija...
Ali iznenada su mi u jednoj od datoteka oči zapele neke zanimljive retke:
Ovo je, kao što možete razumjeti, zapis u dnevniku. Ali snimanje čega?
treći dio. Ovo su cjepanice!
Koristimo adb logcat za pregled zapisa aplikacije.
Neočekivano, dnevnici su se pokazali još detaljnijima nego što se očekivalo.
Ovdje nemamo samo ono što nam je potrebno client_idAli žeton korisnik/aplikacija i prijava и lozinka čistim tekstom!
Neke teorije zavjereSama prisutnost prijave i lozinke u zapisima ne šteti ničemu, budući da se ti zapisi mogu čitati samo s root pravima ili vezom putem adb. Ali zbog činjenice da među ljudima koji čitaju Habr postoje Android programeri koji možda imaju omogućeno uklanjanje pogrešaka, ovo postaje problem.
U ovom slučaju "besplatno punjenje" u zračnoj luci može rezultirati krađom računa, ali kome to treba?
Iz ovih zapisa možemo izdvojiti:
client_id и apikeypotrebno za pristup api;
URL autorizacije korisnika (čudno, ali u repozitoriju nema ništa o ovoj metodi, možda nije navedena?)
Tako se i dogodilo. Na temelju ovog malog istraživanja već se radi na malom projektu - vlastitoj implementaciji mobilne aplikacije. Molim one koji žele pomoći da napišu poruku, a sve ostale - da glasaju (jer želim razumjeti treba li to nekome).
Hvala vam!
U anketi mogu sudjelovati samo registrirani korisnici. Prijaviti se, molim.
Koristite li mobilnu aplikaciju Habr?
Da, koristim ga, zadovoljan sam
Da, koristim ga, aplikacija uzrokuje neugodnosti
Ne, koristim web verziju na svom telefonu
Ne, koristim Habr sa svog računala
Glasovalo je 357 korisnika. Suzdržano je bilo 30 korisnika.