(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga ega

Bir oqshom, zerikarli va zerikarli oqshomni varaqlayapman rasmiy Habr ilovasi, yana bir bor barmoqlarimni egdim, har bir ishlamaydigan xususiyat uchun bittadan. Bu erda, masalan, siz izoh bera olmaysiz, bu erda siz ovoz berish huquqidan mahrum bo'lasiz va umuman, nima uchun formulalar ekranda ko'rinmaydi?

(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga ega
Qaror qabul qilindi: bizga qulay, yoqimli, o'zimizga xos narsa kerak edi. Habr uchun shaxsiy arizangiz haqida nima deyish mumkin?
Vaziyatni tushunish uchun sizga bir nechta ekran tasvirlarini beraman.

(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga egaShunga o'xshash narsa ko'rinadi u -dan. habr.com ilovasi

"Noqulayliklar" ro'yxati

  • Siz reytingi 0 dan farq qiladigan nashrni baholay olmaysiz
  • Izoh yozish har doim ham mumkin emas
  • Soβ€˜rovlar ishlamaydi
  • Formulalar qorong'u mavzuda ko'rinmaydi (qora va qora)
  • Barcha xatcho'plar mavjud emas

Ha, dastur o'tgan yilning avgust oyidan beri yangilanmagan, ammo u hali ham yomon. Umuman olganda, uni tuzatish kerak.

Birinchi qism. Kirish qidirilmoqda.

Tez Google so'rovi "habrahabr API" u allaqachon eskirganligini aytadi ombori Github-da, beri yangilanmagan Noyabr 21 2016, va bu, bir lahzaga, ikki yarim yil.

Bu PHP ekanligiga e'tibor bermay, pastga aylantiring va o'qing:

Ilova identifikatorini olish

Foyda olish bu shakl Habrahabr-da siz yangi dasturning mohiyatini va unga API kerak bo'lgan maqsadni qisqacha tasvirlab berishingiz kerak.

Hech qanday savol yo'q, agar sizga kirish kerak bo'lsa, unda sizga kerak. Biz xat yozamiz (qisqartirilgan):

Yozish

PWA asosida Habr uchun ariza berish istagi bor. Buning bir qancha sabablari bor. 

Birinchi va eng aniq: Android ilovasi mening shaxsiy talablarimga javob bermaydi.

Ikkinchidan: odatda elektron pochta orqali keladigan barcha turdagi narsalar haqida mahalliy bildirishnomalar etarli emas (masalan, sharhlar).

Uchinchidan: qiziqishlarimni inobatga olgan holda, meni qiziqtiradigan odamlar/markazlar haqida shaxsiy hazm qilish (perspektiv sifatida).

Javob, albatta, unchalik yoqimli emas edi, lekin hech bo'lmaganda halol edi:

Afsuski, bizning API-ga kirish hozircha mavjud emas. APIni yakunlaganimizdan soβ€˜ng kirishni davom ettirishni rejalashtirmoqdamiz, ammo bizda hozircha aniq sanalar yoβ€˜q, chunki Hozirda biz boshqa ustuvor vazifalarni hal qilish bilan bandmiz.

"Yaxshi, muammo yo'q! Biz nimadir o'ylab topamiz!" – dedim oβ€˜zimga va izlay boshladim.

Ikkinchi qism. Chuqur qazish ishlari.

Mantiqqa asoslanib, agar dastur ishlayotgan bo'lsa, u API-ga kirish huquqiga ega va u ilovaga ulangan. Keling, tahlil qilaylik.

Biz trafik bilan shug'ullanayotganimiz sababli, Wireshark bizning tanlovimizdir. Telefonni ish stoli kompyuter orqali Internetga ulab, biz dasturni ochamiz va so'rovlarni ko'rib chiqamiz:

(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga ega
Hech narsa aniq emasligi aniq

Ha, hamma narsa shifrlangan, lekin men kriptografiya bilan aralashishni xohlamayman. Keyin dasturning o'ziga qarashingiz kerak.

Dekompilyatsiya qilingan .apk, keling, qidirishni boshlaylik. Har qanday API nimaga muhtoj? To'g'ri, so'nggi nuqta, barcha so'rovlar boradigan joy. Bu http(lar), keling β€œhttps://” ni topishga harakat qilaylik:

Fayl ichida AuthLinkManager.smali topamiz

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

Bu Android virtual mashinasi uchun kod (Dalvik VM), odamlar uchun unchalik tushunarli emas, lekin baribir juda ma'lumotli. Ushbu uchta konstanta, ularning mazmuni va nomi, shuningdek GitHub ombori bo'yicha, usul yordamida kirish tokenini so'rash uchun ishlatiladi. GET.

Keling, batafsilroq ko'rib chiqaylik. Qidiruvda keyingi fayl paydo bo'ladi NetworkModule.smali:

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

Va bu sizning so'rovlaringiz bilan boradigan joy!

O'z-o'zidan yozilgan mijoz to'g'ri ishlashi uchun faqat bitta narsani tushunish kerak - client_id, bu dastur uchun noyob identifikator bo'lishi mumkin.

Biroq, ushbu matnni manba kodida qidirish tegishli ma'lumotlarni topishga olib kelmadi ...

Ammo to'satdan fayllardan birida ko'zlarim qiziqarli satrlarga tushdi:

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

Bu, siz tushunganingizdek, jurnalga kirish. Lekin nima yozish?

Uchinchi qism. Bu jurnallar!

Biz foydalanamiz adb logcat ilovalar jurnallarini ko'rish uchun.

(Un) rasmiy Habr ilovasi - HabrApp 2.0: kirish huquqiga ega

Kutilmaganda, jurnallar kutilganidan ham batafsilroq bo'lib chiqdi.

Bu erda biz nafaqat kerakli narsalarga egamiz client_idlekin token foydalanuvchi/ilova va tizimga kirish ΠΈ parol aniq matnda!

Ba'zi fitna nazariyalariJurnallarda login va parolning mavjudligi hech narsaga zarar keltirmaydi, chunki bu jurnallar faqat ildiz huquqlari yoki ulanish orqali o'qilishi mumkin. adb. Ammo Habr-ni o'qiyotgan odamlar orasida disk raskadrovka funksiyasi yoqilgan bo'lishi mumkin bo'lgan Android dasturchilari borligi sababli, bu muammoga aylanadi.

Bunday holda, aeroportda "bepul zaryadlash" hisobni o'g'irlashga olib kelishi mumkin, ammo bu kimga kerak?
Ushbu jurnallardan biz quyidagilarni chiqarishimiz mumkin:

  • client_id ΠΈ apikeykirish uchun talab qilinadi api;
  • Foydalanuvchining avtorizatsiya URL manzili (g'alati, lekin bu usul haqida omborda hech narsa yo'q, ehtimol u taqdim etilmagandir?)

Shunday bo'ldi. Ushbu kichik tadqiqotga asoslanib, kichik loyiha ustida ish olib borilmoqda - o'zimizning mobil ilovamiz. Yordam bermoqchi bo'lganlardan xabar yozishlarini, qolganlardan esa ovoz berishlarini so'rayman (chunki bu kimgadir kerak yoki yo'qligini tushunmoqchiman).

E'tiboringiz uchun tashakkur!

So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.

Habr mobil ilovasidan foydalanasizmi?

  • Ha, men foydalanaman, men bundan mamnunman

  • Ha, men foydalanaman, dastur noqulaylik tug'diradi

  • Yo'q, men telefonimda veb-versiyasidan foydalanaman

  • Yo'q, men Habrni kompyuterimdan foydalanaman

357 foydalanuvchi ovoz berdi. 30 nafar foydalanuvchi betaraf qolgan.

Manba: www.habr.com

a Izoh qo'shish