【iOS】使用Charles抓取App網(wǎng)絡(luò)請(qǐng)求
Saitjr五月 20, 2015IosNo Comments
最近開(kāi)發(fā)App的時(shí)候需要用到大量其他應(yīng)用的數(shù)據(jù)胰丁,但接口不公開(kāi),所以想到了抓取蕴坪。差不多要讀到5W的用戶數(shù)據(jù),采用的是找到數(shù)據(jù)接口,然后不停發(fā)請(qǐng)求的方式背传。用到的抓取工具是Charles呆瞻,本文講解的應(yīng)用是WEAR,一款鬼子的應(yīng)用径玖。
前期準(zhǔn)備:
下載Charles痴脾,本文不會(huì)講解Charles的使用,不會(huì)用的可以看巧哥的文章梳星。
環(huán)境信息:
Mac OS X 10.10.3
Xcode 6.3
iOS 8.3
Charles 3.10.1
正文:
一赞赖、基本設(shè)置
在抓包之前,需要對(duì)Charles與iPhone進(jìn)行基本設(shè)置冤灾,這些設(shè)置均轉(zhuǎn)自唐巧的文章《截取iPhone上的網(wǎng)絡(luò)封包》部分前域。
1. Charles上的設(shè)置
打開(kāi)Charles->Proxy->Proxy Setting,設(shè)置代理端口為8888韵吨,并勾選Enable transparent HTTP proxying匿垄。
Charles配置
2. iPhone上的設(shè)置
1). 獲取Mac上的IP
打開(kāi)終端,輸入命令:
ifconfigen0
找到里面的IP地址:
找到本機(jī)IP
2). 設(shè)置iPhone HTTP代理
打開(kāi)iPhone->設(shè)置->無(wú)線局域網(wǎng)->當(dāng)前連接的網(wǎng)絡(luò)->手動(dòng)归粉,將上一步獲得的服務(wù)器地址填入對(duì)應(yīng)輸入框年堆,端口號(hào)填寫(xiě)8888即可。
iPhone配置
二盏浇、抓取WEAR中的數(shù)據(jù)
1. 打開(kāi)WEAR
如果是第一次变丧,可以看到Charles彈出的請(qǐng)求連接確認(rèn)框,點(diǎn)擊Allow绢掰。
第一次連接的確認(rèn)框
2. 查看請(qǐng)求
可以看到痒蓬,在進(jìn)入WEAR以后,就開(kāi)始進(jìn)行主頁(yè)模塊的數(shù)據(jù)請(qǐng)求滴劲,這時(shí)就需要通過(guò)請(qǐng)求的響應(yīng)次數(shù)來(lái)粗略判斷下具體的請(qǐng)求地址了攻晒。在Charles中,每有請(qǐng)求響應(yīng)班挖,地址列表就會(huì)有黃色高亮鲁捏。
黃色高亮表示有新的響應(yīng)信息
我發(fā)現(xiàn)http://www.wearzozo.cn/coordinate/9k8r0s/這個(gè)地址閃得很頻繁,打開(kāi)查看以后可以看到這是主頁(yè)模塊所有的圖片地址萧芙。不難看出给梅,WEAR如此龐大的圖片數(shù)據(jù)有獨(dú)立的服務(wù)器作為支撐。
3. 查看用戶數(shù)據(jù)
圖片找到了并不能達(dá)到最終目的双揪,因?yàn)槲倚枰?W用戶的數(shù)據(jù)动羽,所以繼續(xù)找。然后找到了一個(gè)域名為http://api.wear.jp的請(qǐng)求地址渔期,根據(jù)命名經(jīng)驗(yàn)运吓,可以很直觀的看出這是一個(gè)專門給客戶端提供接口的服務(wù)器地址渴邦。
展開(kāi)v1發(fā)現(xiàn)里面有兩個(gè)子目錄ranking與timeline,這兩個(gè)子目錄應(yīng)該分別對(duì)應(yīng)了搭配與新動(dòng)態(tài)模塊拘哨。
下面就以ranking為例:
在Overview中可以看到ranking的請(qǐng)求地址為:
http://api.wear.jp/v1/ranking/snaps谋梭?pageno=1&pagesize=33&group_id=1&period=1&country_id=13
請(qǐng)求方式為:
GET
內(nèi)容格式為:
application/json
ranking中的請(qǐng)求信息
然后在到Response中可以看到返回的數(shù)據(jù)格式是Json,并且從它“見(jiàn)名知意”的key中倦青,可以直接推斷出每一個(gè)字段的含義瓮床。
返回的Json值
三、保存信息到本地
既然已經(jīng)找到的用戶列表姨夹,那么抓取用戶信息就easy了纤垂。可以寫(xiě)腳本來(lái)抓取磷账,當(dāng)然作為iOS開(kāi)發(fā)者峭沦,也可以在Xcode中寫(xiě)一個(gè)發(fā)起網(wǎng)絡(luò)請(qǐng)求的App來(lái)進(jìn)行抓取,讀到數(shù)據(jù)以后逃糟,保存到模擬器沙盒就行了吼鱼。
具體的抓取步驟就不講解了,也不清楚是否侵權(quán)绰咽,所以還是慎用得好菇肃。
四、Charles其他用法
關(guān)于Charles的其他功能取募,有空會(huì)在后續(xù)文章中講解到琐谤。