(Un) замимаи расмии Habr - HabrApp 2.0: дастрасӣ пайдо кардан

Як шоми суст ва аллакай дилгиркунанда, ман варақ задам расмй Барномаи Habr, ман бори дигар ангуштони худро хам кардам, якто барои ҳар як хусусияти корношоям. Дар ин ҷо, масалан, шумо шарҳ дода наметавонед, дар ин ҷо шумо аз ҳуқуқи овоздиҳӣ маҳрум кардаед ва умуман, чаро формулаҳо дар экран намоён нестанд?

(Un) замимаи расмии Habr - HabrApp 2.0: дастрасӣ пайдо кардан
Қарор дода шуд: ба мо чизи бароҳат, гуворо, чизи худамон лозим буд. Дар бораи аризаи шахсии шумо барои Ҳабр чӣ гуфтан мумкин аст?
Иҷозат диҳед ба шумо якчанд скриншотҳоро барои фаҳмидани вазъият диҳам.

(Un) замимаи расмии Habr - HabrApp 2.0: дастрасӣ пайдо карданЧунин ба назар мерасад ин - аз. замимаи habr.com

Рӯйхати "ноуқубатҳо"

  • Шумо наметавонед ба нашрияе, ки рейтингаш аз 0 фарқ дорад, баҳо диҳед
  • Навиштани шарҳ на ҳама вақт имконпазир аст
  • Пурсишҳо кор намекунанд
  • Формулаҳо дар мавзӯи торик намоён нестанд (сиёҳ ба сиёҳ)
  • На ҳама хатчӯбҳо дастрасанд

Бале, барнома аз моҳи августи соли гузашта навсозӣ нашудааст, аммо он ҳанӯз ҳам бад аст. Умуман, онро ислоҳ кардан лозим аст.

Қисми якум. Дар ҷустуҷӯи дастрасӣ.

Дархости зуди Google "API habrahabr" мегӯяд, ки он аллакай хеле кӯҳна шудааст анбор дар Github, аз он вақт навсозӣ нашудааст Ноябр 21 2016, ва ин, як лаҳза, дуюним сол.

Ба он аҳамият надиҳед, ки ин PHP аст, ба поён ҳаракат кунед ва хонед:

Гирифтани ID-и ариза

Истифодаи фоида ин шакл дар Habrahabr, шумо бояд моҳияти замимаи нав ва мақсадеро, ки барои он API лозим аст, ба таври мухтасар тавсиф кунед.

Ҳеҷ саволе нест, агар ба шумо дастрасӣ пайдо кардан лозим бошад, пас ба шумо лозим аст. Мо мактуб менависем (ихтисоршуда):

Навиштани

Хоҳиши дархост барои Habr дар асоси PWA вуҷуд дорад. Ин якчанд сабаб дорад. 

Аввалин ва равшантарин: барномаи Android ба талаботи шахсии ман ҷавобгӯ нест.

Дуюм: дар бораи ҳама гуна чизҳое, ки одатан тавассути почтаи электронӣ меоянд (масалан, шарҳҳо) огоҳиҳои маҳаллӣ кофӣ нестанд.

Сеюм: ҳазми шахсӣ (ҳамчун дурнамо) дар бораи одамон/ҳабҳо, ки маро ба таваҷҷӯҳ доранд, бо назардошти манфиатҳои ман.

Ҷавоб, албатта, чандон гуворо набуд, аммо ҳадди аққал ростқавл буд:

Мутаассифона, дастрасӣ ба API мо ҳоло дастрас нест. Мо нақша дорем, ки дастрасиро пас аз ба итмом расонидани API дубора идома диҳем, аммо мо то ҳол санаи дақиқ надорем, зеро Мо холо ба халли дигар вазифахои аввалиндарача машгулем.

"Хуб, ҳеҷ мушкиле нест! Мо чизе пайдо мекунем!" — гуфтам ба худ ва чустучу кардам.

Қисми дуюм. Кофтуковхои чукур.

Бар асоси мантиқ, агар барнома кор кунад, он гоҳ он ба API дастрасӣ дорад ва он ба барнома пайваст карда шудааст. Биёед таҳлил кунем.

Азбаски мо бо трафик сарукор дорем, Wireshark интихоби мост. Бе ягон дард нест, телефонро тавассути компютери мизи корӣ ба интернет пайваст карда, мо барномаро мекушоем ва дархостҳоро мебинем:

