環境安裝
Mono安裝
首先,Mac下需要使用.Net編譯後的程序,需要用到跨平臺的方案Mono(現階段微軟已推出跨平臺的方案.Net Core,不過暫時只支持控制檯程序)。安裝程。可以從 http://www.mono-project.com/download/#download-mac 地址下載。
安裝完後,在Terminal裏執行以下命令(注意MonoVersion的更換):
/Library/Frameworks/Mono.framework/Versions/<Mono Version>/bin/mozroots --import --sync
執行結果如下:
此步是爲了從Mozilla LXR上下載所有受信任的root證書,存於Mono的證書庫裏。root證書能用於請求https地址。
接下來如果想要運行Fiddler,還需要把Mono加入到環境變量中。編輯.bash_profile文件:
sudo vi ~/.bash_profile
加入文本:
export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1
export PATH=$PATH:$MONO_HOME/bin
保存後重新打開Terminal,Mono環境已裝好。
Fiddler的安裝
從Fiddler官網 https://www.telerik.com/download/fiddler 下載Fiddler Everywhere的壓縮包,按照指引安裝即可
Fiddler運行
使用
1.打開HTTP。設置Trust root certificate
2. 點擊connections,然後勾選 “allow remote computers to connect” 記住這邊的端口號(8888)
開始抓吧
-
首先確保電腦和手機連在同一個WiFi下面
-
打開fiddle
-
獲取電腦ip
-
打開cmd命令行
-
輸入ifconfig,,找到ip地址
打開手機WiFi設置,找到你當前鏈接的WiFi
- 設置代理服務器爲你電腦的ip,端口號爲上面設置的端口號(默認爲8888)
-
安裝https證書
-
在手機瀏覽器上打開 你電腦ip:你設置的端口號
-
我的是192.168.31.146:8888
-
點擊框框處安裝證書
-
設置fiddle監聽所有請求
-
選擇all process
- 參數如下圖
- 返回值因爲我看到是json的格式了,所以直接以json的格式看。
-
那麼直接模擬發送吧
-
直接看代碼吧。。。
-
import requests
如果headers裏面沒有referer則會訪問異常
referer表示上一個頁面是什麼。
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304 MicroMessenger/6.5.7 NetType/WIFI Language/zh_CN',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'https://servicewechat.com/wx80f809371ae33eda/23/page-frame.html',
}
url = 'https://mwx.mobike.com/mobike-api/rent/nearbyBikesInfo.do'
data = {
'longitude':'121.1883',# 經度
'latitude':'31.05147', # 緯度
'citycode':'021',
'errMsg':'getMapCenterLocation:ok'}
下面必須加上verify=False,表示不驗證ssl,要不然一直報錯。。。
z = requests.post(url,data=data,headers=headers,verify=False)
可以看到我們已經抓取了需要的數據,那麼怎麼抓取整個上海的摩拜單車情況呢??
只要獲取上海的所有經緯度,然後替換上面data中的經度及緯度就可以了。。。
那麼怎麼獲取上海的所有經緯度。。。
我發現挺難的。。。(有人拿到了請告訴我一聲,謝謝)
然後我用了高德地圖api的搜索功能,搜索了上海的所有小區的經緯度。一共898個,
然後查了這898個小區附件的摩拜單車情況....
總結
看完本編文章,你應該學會“如何抓取手機app的包”
其實挺簡單的(就是你手機通過電腦上網,然後這臺電腦上所有的請求都被抓下來了,那麼你手機的請求自然也被抓下來了)
大家還可以試着抓抓知乎客戶端的包。。。
更多fiddle的使用技巧,請善用百度、Google
最後所有代碼在https://github.com/kimg1234/pachong/blob/master/mobai.py
reference:
- https://www.jianshu.com/p/5086646e9aa4