Як шоми суст ва аллакай дилгиркунанда, ман варақ задам расмй Барномаи Habr, ман бори дигар ангуштони худро хам кардам, якто барои ҳар як хусусияти корношоям. Дар ин ҷо, масалан, шумо шарҳ дода наметавонед, дар ин ҷо шумо аз ҳуқуқи овоздиҳӣ маҳрум кардаед ва умуман, чаро формулаҳо дар экран намоён нестанд?
Қарор дода шуд: ба мо чизи бароҳат, гуворо, чизи худамон лозим буд. Дар бораи аризаи шахсии шумо барои Ҳабр чӣ гуфтан мумкин аст?
Иҷозат диҳед ба шумо якчанд скриншотҳоро барои фаҳмидани вазъият диҳам.
Чунин ба назар мерасад ин - аз. замимаи habr.com
Рӯйхати "ноуқубатҳо"
- Шумо наметавонед ба нашрияе, ки рейтингаш аз 0 фарқ дорад, баҳо диҳед
- Навиштани шарҳ на ҳама вақт имконпазир аст
- Пурсишҳо кор намекунанд
- Формулаҳо дар мавзӯи торик намоён нестанд (сиёҳ ба сиёҳ)
- На ҳама хатчӯбҳо дастрасанд
Бале, барнома аз моҳи августи соли гузашта навсозӣ нашудааст, аммо он ҳанӯз ҳам бад аст. Умуман, онро ислоҳ кардан лозим аст.
Қисми якум. Дар ҷустуҷӯи дастрасӣ.
Дархости зуди Google "API habrahabr" мегӯяд, ки он аллакай хеле кӯҳна шудааст
Ба он аҳамият надиҳед, ки ин PHP аст, ба поён ҳаракат кунед ва хонед:
Гирифтани ID-и ариза
Истифодаи фоида
ин шакл дар Habrahabr, шумо бояд моҳияти замимаи нав ва мақсадеро, ки барои он API лозим аст, ба таври мухтасар тавсиф кунед.
Ҳеҷ саволе нест, агар ба шумо дастрасӣ пайдо кардан лозим бошад, пас ба шумо лозим аст. Мо мактуб менависем (ихтисоршуда):
Навиштани
Хоҳиши дархост барои Habr дар асоси PWA вуҷуд дорад. Ин якчанд сабаб дорад.
Аввалин ва равшантарин: барномаи Android ба талаботи шахсии ман ҷавобгӯ нест.
Дуюм: дар бораи ҳама гуна чизҳое, ки одатан тавассути почтаи электронӣ меоянд (масалан, шарҳҳо) огоҳиҳои маҳаллӣ кофӣ нестанд.
Сеюм: ҳазми шахсӣ (ҳамчун дурнамо) дар бораи одамон/ҳабҳо, ки маро ба таваҷҷӯҳ доранд, бо назардошти манфиатҳои ман.
Ҷавоб, албатта, чандон гуворо набуд, аммо ҳадди аққал ростқавл буд:
Мутаассифона, дастрасӣ ба API мо ҳоло дастрас нест. Мо нақша дорем, ки дастрасиро пас аз ба итмом расонидани API дубора идома диҳем, аммо мо то ҳол санаи дақиқ надорем, зеро Мо холо ба халли дигар вазифахои аввалиндарача машгулем.
"Хуб, ҳеҷ мушкиле нест! Мо чизе пайдо мекунем!" — гуфтам ба худ ва чустучу кардам.
Қисми дуюм. Кофтуковхои чукур.
Бар асоси мантиқ, агар барнома кор кунад, он гоҳ он ба API дастрасӣ дорад ва он ба барнома пайваст карда шудааст. Биёед таҳлил кунем.
Азбаски мо бо трафик сарукор дорем, Wireshark интихоби мост. Бе ягон дард нест, телефонро тавассути компютери мизи корӣ ба интернет пайваст карда, мо барномаро мекушоем ва дархостҳоро мебинем:
Маълум аст, ки ҳеҷ чиз равшан нест
Бале, ҳама чиз рамзгузорӣ шудааст, аммо ман намехоҳам бо криптография халалдор шавам. Пас шумо бояд дохили худи барномаро бубинед.
Декомпиляция .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
барои дидани гузоришҳои барномаҳо.
Ногаҳон, гузоришҳо аз интизорӣ боз ҳам муфассалтар шуданд.
Дар ин чо мо на танхо он чи ки ба мо лозим аст client_id
аммо нишона корбар/барнома, ва ворид шавед и парол дар матни равшан!
Баъзе назарияҳои тавтиъаТанҳо мавҷудияти логин ва парол дар гузоришҳо ба ҳеҷ чиз зарар намерасонад, зеро ин гузоришҳоро танҳо бо ҳуқуқи реша ё пайвастшавӣ тавассути adb
. Аммо аз сабаби он, ки дар байни одамоне, ки Habr-ро мехонанд, таҳиягарони Android ҳастанд, ки метавонанд ислоҳи ислоҳро фаъол карда бошанд, ин мушкилот мегардад.
Дар ин ҳолат, «пуркунии ройгон» дар фурудгоҳ метавонад боиси дуздии суратҳисоб гардад, аммо ин ба кӣ лозим?
Аз ин гузоришҳо мо метавонем:
client_id
иapikey
барои дастрасӣ лозим аст API;- URL-и иҷозати корбар (аҷиб, аммо дар анбори ин усул ҳеҷ чиз вуҷуд надорад, шояд он пешниҳод нашудааст?)
Хамин тавр шуд. Дар асоси ин тадқиқоти ночиз, аллакай кор дар як лоиҳаи хурд - татбиқи барномаи мобилии мо идома дорад. Ман аз онҳое, ки мехоҳанд кӯмак расонанд, паём нависанд ва аз ҳама дигар - овоз диҳед (зеро ман мехоҳам бифаҳмам, ки оё ин ба касе лозим аст).
Ташаккур барои таваҷҷӯҳатон!
Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд.
Оё шумо барномаи мобилии Habr-ро истифода мебаред?
-
Бале, ман онро истифода мебарам, ман аз он хурсандам
-
Бале, ман онро истифода мебарам, барнома нороҳатӣ меорад
-
Не, ман версияи вебро дар телефони худ истифода мекунам
-
Не, ман Ҳабрро аз компютери худ истифода мекунам
357 корбар овоз доданд. 30 корбар худдорӣ карданд.
Манбаъ: will.com