(Un) rəsmi Habr tətbiqi - HabrApp 2.0: giriş əldə etmək

Bir ləng və onsuz da çox darıxdırıcı bir axşam, mən vərəqləyirəm rəsmi Habr tətbiqi, bir dəfə daha barmaqlarımı bükdüm, hər işləməyən xüsusiyyət üçün bir. Burada, məsələn, şərh verə bilmirsən, burada səs vermək hüququndan məhrum edilirsən və ümumiyyətlə, niyə düsturlar ekranda görünmür?

(Un) rəsmi Habr tətbiqi - HabrApp 2.0: giriş əldə etmək
Qərara alındı: bizə rahat, xoş, özümüzə məxsus bir şey lazım idi. Habr üçün öz ərizəniz haqqında nə demək olar?
Vəziyyəti başa düşmək üçün sizə bir neçə ekran görüntüsü verim.

(Un) rəsmi Habr tətbiqi - HabrApp 2.0: giriş əldə etməkBu kimi bir şey görünür bu - of. habr.com tətbiqi

"Narahatlıqların" siyahısı

  • Siz reytinqi 0-dan fərqli olan nəşri qiymətləndirə bilməzsiniz
  • Şərh yazmaq həmişə mümkün olmur
  • Anketlər işləmir
  • Düsturlar qaranlıq temada görünmür (qara üzərində qara)
  • Bütün əlfəcinlər mövcud deyil

Bəli, proqram keçən ilin avqustundan bəri yenilənməyib, amma yenə də pisdir. Ümumiyyətlə, onu düzəltmək lazımdır.

Birinci hissə. Giriş axtarır.

Sürətli Google Sorğusu "habrahabr API" artıq olduqca köhnəldiyini deyir anbar Github-da, o vaxtdan bəri yenilənməyib November 21 2016və bu, bir anlıq, iki il yarım.

Bunun PHP olmasına məhəl qoymayaraq, aşağı diyirləyin və oxuyun:

Tətbiq ID-sinin əldə edilməsi

İstifadə edərək bu forma Habrahabr-da siz yeni tətbiqin mahiyyətini və onun API-yə ehtiyac duyduğu məqsədi qısaca təsvir etməlisiniz.

Heç bir sual yoxdur, əgər giriş əldə etmək lazımdırsa, deməli bu lazımdır. Məktub yazırıq (qısaldılmış):

Məktub

PWA əsasında Habr üçün müraciət etmək istəyi var. Bunun bir neçə səbəbi var. 

Birinci və ən aydın: Android proqramı şəxsi tələblərimə cavab vermir.

İkincisi: adətən e-poçtla gələn hər cür şeylər haqqında kifayət qədər yerli bildirişlər yoxdur (məsələn, şərhlər).

Üçüncüsü: maraqlarımı nəzərə alaraq məni maraqlandıran insanlar/hublar haqqında şəxsi həzmlər (perspektiv olaraq).

Cavab, əlbəttə ki, çox xoş deyildi, lakin ən azı dürüst idi:

Təəssüf ki, API-yə giriş hazırda mövcud deyil. API-ni yekunlaşdırdıqdan sonra girişi təmin etməyi davam etdirməyi planlaşdırırıq, lakin hələ dəqiq tarixlərimiz yoxdur, çünki Hazırda digər prioritet vəzifələrin həlli ilə məşğuluq.

"Oldu, problem deyil! Bir şey tapacağıq!" – dedim və axtarmağa başladım.

İkinci hissə. Dərin qazıntılar.

Məntiqə əsaslanaraq, əgər proqram işləyirsə, o zaman onun API-yə çıxışı var və o, proqrama qoşulub. Gəlin təhlil edək.

Trafiklə məşğul olduğumuz üçün Wireshark bizim seçimimizdir. Bir az əziyyət çəkmədən, telefonu masaüstü kompüter vasitəsilə İnternetə qoşaraq, proqramı açıb sorğulara baxırıq:

