1. 程式人生 > >抓包抓出的APP

抓包抓出的APP

寫作的目的

好久沒有寫部落格了,最近一段時間比較忙,總是在討論公司的業務邏輯去了,技術落下了一大堆了,好了,不扯了,說說今天的主題吧。最近利用晚上的時間,使用Fiddler抓包,把InfoQITEyeCSDN泡在網上的日子開源中國,獲得了一些資料,然後整理了一下,為了練手做了個小App。先看看成果吧:

抓包

我一般也就是使用Fidder,相信很多人都用過吧,具體頁面如下,具體的方法大家也就百度吧,這個操作比較簡單:

Fiddler抓包介面

比如我抓的泡在網上的日子 http://www.jcodecraeer.com/中網站資料:

這裡寫圖片描述

使用Fiddler抓包:

這裡寫圖片描述

抓完包之後,我們需要記錄它的地址和分頁的引數:

這裡寫圖片描述

這個蠻重要的,因為我們在客戶端使用的最多的就是分頁資料了。下面是我爬出的記錄,菜鳥爬的,大神勿噴:

infoQ :
架構:http://www.infoq.com/cn/architecture-design/articles/
移動:http://www.infoq.com/cn/mobile/articles/
雲端計算:http://www.infoq.com/cn/cloud-computing/articles/
大資料:http://www.infoq.com/cn/bigdata/articles/
運維:http://www.infoq.com/cn/operation/articles/


ITEYE:
資訊:http://www.iteye.com/news 精華:http://www.iteye.com/magazines 部落格:http://www.iteye.com/blogs 專欄:http://www.iteye.com/blogs/subjects CSDN 前端 http://geek.csdn.net/service/news/get_category_news_list?category_id=frontend&jsonpcallback=jQuery20309836559783031329_1479717830080&username=u013762572&from=20&size=20
&type=category&_=1479717830081 移動 http://geek.csdn.net/service/news/get_category_news_list?category_id=mobile&jsonpcallback=jQuery20301528046427485552_1479717874823&username=u013762572&from=0&size=20&type=category&_=1479717874824 雲端計算 http://geek.csdn.net/service/news/get_category_news_list?category_id=cloud&jsonpcallback=jQuery20307511375457787082_1479717658917&username=u013762572&from=20&size=20&type=category&_=1479717658918 大資料 http://geek.csdn.net/service/news/get_category_news_list?category_id=bigdata&jsonpcallback=jQuery20307133938887790177_1479717696246&username=u013762572&from=20&size=20&type=category&_=1479717696247 資料庫 http://geek.csdn.net/service/news/get_category_news_list?category_id=database&jsonpcallback=jQuery20307188289349209822_1479717786436&username=u013762572&from=20&size=20&type=category&_=1479717786437 泡在網上的日子: 綜合資訊:http://www.jcodecraeer.com/plus/list.php?tid=4 程式設計:http://www.jcodecraeer.com/plus/list.php?tid=6 安卓開發:http://www.jcodecraeer.com/plus/list.php?tid=16 前端開發:http://www.jcodecraeer.com/plus/list.php?tid=5 IOS開發: http://www.jcodecraeer.com/plus/list.php?tid=27 OSC: 全部:https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=0&p=2 移動 https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=428602&p=2 前端:https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=428612&p=2 伺服器:https://www.oschina.net/action/ajax/get_more_recommend_blog?classification==428640&2 遊戲開發:https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=429511&p=2 程式語言:https://www.oschina.net/action/ajax/get_more_recommend_blog?classification=428609&p=2

解析

由於我們獲取的資料是Html字串,我使用的是Jsoup類[主要是大java比較牛逼啊],使用Jsoup將字串轉化為Html中Dom物件,然後對Dom物件進行操作,對於Jsoup類的我也就不多講了,主要是比較簡單,這篇文章講得比較詳細:連結 舉個例子,請求到開源中國的介面時:
這裡寫圖片描述

使用Crtl+U檢視原始碼:

這裡寫圖片描述

然後使用Jsoup解析:

Document document = Jsoup.parse(htmlStr);
            Elements rootElements = document.getElementsByClass("item");
            if (null != rootElements && !rootElements.isEmpty()) {
                Blog blog;
                for (Element e : rootElements) {
                    blog = new Blog();

                    String photo = e.getElementsByClass("box-fl").get(0).select("img").attr("data-delay");

                    Element target = e.getElementsByClass("box-aw").get(0);
                    String title = target.select("a").get(0).text();
                    String link = target.select("a").get(0).attr("href");
                    String desc = target.select("section").get(0).text();
                    Element footerElement = target.select("footer").get(0);
                    String publishTime = footerElement.select("span").get(0).text();
                    String author = footerElement.select("span").get(2).text();

                    LogUtils.d("title:" + title);
                    LogUtils.d("link:" + link);
                    LogUtils.d("desc:" + desc);
                    LogUtils.d("publishTime:" + publishTime);
                    LogUtils.d("author:" + author);
                    LogUtils.d("photo:" + photo);

                    blog.title = title;
                    blog.link = link;
                    blog.description = ComUtils.cutOffString(desc, 120);
                    blog.publishTime = publishTime;
                    blog.author = author;
                    blog.articleType = ArticleType.OSCHINA;
                    blog.photo = photo;
                    blog.hasRead = DBDataUtils.userHasReadArticle(title);
                    blog.hasCollect = DBDataUtils.userHasCollection(title);

                    _blogList.add(blog);
                }
            }
        }

然後得出的結論為:

這裡寫圖片描述

android客戶端

好了 我們沒有介面,但是我們還是獲得了資料流,哈哈,這個比較好玩了。現在我們就來搞android客戶端了。
採用了Retrofit2.0 + OkHttp3.0作為網路請求,
使用RxJava建立類似EventBus請求案例,
使用了ormlite儲存閱讀記錄和收藏記錄,
使用了Tencent的X5 webview核心,
使用了glide管理圖片,
使用了Bufferknife代替findviewById
使用了PhotoView管理webView中詳情圖片縮放
……

基本上程式碼結構為:

這裡寫圖片描述

程式碼已經到了git上了,這是我的第一個git專案,希望大家給點鼓勵,我是新人,我需要被鼓勵,我也需要star,呵呵。。。

結語

還是那句話,公司的破業務比較多,剛剛畢業的苦逼程式設計師經常被教訓,所以每天還要學習其他知識,比較累,也很坑壁,所以還有很多功能暫時沒有加上,畢竟才花了半個月不到的時間,希望大家不要介意,我也只是剛剛在路上,這個專案我也會持續維護,最後感謝陪伴我的那些人,特別是年少的風AndroidFire,是他們的鼓勵才讓我這個菜鳥感到我們還是有希望的,謝謝:

這是我的git地址https://github.com/Microhx/MicroBlog 。謝謝大家。