對(duì)比使用Charles和Fiddler兩個(gè)工具及利用Charles抓取https數(shù)據(jù)(App)
實(shí)驗(yàn)?zāi)康模?/b>對(duì)比使用Charles和Fiddler兩個(gè)工具
實(shí)驗(yàn)對(duì)象:車易通App今妄,易銷通App
實(shí)驗(yàn)結(jié)果:
1.?????接口數(shù)據(jù)呈現(xiàn)方式對(duì)比:
(1) Charles樹狀結(jié)構(gòu)呈現(xiàn)于屏幕赊淑,清晰易區(qū)分
(2)Fiddler默認(rèn)按時(shí)間倒敘呈現(xiàn)所有接口數(shù)據(jù),不易區(qū)分
個(gè)人覺得圖形界面上Charles更易使用患亿,當(dāng)然可以通過過濾抓取的接口數(shù)據(jù),這樣Fiddler下也就很容易區(qū)分你要找的接口了赖阻。
2.?????針對(duì)車易通和易銷通App抓取的接口數(shù)據(jù)全面性對(duì)比:
(1)????Charles對(duì)于https無法直接獲取到,可獲取的呈現(xiàn)出來也都是亂碼昼激,需要安裝ssl證書限煞,后面會(huì)寫具體設(shè)置方法抹恳。
(2)????Fiddler可以直接抓取所有接口數(shù)據(jù),無需設(shè)置署驻。
------------華麗麗的分割線-------------
本來就是想對(duì)比一下适秩,給自己選一個(gè)順手的工具用啦,過程中有意外發(fā)現(xiàn)硕舆,也是寫這個(gè)小總結(jié)的主要原因~
在同時(shí)使用Fiddler和Charles抓取 車易通和易銷通app的數(shù)據(jù)時(shí)發(fā)現(xiàn),Charles是獲取到的數(shù)據(jù)沒有Fiddler全面骤公,我想要的數(shù)據(jù)幾乎都沒抓到抚官,問了鳳姐,問了開發(fā)和接口相關(guān)人員阶捆,考慮到了加密處理凌节,虛擬目錄等等等等,無解……?? 重新一條一條比對(duì)后發(fā)現(xiàn)Charles沒有抓取到的數(shù)據(jù)剛好在Fiddler下全部都是https協(xié)議的洒试,對(duì)于這部分https協(xié)議Charles幾乎都獲取不到倍奢,能夠獲取到的也都是亂碼狀態(tài),問題找到啦垒棋,百度解決……. 以下是解決方案卒煞,so easy…….
------------------------------------------
charles抓取https請(qǐng)求設(shè)置
1.?????問題所在: 用charles抓取https請(qǐng)求,會(huì)出現(xiàn)SSLProxying disabled in Proxy Settings這樣的提示叼架,如下圖畔裕。
2.?????解決方案:
(1)????安裝charles ca證書,如下圖乖订。
(2)????然后會(huì)彈出證書信息扮饶,選擇安裝證書,下一步乍构,將證書存儲(chǔ)改為:受信任的根證書頒發(fā)機(jī)構(gòu)甜无,下一步,完成哥遮。
(3)修改charles的proxysettings:選擇Proxy | Proxy Settings岂丘,彈出proxy設(shè)置選項(xiàng)卡,勾選Enabling transparent HTTPproxying眠饮。
(4)選擇ssl,勾選Enable SSL Proxying元潘,在Location部份選擇add,按如下圖添加君仆,抓取任意站點(diǎn)翩概、443端口的數(shù)據(jù)牲距。
(5)設(shè)置完畢,此時(shí)再連接代理去抓取https協(xié)議钥庇,已經(jīng)完全可以了~
另外牍鞠,我看網(wǎng)上有說這樣設(shè)置完成還是抓取App的時(shí)候失敗了的,但是我試了安卓和ios都沒有遇到這種情況评姨,如果大家有遇到可以通過http://www.charlesproxy.com/ssl.zip去下載證書难述,給移動(dòng)設(shè)備安裝(網(wǎng)上有反應(yīng)ios設(shè)備安裝不了這個(gè)的,我沒有嘗試過……) 吐句。
題外話:整個(gè)設(shè)置步驟很簡(jiǎn)單啦胁后,網(wǎng)上遍地都是,但我當(dāng)時(shí)很好奇為什么要設(shè)置成443,為什么要安裝ca證書嗦枢, 所以又查了一下https跟http的區(qū)別攀芯,補(bǔ)充一下我這匱乏的知識(shí)體系。
HTPPS和HTTP的概念 :
我的理解:很簡(jiǎn)單文虏, https是在http的基礎(chǔ)上加了SSL層侣诺,是http的安全版,端口是443氧秘。
http就不用說啦年鸳,超文本傳輸協(xié)議,規(guī)定瀏覽器跟服務(wù)器之間傳輸規(guī)則的丸相,端口是80搔确。
----------以下是百度的版本:-----------
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道灭忠,簡(jiǎn)單講是HTTP的安全版妥箕。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL更舞,因此加密的詳細(xì)內(nèi)容就需要SSL畦幢。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類同http:體系缆蝉。用于安全的HTTP數(shù)據(jù)傳輸宇葱。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)刊头。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行黍瞧,提供了身份驗(yàn)證與加密通訊方法,現(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊原杂,例如交易支付方面印颤。
超文本傳輸協(xié)議 (HTTP-Hypertext transfer protocol) 是一種詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則,通過因特網(wǎng)傳送萬維網(wǎng)文檔的數(shù)據(jù)傳送協(xié)議穿肄。
HTTPS和HTTP的區(qū)別:
https協(xié)議需要到ca申請(qǐng)證書年局,一般免費(fèi)證書很少际看,需要交費(fèi)。http是超文本傳輸協(xié)議矢否,信息是明文傳輸仲闽,https 則是具有安全性的ssl加密傳輸協(xié)議http和https使用的是完全不同的連接方式用的端口也不一樣,前者是80,后者是443。http的連接很簡(jiǎn)單,是無狀態(tài)的HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸僵朗、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議 要比http協(xié)議安全HTTPS解決的問題:1 . 信任主機(jī)的問題. 采用https 的server 必須從CA 申請(qǐng)一個(gè)用于證明服務(wù)器用途類型的證書. 改證書只有用于對(duì)應(yīng)的server 的時(shí)候,客戶度才信任次主機(jī).所以目前所有的銀行系統(tǒng)網(wǎng)站,關(guān)鍵部分應(yīng)用都是https 的. 客戶通過信任該證書,從而信任了該主機(jī).其實(shí)這樣做效率很低,但是銀行更側(cè)重安全. 這一點(diǎn)對(duì)我們沒有任何意義,我們的server ,采用的證書不管自己issue 還是從公眾的地方issue, 客戶端都是自己人,所以我們也就肯定信任該server.2 . 通訊過程中的數(shù)據(jù)的泄密和被竄改1. 一般意義上的https, 就是server 有一個(gè)證書.a) 主要目的是保證server 就是他聲稱的server. 這個(gè)跟第一點(diǎn)一樣.b) 服務(wù)端和客戶端之間的所有通訊,都是加密的.i. 具體講,是客戶端產(chǎn)生一個(gè)對(duì)稱的密鑰,通過server 的證書來交換密鑰. 一般意義上的握手過程.ii. 加下來所有的信息往來就都是加密的. 第三方即使截獲,也沒有任何意義.因?yàn)樗麤]有密鑰. 當(dāng)然竄改也就沒有什么意義了.2. 少許對(duì)客戶端有要求的情況下,會(huì)要求客戶端也必須有一個(gè)證書.a) 這里客戶端證書,其實(shí)就類似表示個(gè)人信息的時(shí)候,除了用戶名/密碼, 還有一個(gè)CA 認(rèn)證過的身份. 應(yīng)為個(gè)人證書一般來說上別人無法模擬的,所有這樣能夠更深的確認(rèn)自己的身份.b) 目前少數(shù)個(gè)人銀行的專業(yè)版是這種做法,具體證書可能是拿U盤作為一個(gè)備份的載體.HTTPS一定是繁瑣的.a) 本來簡(jiǎn)單的http協(xié)議,一個(gè)get一個(gè)response. 由于https 要還密鑰和確認(rèn)加密算法的需要.單握手就需要6/7 個(gè)往返.i. 任何應(yīng)用中,過多的round trip 肯定影響性能.b) 接下來才是具體的http協(xié)議,每一次響應(yīng)或者請(qǐng)求, 都要求客戶端和服務(wù)端對(duì)會(huì)話的內(nèi)容做加密/解密.i. 盡管對(duì)稱加密/解密效率比較高,可是仍然要消耗過多的CPU,為此有專門的SSL 芯片. 如果CPU 信能比較低的話,肯定會(huì)降低性能,從而不能serve 更多的請(qǐng)求.ii. 加密后數(shù)據(jù)量的影響. 所以赖欣,才會(huì)出現(xiàn)那么多的安全認(rèn)證提示。