(Un) rəsmi Habr tətbiqi - HabrApp 2.0: giriş əldə etmək
Heç bir şeyin aydın olmadığını aydınlaşdırın

Bəli, hər şey şifrələnib, amma kriptoqrafiya ilə qarışmaq istəmirəm. Sonra proqramın özünə baxmaq lazımdır.

Decompilyed APK, gəlin axtarmağa başlayaq. Hər hansı bir API nə lazımdır? Düzdü, son nöqtə, bütün sorğuların getdiyi yer. Bu, yəqin ki, http(lər)dir, gəlin “https://” tapmağa çalışaq:

Faylda AuthLinkManager.smali Biz tapdıq

.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 maşını üçün koddur (Dalvik VM), insanlar üçün çox başa düşülən deyil, lakin hələ də kifayət qədər məlumatlıdır. Məzmuna və adlarına, həmçinin GitHub repozitoriyasına görə bu üç sabit metoddan istifadə edərək giriş nişanı tələb etmək üçün istifadə olunur. GET.

Gəlin daha da baxaq. Axtarışda növbəti görünən fayldır NetworkModule.smali:

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

İstəklərinizlə getmək üçün yer budur!

Öz-özünə yazılmış müştərinin düzgün işləməsi üçün anlamaq üçün yalnız bir şey qalır - client_id, çox güman ki, tətbiq üçün unikal identifikatordur.

Lakin mənbə kodunda bu mətnin axtarışı müvafiq məlumatın tapılmasına səbəb olmadı...

Amma birdən fayllardan birində gözlərim maraqlı sətirlərə tuş gəldi:

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

Bu, başa düşdüyünüz kimi, log girişidir. Amma nə yazır?

Üçüncü hissə. Bunlar loglardır!

Biz istifadə edirik adb logcat proqram qeydlərinə baxmaq üçün.

(Un) rəsmi Habr tətbiqi - HabrApp 2.0: giriş əldə etmək

Gözlənilmədən, logların gözləniləndən daha ətraflı olduğu ortaya çıxdı.

Burada təkcə ehtiyacımız yoxdur client_idLakin token istifadəçi/tətbiq və giriş и parol düz mətndə!

Bəzi sui-qəsd nəzəriyyələriJurnallarda sadəcə giriş və parolun olması heç nəyə zərər vermir, çünki bu qeydlər yalnız kök hüquqları və ya əlaqə vasitəsilə oxuna bilər. adb. Ancaq Habr-ı oxuyan insanlar arasında sazlama funksiyasını aktivləşdirə bilən Android tərtibatçılarının olması səbəbindən bu problemə çevrilir.

Belə olan halda hava limanında “pulsuz yükləmə” hesabın oğurlanması ilə nəticələnə bilər, bəs bu kimə lazımdır?
Bu qeydlərdən çıxara bilərik:

  • client_id и apikeydaxil olmaq üçün tələb olunur Api;
  • İstifadəçi icazəsi URL-i (qəribədir, lakin bu üsulla bağlı depoda heç nə yoxdur, bəlkə təmin edilməyib?)

Belə də oldu. Bu kiçik araşdırmaya əsaslanaraq, artıq kiçik bir layihə üzərində iş gedir - öz mobil tətbiqetməmiz. Kömək etmək istəyənlərdən mesaj yazmağı, qalan hər kəsdən səs vermələrini xahiş edirəm (çünki bunun kiməsə lazım olub-olmadığını anlamaq istəyirəm).

Diqqətiniz üçün təşəkkür edirik!

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Siz Habr mobil proqramından istifadə edirsiniz?

  • Bəli, istifadə edirəm, bundan məmnunam

  • Bəli, istifadə edirəm, tətbiq narahatçılıq yaradır

  • Xeyr, mən telefonumda veb versiyasından istifadə edirəm

  • Xeyr, mən Habrı kompüterimdən istifadə edirəm

357 istifadəçi səs verib. 30 istifadəçi bitərəf qalıb.

Mənbə: www.habr.com

Добавить комментарий