前因
iOS針對IAP有一個保護機制,如果使用了全局代理的方式,iOS檢查到之后為了保障交易的安全性,將會拒絕IAP流程,所以是無法抓取交易數(shù)據(jù)的,以豆瓣閱讀為例,未開啟代理時,可以正常的進入IAP充值界面,開啟代理后則會報錯:

但是如果使用的動態(tài)代理的模式,可以繞過iOS的檢查機制,下面就介紹下具體方法(PS:在這之前,默認(rèn)你已經(jīng)按之前的方法將證書倒入了iPhone設(shè)備中,教程地址:移動端安全修煉(一))。
這里需要補充一點,新版的iOS在信任證書環(huán)節(jié)需要新增一個信任,否則無法完全抓取HTTPS數(shù)據(jù),具體位置在「設(shè)置」—「關(guān)于手機」—「信任證書設(shè)置」,如圖所示:

方法
先準(zhǔn)備一個PAC文件(PAC,一個自動代理配置腳本,包含了很多使用 JavaScript 編寫的規(guī)則,它能夠決定網(wǎng)絡(luò)流量走默認(rèn)通道還是代理服務(wù)器通道,控制的流量類型包括:HTTP、HTTPS 和 FTP)。內(nèi)容很簡單:
function FindProxyForURL(url, host)
{
if(shExpMatch(url,"*.douban.com/*")){
return "PROXY 192.168.1.134:8088";
}
}
這個PAC的意思是域名douban.com使用192.168.1.134:8088進行代理,保存文件為test.pac之后,需要開啟一個Web服務(wù)器提供這個PAC文件的地址,這里使用Python默認(rèn)的模塊來開一個簡單的HTTP服務(wù),到你保存的PAC路徑使用如下命令:sudo python -m SimpleHTTPServer 9527,這樣在你自己本機的IP地址下,就啟動了一個Web服務(wù),之后將iOS的WI-FI網(wǎng)絡(luò)配置你的代理PAC如下:

開啟你的抓包軟件,抓取你設(shè)定好的IP和端口的數(shù)據(jù),打開豆瓣閱讀進行正常的充值業(yè)務(wù),發(fā)現(xiàn)不在報錯而且可以抓取IAP支付流程的包了,這樣就可做交易數(shù)據(jù)的安全分析了,設(shè)定和抓包詳情如下:


尾巴
使用該方法抓包,還是需要設(shè)備信任抓包工具的證書不管是Charles還是Burp Suite,基于HTTPS的流量抓包,證書是必備的,只不過使用動態(tài)代理的方式繞過了檢查機制從而獲取了想要的數(shù)據(jù)。