Een lome en reeds redelik vervelige aand blaai ek deur amptelik Habr toepassing, weereens het ek my vingers gebuig, een vir elke nie-werkende kenmerk. Hier kan jy byvoorbeeld nie kommentaar lewer nie, hier word jy stemreg geweier, en oor die algemeen, hoekom is die formules nie sigbaar op die skerm nie?
Daar is besluit: ons het iets gemakliks, aangenaam, iets van ons eie nodig. Wat van jou eie aansoek vir Habr?
Laat ek jou 'n paar skermkiekies gee om die situasie te verstaan.
Lyk so iets hierdie - van. habr.com aansoek
Lys van "ongerief"
Jy kan nie 'n publikasie gradeer waarvan die gradering verskil van 0 nie
Dit is nie altyd moontlik om 'n opmerking te skryf nie
Meningspeilings werk nie
Formules is nie sigbaar in donker tema nie (swart op swart)
Nie alle boekmerke is beskikbaar nie
Ja, die toepassing is sedert Augustus verlede jaar nie opgedateer nie, maar dit is steeds sleg. Oor die algemeen moet dit reggemaak word.
Deel een. Soek toegang.
Vinnige Google-navraag "habrahabr API" dit sê dit is reeds redelik verouderd bewaarplek op Github, sedertdien nie opgedateer nie November 21 2016, en dit, vir 'n oomblik, twee en 'n half jaar.
Ignoreer die feit dat dit PHP is, blaai af en lees:
Kry die aansoek-ID
Gebruik te maak hierdie vorm op Habrahabr, moet jy kortliks die essensie van die nuwe toepassing beskryf en die doel waarvoor dit 'n API benodig.
Daar is geen twyfel nie, as jy toegang moet kry, dan het jy dit nodig. Ons skryf 'n brief (afgekort):
brief
Daar is 'n begeerte om 'n aansoek vir Habr te maak gebaseer op PWA. Daar is verskeie redes hiervoor.
Die eerste en mees ooglopende: die Android-toepassing voldoen nie aan my persoonlike vereistes nie.
Tweedens: daar is nie genoeg inheemse kennisgewings oor allerhande dinge wat gewoonlik per e-pos kom nie (byvoorbeeld opmerkings).
Derdens: persoonlike vertering (as 'n perspektief) oor mense/spilpunte wat my interesseer, met inagneming van my belangstellings.
Die antwoord was natuurlik nie baie aangenaam nie, maar ten minste eerlik:
Ongelukkig is toegang tot ons API nie tans beskikbaar nie. Ons beplan om weer toegang te verskaf nadat ons die API voltooi het, maar ons het nog geen presiese datums nie, want Ons is tans besig om ander prioriteitstake op te los.
"Regso geen probleem nie! Ons sal met iets vorendag kom!" - Ek het vir myself gesê en begin soek.
Deel twee. Diep opgrawings.
Gebaseer op logika, as die toepassing loop, dan het dit toegang tot die API, en dit is hardbedraad in die toepassing. Kom ons ontleed.
Aangesien ons met verkeer te doen het, is Wireshark ons keuse. Nie sonder pyn nie, nadat ons die telefoon via 'n rekenaar aan die internet gekoppel het, maak ons die toepassing oop en kyk na die versoeke:
Dit is duidelik dat niks duidelik is nie
Ja, alles is geïnkripteer, maar ek wil nie met kriptografie mors nie. Dan moet jy binne die toepassing self kyk.
Gedekompileer APK, kom ons begin soek. Wat het enige API nodig? Reg, eindpunt, die plek waarheen alle versoeke gaan. Dit is waarskynlik http(s), kom ons probeer om "https://" te vind:
Dit is die kode vir die Android virtuele masjien (Dalvik VM), nie baie verstaanbaar vir mense nie, maar tog redelik insiggewend. Hierdie drie konstantes, te oordeel aan hul inhoud en naam, sowel as die GitHub-bewaarplek, word gebruik om 'n toegangsteken aan te vra met die metode GET.
Kom ons kyk verder. Die lêer wat volgende in die soektog verskyn is NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
En hier is die plek om te gaan met jou versoeke!
Vir die selfgeskrewe kliënt om behoorlik te werk, is daar net een ding oor om uit te vind - client_id, wat heel waarskynlik 'n unieke identifiseerder vir die toepassing is.
Die soeke na hierdie teks in die bronkode het egter nie daartoe gelei dat relevante inligting gevind is nie...
Maar skielik het my oë in een van die lêers 'n paar interessante lyne opgevang:
Dit is, soos u kan verstaan, 'n loginskrywing. Maar wat opneem?
Deel drie. Dit is die logs!
Ons gebruik adb logcat om toepassinglogboeke te sien.
Onverwags het die logboeke selfs meer gedetailleerd geblyk te wees as wat verwag is.
Hier het ons nie net wat ons nodig het nie client_idMaar teken gebruiker/toepassing, en логин и пароль in duidelike teks!
Sommige samesweringsteorieëDie blote teenwoordigheid van 'n login en wagwoord in die logs benadeel niks nie, aangesien hierdie logs slegs gelees kan word met óf wortelregte óf 'n verbinding via adb. Maar as gevolg van die feit dat daar onder die mense wat Habr lees Android-ontwikkelaars is wat ontfouting moontlik geaktiveer het, word dit 'n probleem.
In hierdie geval kan "gratis laai" by die lughawe tot rekeningdiefstal lei, maar wie het dit nodig?
Uit hierdie logs kan ons onttrek:
client_id и apikeyvereis om toegang te verkry api;
Gebruikersmagtigings-URL (vreemd, maar daar is niks in die bewaarplek oor hierdie metode nie, is dit dalk nie verskaf nie?)
Dis hoe dit gebeur het. Op grond van hierdie piepklein navorsing is daar reeds gewerk aan 'n klein projek - ons eie implementering van 'n mobiele toepassing. Ek vra diegene wat wil help om 'n boodskap te skryf, en almal anders - om te stem (want ek wil verstaan of iemand dit nodig het).
Skep 'n nuwe weergawe!
Slegs geregistreerde gebruikers kan aan die opname deelneem. Meld aan, asseblief.
Gebruik jy die Habr-mobiele toepassing?
Ja, ek gebruik dit, ek is tevrede daarmee
Ja, ek gebruik dit, die toepassing veroorsaak ongerief
Nee, ek gebruik die webweergawe op my foon
Nee, ek gebruik Habr vanaf my rekenaar
357 gebruikers het gestem. 30 gebruikers het buite stemming gebly.