最近開發(fā)App的時候需要用到大量其他應(yīng)用的數(shù)據(jù)猾瘸,但接口不公開界赔,所以想到了抓取丢习。差不多要讀到5W的用戶數(shù)據(jù),采用的是找到數(shù)據(jù)接口淮悼,然后不停發(fā)請求的方式咐低。用到的抓取工具是Charles。
前期準(zhǔn)備:
下載Charles袜腥,本文不會講解Charles的使用
環(huán)境信息:
Mac OS X 10.10.3
Xcode 6.3
iOS 8.3
- Charles上的設(shè)置
打開Charles->Proxy->Proxy Setting见擦,設(shè)置代理端口為8888,并勾選Enable transparent HTTP proxying羹令。
Charles配置
- iPhone上的設(shè)置
1). 獲取MAC上的IP
打開終端鲤屡,輸入命令:
ifconfig en0
找到里面的IP地址:
找到本機(jī)IP
2). 設(shè)置IPHONE HTTP代理
打開iPhone->設(shè)置->無線局域網(wǎng)->當(dāng)前連接的網(wǎng)絡(luò)->手動,將上一步獲得的服務(wù)器地址填入對應(yīng)輸入框福侈,端口號填寫8888即可酒来。
iPhone配置
二、抓取WEAR中的數(shù)據(jù)
- 打開WEAR
如果是第一次肪凛,可以看到Charles彈出的請求連接確認(rèn)框堰汉,點擊Allow。
第一次連接的確認(rèn)框
- 查看請求
可以看到伟墙,在進(jìn)入WEAR以后翘鸭,就開始進(jìn)行主頁模塊的數(shù)據(jù)請求,這時就需要通過請求的響應(yīng)次數(shù)來粗略判斷下具體的請求地址了远荠。在Charles中矮固,每有請求響應(yīng),地址列表就會有黃色高亮譬淳。
黃色高亮表示有新的響應(yīng)信息
我發(fā)現(xiàn)http://www.wearzozo.cn/coordinate/9k8r0s/這個地址閃得很頻繁档址,打開查看以后可以看到這是主頁模塊所有的圖片地址。不難看出邻梆,WEAR如此龐大的圖片數(shù)據(jù)有獨立的服務(wù)器作為支撐守伸。
- 查看用戶數(shù)據(jù)
圖片找到了并不能達(dá)到最終目的,因為我需要的5W用戶的數(shù)據(jù)浦妄,所以繼續(xù)找尼摹。然后找到了一個域名為http://api.wear.jp的請求地址,根據(jù)命名經(jīng)驗剂娄,可以很直觀的看出這是一個專門給客戶端提供接口的服務(wù)器地址蠢涝。
展開v1發(fā)現(xiàn)里面有兩個子目錄ranking與timeline,這兩個子目錄應(yīng)該分別對應(yīng)了搭配與新動態(tài)模塊阅懦。
下面就以RANKING為例:
在Overview中可以看到ranking的請求地址為:
http://api.wear.jp/v1/ranking/snaps和二?pageno=1&pagesize=33&group_id=1&period=1&country_id=13
請求方式為:
GET
內(nèi)容格式為:
application/json
ranking中的請求信息
然后在到Response中可以看到返回的數(shù)據(jù)格式是Json,并且從它“見名知意”的key中耳胎,可以直接推斷出每一個字段的含義惯吕。
![三诊笤、保存信息到本地
既然已經(jīng)找到的用戶列表耘纱,那么抓取用戶信息就easy了炫刷±常可以寫腳本來抓取,當(dāng)然作為iOS開發(fā)者堡距,也可以在Xcode中寫一個發(fā)起網(wǎng)絡(luò)請求的App來進(jìn)行抓取甲锡,讀到數(shù)據(jù)以后,保存到模擬器沙盒就行了吏颖。
具體的抓取步驟就不講解了搔体,也不清楚是否侵權(quán),所以還是慎用得好半醉。
四疚俱、Charles其他用法
關(guān)于Charles的其他功能,有空會在后續(xù)文章中講解到缩多。