Android逆向之路---讓咱們試試另外一種方法看漫畫-(2)

前言

上次咱們分析到了快看漫畫的協議部分,此次咱們根據他的協議來手動寫個腳本,而後執行之後,能夠把他的漫畫自動下載到電腦上面, 而後自動拼接圖片,這樣就能夠實如今電腦上當成一個長圖來看漫畫了,沒有廣告,沒有app的一些限制,先上圖,一塊兒看當作果java

本文分析基於:快看漫畫5.2.0(52000) 事先說明,這是一個系列,關於快看漫畫的系列,不過在今天寫看漫畫這個系列的時候,博主後面的工做也尚未作呢,也但願在你們的監督之下一點一點的所有完成吧。 ps:避免廣告嫌疑,如下統稱kk漫畫了。python

爲何選擇這個app? 排名靠前啊,反正就選到了, 有對別的感興趣的同窗也歡迎投稿,博主會盡本身所能,給你們帶來點好玩的。git

以爲看好多地方比較忽然的,能夠先轉到上一篇,而後再來看這篇文章。 傳送門:Android逆向之路---讓咱們試試另外一種方法看漫畫-(1)github

找到正確的協議

上次咱們找到了了協議的大概位置,此次咱們要針對整個請求的過程進行精準的分析。包括每一個接口的做用。 首先把log清空,而後點擊他的開始閱讀,我抓到了如下log 我以漫畫:《李泰和方小甜的平行世界》爲例子 web

通過個人分析,先和你們說結果: 1,4主要就是請求漫畫的接口了 3,6主要是請求了一些廣告信息 7能夠理解爲上傳一些打點數據 2主要是獲取了一些評論回覆信息 5多是和一些社交相關的,這個是我猜的shell

首先根據Log信息,咱們能發現這些接口的做用,固然了,博主還有另外一種辦法,咱們根據這些接口信息,依次的去找源碼json

源碼分析

先分析api

https://api.kkmh.com/v2/comic/22535?is_preview=0服務器

我在源碼裏面搜v2/comic/,爲何這麼搜,由於真正有開發經驗的人是知道的,後面的通常開發的時候會寫成可變的參數, 前面的url通常也是,咱們開發的時候會有測試服務器和正式服務器,前面的是會變的, 搜索結果以下:網絡

.method public abstract getComicDetail(JI)Lretrofit2/Call;
 .param p1    # J
 .annotation runtime Lretrofit2/http/Path;
            value = "comic_id" .end annotation .end param
 .param p3    # I
 .annotation runtime Lretrofit2/http/Query;
            value = "is_preview" .end annotation .end param
 .annotation system Ldalvik/annotation/Signature;
        value = {
            "(JI)",
            "Lretrofit2/Call",
            "<",
            "Lcom/kuaikan/comic/rest/model/API/ComicDetailResponse;",
            ">;"
        } .end annotation

 .annotation runtime Lretrofit2/http/GET;
        value = "/v2/comic/{comic_id}" .end annotation .end method
複製代碼

怎麼樣,這個看着太費勁了,我仍是手動轉成java來看

@GET("/v2/comic/{comic_id}")
@Query("is_preview")
@Path("comic_id")
public abstract Call.retrofit2 getComicDetail();
複製代碼

根據方法名字其實就已經能夠猜的能夠了,而後利用動態調試,咱們能夠在APIRestClient.smali裏面調用的地方打好斷點, (具體的動態調試方法,之前也說過,不熟悉的同窗能夠去翻我之前的文章)

 const/4 v0, 0x1

    :goto_0
    invoke-interface {v1, p1, p2, v0}, Lcom/kuaikan/comic/rest/SignInterface;->getComicDetail(JI)Lretrofit2/Call;

    move-result-object v0

    invoke-interface {v0, p4}, Lretrofit2/Call;->enqueue(Lretrofit2/Callback;)V

 .line 202
    return-void 複製代碼

而後咱們可以看出來,這個主要就是利用retrofit框架,來進行網絡請求。

開始分析協議

首先經過log,或者動態調試咱們已經拿到他請求回來的json數據了

