抓包抓出的APP
寫作的目的
好久沒有寫部落格了,最近一段時間比較忙,總是在討論公司的業務邏輯去了,技術落下了一大堆了,好了,不扯了,說說今天的主題吧。最近利用晚上的時間,使用Fiddler抓包,把InfoQ、ITEye、CSDN、泡在網上的日子,開源中國,獲得了一些資料,然後整理了一下,為了練手做了個小App。先看看成果吧:
抓包
我一般也就是使用Fidder,相信很多人都用過吧,具體頁面如下,具體的方法大家也就百度吧,這個操作比較簡單:
比如我抓的泡在網上的日子 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 。謝謝大家。