(Un) замимаи расмии Habr - HabrApp 2.0: дастрасӣ пайдо кардан
Маълум аст, ки ҳеҷ чиз равшан нест

Бале, ҳама чиз рамзгузорӣ шудааст, аммо ман намехоҳам бо криптография халалдор шавам. Пас шумо бояд дохили худи барномаро бубинед.

Декомпиляция .apk, биёед ба ҷустуҷӯ шурӯъ кунем. Ба ягон API чӣ лозим аст? Дуруст, охири нуқта, ҷое, ки ҳама дархостҳо мераванд. Ин шояд http(ҳо) бошад, биёед кӯшиш кунем "https://"-ро пайдо кунем:

Дар файл AuthLinkManager.smali ёфтан

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

Ин рамзи мошини виртуалии Android аст (Далвик В.М), барои одамон чандон фаҳмо нест, аммо ба ҳар ҳол хеле иттилоотӣ аст. Ин се доимӣ, аз рӯи мундариҷа ва номи онҳо, инчунин анбори GitHub, барои дархост кардани аломати дастрасӣ бо истифода аз усул истифода мешаванд. GET.

Биёед минбаъд дида бароем. Файле, ки дар ҷустуҷӯи навбатӣ пайдо мешавад NetworkModule.smali:

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

Ва ин ҷоест, ки бо дархостҳои шумо равед!

Барои дуруст кор кардани муштарии худнавишт танҳо як чиз барои фаҳмидани он боқӣ мемонад - client_id, ки эҳтимолан идентификатори беназири барнома аст.

Аммо ҷустуҷӯи ин матн дар коди ибтидоӣ боиси пайдо кардани маълумоти дахлдор нашуд...

Аммо ногаҳон дар яке аз файлҳо ба чашмам чанд сатрҳои ҷолибе афтод:

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

Ин, чунон ки шумо фаҳмед, як сабти журнал аст. Аммо сабт кардан чӣ?

Қисми сеюм. Инҳо сабтҳо ҳастанд!

Мо истифода мебарем adb logcat барои дидани гузоришҳои барномаҳо.

(Un) замимаи расмии Habr - HabrApp 2.0: дастрасӣ пайдо кардан

Ногаҳон, гузоришҳо аз интизорӣ боз ҳам муфассалтар шуданд.

Дар ин чо мо на танхо он чи ки ба мо лозим аст client_idаммо нишона корбар/барнома, ва ворид шавед и парол дар матни равшан!

Баъзе назарияҳои тавтиъаТанҳо мавҷудияти логин ва парол дар гузоришҳо ба ҳеҷ чиз зарар намерасонад, зеро ин гузоришҳоро танҳо бо ҳуқуқи реша ё пайвастшавӣ тавассути adb. Аммо аз сабаби он, ки дар байни одамоне, ки Habr-ро мехонанд, таҳиягарони Android ҳастанд, ки метавонанд ислоҳи ислоҳро фаъол карда бошанд, ин мушкилот мегардад.

Дар ин ҳолат, «пуркунии ройгон» дар фурудгоҳ метавонад боиси дуздии суратҳисоб гардад, аммо ин ба кӣ лозим?
Аз ин гузоришҳо мо метавонем:

  • client_id и apikeyбарои дастрасӣ лозим аст API;
  • URL-и иҷозати корбар (аҷиб, аммо дар анбори ин усул ҳеҷ чиз вуҷуд надорад, шояд он пешниҳод нашудааст?)

Хамин тавр шуд. Дар асоси ин тадқиқоти ночиз, аллакай кор дар як лоиҳаи хурд - татбиқи барномаи мобилии мо идома дорад. Ман аз онҳое, ки мехоҳанд кӯмак расонанд, паём нависанд ва аз ҳама дигар - овоз диҳед (зеро ман мехоҳам бифаҳмам, ки оё ин ба касе лозим аст).

Ташаккур барои таваҷҷӯҳатон!

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Оё шумо барномаи мобилии Habr-ро истифода мебаред?

  • Бале, ман онро истифода мебарам, ман аз он хурсандам

  • Бале, ман онро истифода мебарам, барнома нороҳатӣ меорад

  • Не, ман версияи вебро дар телефони худ истифода мекунам

  • Не, ман Ҳабрро аз компютери худ истифода мекунам

357 корбар овоз доданд. 30 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