{"code":200,"data":{"comment_view_message":"吐槽神馬的儘管來","can_view":true,"cover_image_url":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","created_at":1467150603,"recommend":{"recommend_list":[{"male_vertical_image_url":"http://f2.kkmh.com/image/171213/rt79rf2bj.webp-w320.w","vertical_image_url":"http://f2.kkmh.com/image/171213/rt79rf2bj.webp-w320.w","recommend_tag":["奇幻","劇情"],"topic_id":544,"recommend_source":"AI推薦","title":"整容遊戲"},{"male_vertical_image_url":"http://f2.kkmh.com/image/171212/rl5z4ftks.webp-w320.w","vertical_image_url":"http://f2.kkmh.com/image/171212/rl5z4ftks.webp-w320.w","recommend_tag":["都市"],"topic_id":782,"recommend_source":"AI推薦","title":"密會"},{"male_vertical_image_url":"http://f2.kkmh.com/image/161220/7tsm5zh6g.webp-w320.w","vertical_image_url":"http://f2.kkmh.com/image/161220/7tsm5zh6g.webp-w320.w","recommend_tag":["靈異"],"topic_id":786,"recommend_source":"AI推薦","title":"百怪夜譚"}],"title":"猜你喜歡"},"is_favourite":false,"title":"第1話 愛的供養","widgets":[],"recommend_count":0,"updated_at":1489143638,"selling_kk_currency":0,"zoomable":1,"push_flag":0,"previous_comic_id":null,"share":{"award":false,"activity_id":null,"show_draw_record":false,"title":""},"customized_share":[{"description":"短篇合集,講述一場自來水污染致使人類出現的奇奇怪怪的疾病。細思極恐,高能慎入!看做者的腦洞能有多大!【受權/每週五更新 責編:拉麪】","share_platform":4,"title":"好看哭!《李泰和方小甜的平行世界》這個漫畫太優秀了!","picture":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","url":"https://m.kuaikanmanhua.com/comics/22535"},{"description":"短篇合集,講述一場自來水污染致使人類出現的奇奇怪怪的疾病。細思極恐,高能慎入!看做者的腦洞能有多大!【受權/每週五更新 責編:拉麪】","share_platform":3,"title":"好看哭!《李泰和方小甜的平行世界》這個漫畫太優秀了!","picture":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","url":"https://m.kuaikanmanhua.com/comics/22535"},{"description":"","share_platform":2,"title":"好看哭!《李泰和方小甜的平行世界》這個漫畫太優秀了!","picture":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","url":"https://m.kuaikanmanhua.com/comics/22535"},{"description":"好看哭!《李泰和方小甜的平行世界》這個漫畫太優秀了!傳送門:https://m.kuaikanmanhua.com/comics/22535 ","share_platform":5,"title":"","picture":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","url":"https://m.kuaikanmanhua.com/comics/22535"},{"description":"短篇合集,講述一場自來水污染致使人類出現的奇奇怪怪的疾病。細思極恐,高能慎入!看做者的腦洞能有多大!【受權/每週五更新 責編:拉麪】","share_platform":1,"title":"好看哭!《李泰和方小甜的平行世界》這個漫畫太優秀了!","picture":"http://f2.kkmh.com/image/170310/hi585uspn.webp-w640","url":"https://m.kuaikanmanhua.com/comics/22535"}],"id":22535,"comic_type":0,"is_login":false,"is_liked":false,"images":["http://f2.kkmh.com/image/170310/ni3jq73um.webp-w640","http://f2.kkmh.com/image/170310/dkytvh9tb.webp-w640","http://f2.kkmh.com/image/170310/bnffqu5qj.webp-w640","http://f2.kkmh.com/image/170310/aolh65hqg.webp-w640","http://f2.kkmh.com/image/170310/g7sqrvbcy.webp-w640","http://f2.kkmh.com/image/170310/2m64twttm.webp-w640","http://f2.kkmh.com/image/170310/eaf8vdmeu.webp-w640","http://f2.kkmh.com/image/170310/a3jpxb2xf.webp-w640","http://f2.kkmh.com/image/c22535/171215/Wyu5BaDjG.webp-w640","http://f2.kkmh.com/image/c22535/171215/qgwMVAIvz.webp-w640","http://f2.kkmh.com/image/170310/unl0hyycu.webp-w640","http://f2.kkmh.com/image/170310/zjari95lw.webp-w640","http://f2.kkmh.com/image/170310/nvmdki6lh.webp-w640","http://f2.kkmh.com/image/170310/5s3nddorm.webp-w640","http://f2.kkmh.com/image/170310/c4fpmayxv.webp-w640","http://f2.kkmh.com/image/170310/d7ac181j7.webp-w640","http://f2.kkmh.com/image/170310/g4wehvwku.webp-w640","http://f2.kkmh.com/image/170310/vqa24zdne.webp-w640","http://f2.kkmh.com/image/170310/xq0k49c0b.webp-w640","http://f2.kkmh.com/image/170310/u4exvr3m5.webp-w640","http://f2.kkmh.com/image/170310/ba50c68yu.webp-w640","http://f2.kkmh.com/image/170310/r4ih3xd17.webp-w640","http://f2.kkmh.com/image/170310/2q6rf6te8.webp-w640","http://f2.kkmh.com/image/170310/mmp8h7aj2.webp-w640","http://f2.kkmh.com/image/170310/62rxlx12n.webp-w640","http://f2.kkmh.com/image/170310/k7ht36vn4.webp-w640","http://f2.kkmh.com/image/170310/iylzwx29w.webp-w640","http://f2.kkmh.com/image/170310/y2vqk0mq7.webp-w640","http://f2.kkmh.com/image/170310/8ja8e70cs.webp-w640","http://f2.kkmh.com/image/170310/rpp8t58iq.webp-w640","http://f2.kkmh.com/image/170310/ethht9qmf.webp-w640","http://f2.kkmh.com/image/170310/i2sazavwb.webp-w640","http://f2.kkmh.com/image/170310/435u6zdjf.webp-w640","http://f2.kkmh.com/image/170310/6tv8bqpg9.webp-w640","http://f2.kkmh.com/image/170310/owxw2tmt9.webp-w640","http://f2.kkmh.com/image/170310/ekh44qmx0.webp-w640","http://f2.kkmh.com/image/170310/oo5x5z0m8.webp-w640","http://f2.kkmh.com/image/170310/lqatu6m7r.webp-w640","http://f2.kkmh.com/image/170310/2ydiojudy.webp-w640","http://f2.kkmh.com/image/170310/i55bo2j8x.webp-w640","http://f2.kkmh.com/image/170310/fs2uvkx6r.webp-w640","http://f2.kkmh.com/image/170310/wtzg35e7i.webp-w640","http://f2.kkmh.com/image/170310/lbajscux3.webp-w640","http://f2.kkmh.com/image/170310/9nb3tyagb.webp-w640","http://f2.kkmh.com/image/170310/r6ivjlxhb.webp-w640","http://f2.kkmh.com/image/170310/byzo0k17q.webp-w640","http://f2.kkmh.com/image/170310/yvc0psfj9.webp-w640","http://f2.kkmh.com/image/170310/wfqmv3l2s.webp-w640","http://f2.kkmh.com/image/170310/05dva698t.webp-w640","http://f2.kkmh.com/image/170310/vys1sdghs.webp-w640","http://f2.kkmh.com/image/170310/yzrxwhgkx.webp-w640","http://f2.kkmh.com/image/170310/l373i5iyp.webp-w640","http://f2.kkmh.com/image/170310/q6d2hv0sy.webp-w640","http://f2.kkmh.com/image/170310/4lpxmpwf0.webp-w640","http://f2.kkmh.com/image/170310/7dhye2una.webp-w640","http://f2.kkmh.com/image/170310/xl4wuhcrq.webp-w640"],"tencent_share_title":"最近發現一部超好看的漫畫:李泰和方小甜的平行世界","storyboard_cnt":30,"image_infos":[{"width":800,"key":"a5de7dd6bbc497db5ed12f298111c272","height":625},{"width":800,"key":"6b8b3a865a1ddf711ad71452eec1ad30","height":506},{"width":800,"key":"4f4d306a2a102aa989b8c7a3b658431f","height":625},{"width":800,"key":"378bf2c19fdd4a0fd3eb6ee146c7be7f","height":506},{"width":800,"key":"5435475d65f21de30414fa1749b52aa7","height":625},{"width":800,"key":"cf22f5be2e388b61e8b82827895e0bb5","height":506},{"width":800,"key":"4415c68c3b28b6a44b9673f2992b8364","height":625},{"width":800,"key":"c869489f0d0940896eb25c91329dee08","height":506},{"width":800,"key":"5ffa28d7671f97557c77156147939e21","height":625},{"width":800,"key":"8f636aed79bf9ae50f11933c9d4d732b","height":506},{"width":800,"key":"cd7139fe2446d909c7402abcdcc0dd47","height":625},{"width":800,"key":"39c84ab2949cd3b820f09d4692fb2a62","height":506},{"width":800,"key":"af718ad639b59a426cde65271c366e6d","height":625},{"width":800,"key":"5e12172168957b71266a5bfdb8beafec","height":506},{"width":800,"key":"4d92699063b072739dbe782ad7e6ddbf","height":625},{"width":800,"key":"7c714d5713c9b2422ed8dec402b7fd11","height":506},{"width":800,"key":"9d12808cadb037d2685711d71b131450","height":625},{"width":800,"key":"026615ec2f26a04390a7293616d687d4","height":506},{"width":800,"key":"d87475d57208b2dde95253fa81a487ea","height":625},{"width":800,"key":"32318591ebf3417e5f6d4e28c9127fba","height":506},{"width":800,"key":"e52e90c0f2ea49db9984f8523a089665","height":625},{"width":800,"key":"3e89642afb9d3ec69bf18f3ed18b0fdc","height":506},{"width":800,"key":"b7b067915ed2725763f7e5c9c63a48d6","height":625},{"width":800,"key":"b3093850b87fa4a350a4803b62f82fbc","height":506},{"width":800,"key":"a4e02ca44d58f5ebbc7142937f69296e","height":625},{"width":800,"key":"73de978ec21bfca1eb953349341674b3","height":506},{"width":800,"key":"7d54db0da6ed34116f2546f100717dfa","height":625},{"width":800,"key":"6dd19891de33dcd8bf8400d04bca82b9","height":506},{"width":800,"key":"8e27c2b56222f3343fd473d13871a42d","height":625},{"width":800,"key":"90dd36feb5698ecd776d80139d8bc138","height":506},{"width":800,"key":"7844984a79c747c469423060e67bda36","height":625},{"width":800,"key":"4f14da7ffdf1b0d70fe168c3a4ed66a1","height":506},{"width":800,"key":"7fe98dc3ca0cc4d1655485e44a8703b4","height":625},{"width":800,"key":"48bb94fc304ba8d5c906450b028343b3","height":506},{"width":800,"key":"78e4201ed552e6d3f860c9a9887243e1","height":625},{"width":800,"key":"8c4b8ce67f2fe045cb134a30bb393a04","height":506},{"width":800,"key":"07127d72aea50fbcc0a55f4efb5353c2","height":625},{"width":800,"key":"818e2b0bb456b089e685da175eb5735e","height":506},{"width":800,"key":"31670324abe8fef90d9efe65c2b7838e","height":625},{"width":800,"key":"f5e20fedf06f1543e02abfb0c7b9cd73","height":506},{"width":800,"key":"78b5993f46492921873f643efc8590e9","height":625},{"width":800,"key":"dcd6bf9589dcbffb044dc6bf21c68a37","height":506},{"width":800,"key":"247c655ee1b6428a65ac00058771db12","height":625},{"width":800,"key":"ba25ca3e2e325a33433297e1330c9dfe","height":506},{"width":800,"key":"f54893ef269f8e93c5f15463c24ee49f","height":625},{"width":800,"key":"1a504b37b1f0496e1bba6bb430c0a7d5","height":506},{"width":800,"key":"a8360e2fd73b4347a62e7c71b2174c26","height":625},{"width":800,"key":"49aa257f7e56345b1c23c8aee338e146","height":506},{"width":800,"key":"17ad09e8fc85e72e87f3f9522b3cdc42","height":625},{"width":800,"key":"6274771113b60223485615437172734d","height":506},{"width":800,"key":"d118ea13e0e705687434b08e2b79bfeb","height":625},{"width":800,"key":"16d0edfb22f56fefbe4afe982e1a6d98","height":506},{"width":800,"key":"77b835206f8aaa317e7b9bfb1d13731d","height":625},{"width":800,"key":"f626de71fe25ca19cf6dba693d372e39","height":506},{"width":800,"key":"efd890a68fb91b4547366d4cc7cdb8a1","height":625},{"width":800,"key":"a8a7e8c74833d794da68780c518c740a","height":506}],"next_comic_id":15884,"sina_share_title":"最近在@快看漫畫 上發現一部超好看的漫畫:李泰和方小甜的平行世界,和我一塊兒來看吧~完整內容戳:","url":"https://m.kuaikanmanhua.com/comics/22535","likes_count":529608,"banner_info":{"type":0},"tencent_share_params":"快看!一分鐘一個超讚故事!","comments_count":17046,"is_free":true,"topic":{"discover_image_url":"","vertical_image_url":"http://f2.kkmh.com/image/180314/jp128u992.webp-w320","cover_image_url":"http://f2.kkmh.com/image/180314/w9omjgy9w.webp-w640","description":"短篇合集,講述一場自來水污染致使人類出現的奇奇怪怪的疾病。細思極恐,高能慎入!看做者的腦洞能有多大!【受權/每週五更新 責編:拉麪】","created_at":1453890436,"is_favourite":false,"title":"李泰和方小甜的平行世界","male_vertical_image_url":"http://f2.kkmh.com/image/180314/jp128u992.webp-w320","updated_at":1453890436,"special_offer":{},"is_free":true,"id":699,"category":["劇情"],"related_authors":[{"pub_feed":1,"avatar_url":"http://f2.kkmh.com/image/160530/744atwg2u.webp-w180.w","grade":1,"nickname":"瀟瀟瀟瀟如","reg_type":"phone","id":6021212}],"user":{"pub_feed":1,"avatar_url":"http://f2.kkmh.com/image/160530/744atwg2u.webp-w180.w","grade":1,"nickname":"瀟瀟瀟瀟如","reg_type":"phone","id":6021212},"label_id":17,"male_cover_image_url":"http://f2.kkmh.com/image/180314/w9omjgy9w.webp-w640","order":761,"comics_count":35,"status":"published"},"serial_no":0,"status":"published"},"message":"ok"}
複製代碼

以上的這些是完整的json數據,咱們固然只說重點了。 加載機制: 關於kk漫畫的加載機制,假如你如今在看第2章的漫畫,當你看到一半多的時候,他就會請求這個接口,提早把第3章漫畫的圖片的url地址都拿下來。 依此類推。 咱們須要關注的是,他如何找到下一個漫畫的id,而後又如何判斷下一個漫畫的標題等等。

咱們能夠經過在程序裏打斷點,動態調試,或者看靜態源碼,或者Log信息,最終發現返回的數據以下, 關於重點的一些信息,我作了標記

製做咱們本身的腳本的思路

思路:咱們首先請求第一章的id,咱們如今的id是22535,根據剛剛的Log分析可知。 而後咱們請求回來以後,把images裏面的圖片都保存到指定的文件夾,準備合併。 而後請求下一章節,繼續,直到全部漫畫都下載到本地。 合併每一個文件夾裏面的圖片,最後這些長圖就是咱們想看的漫畫了。

我用的python寫的這個腳本,由於我的平時都是用java,有些地方寫的很差,也歡迎你們指正

個人腳本

github地址 運行環境: python3.6+ Pillow庫, 具體的能夠查看ReadME,也能夠聯繫本人

運行方法: python .\app.py ${id}

python .\app.py 22535
複製代碼

22535只是一個章節的id,

我就以《漫畫A做爲例子》 而後腳本就會自動的在當前文件夾下面生成兩個文件夾 漫畫A和漫畫A-result

漫畫A-result裏面就是拼接好的漫畫了 漫畫A-是分批下載的一些臨時文件

具體如圖:

前面的就是咱們下載的一些臨時文件 後一張圖就是咱們作好的了

聲明

本文只作技術研究,不作商用,若有同窗作商用,惡意攻擊服務器,等非法行爲,本人概不負責

告一段落

好了好了,其實說到了這裏,今天就說到這裏吧,此次把一整本書的內容都提取出來了。 能夠開開心心的在本地看漫畫了。

我但願呢,本身寫博客,可以認認真真的寫出一點東西分享給你們,而不是網上抄來抄去。但願能作一個踏踏實實作技術的人吧,不敢求太多,能給你們帶來點好玩的就挺好。

寫在最後

有什麼問題歡迎給博主指出。 包括python,程序分析方面的問題,等。

成品就不上傳了,但願你們都能跑

突然想到id獲取的問題,其實有幾個思路,

  • sd卡的根目錄建立/KuaiKan文件夾,而後裏面建立了一個空的kkmh_debug文件。使kk漫畫處於debug模式下,本身抓Log
  • 博主能夠去對app從新打包,而後加上一些我的的代碼,二次打包發佈出來
  • 寫個xposed插件供你們使用

具體的能夠下回說,也能夠你們本身來發揮想象力啦,有什麼問題歡迎聯繫我

關於我

我的網站:MartinHan的小站

博客:hanhan12312的專欄

知乎:MartinHan01

相關文章
相關標籤/搜索