mitmproxy
如果你偏愛geek風,命令行,可以采用mitmproxy。
在采用mitmproxy官網給出的安裝方式:
sudo pip install mitmproxy
進行安裝時只嚣,遇到error:
OSError: [Errno 1] Operation not permitted: '/tmp/pip-wTaedh-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
解決方案 是:
sudo pip install --ignore-installed mitmproxy
其中,參數(shù)--ignore-installed的意思是:忽略過去下載的安裝包玻墅。
這樣之后介牙,import mitmproxy就沒有問題了。
然而我畢竟還是too young澳厢,在命令行下啟動:
mitmproxy -p 8080
遇到:
Traceback (most recent call last):File "/usr/local/bin/mitmproxy", line 7, in <module>from mitmproxy.main import mitmproxyFile "/Library/Python/2.7/site-packages/mitmproxy/main.py", line 5, in <module>from six.moves import _thread # PY3: We only need _thread.error, which is an alias of RuntimeError in 3.3+ImportError: cannot import name _thread
這是six的問題环础。
解決方案是:
sudo pip install --upgrade --ignore-installed six
sudo pip install --upgrade --ignore-installed mitmproxy
搞定!
另外剩拢,
mitmproxy的常用操作與命令可以參考這里线得。
Charles
如果你懶得去記各種命令,還是更喜歡友好的GUI界面徐伐,可以采用Charles贯钩。
不過是收費的。
默默給出:
http://blog.csdn.net/jiangwei0910410003/article/details/41620363
或者办素,
http://xclient.info/search/s/charles/ (話說角雷,這個網站有各種破解版,比如UI神器sketch)
深藏功與名性穿,請支持正版勺三。。需曾。
使用Charles抓Android客戶端HTTPS的包
-
原理
1.如果想了解HTTPS協(xié)議所實現(xiàn)的需求以及密鑰交換的過程吗坚,可以參考:http://www.reibang.com/p/ae9761bec4db。
個人認為呆万,在對HTTPS協(xié)議原理有理解的基礎上商源,才能夠更好地理解抓包原理。
2.關于使用Charles抓取HTTPS包的原理谋减,其實就是:中間人技術(man-in-the-middle)牡彻。
Charles會動態(tài)生成一個使用自己根證書簽名的證書,我們將該證書手動添加到客戶端逃顶,這樣客戶端就信任該證書了讨便。
不同的Android手機查看證書的入口略不同充甚,大致就是:“設置” --> 跟“安全”有關的選項進去找找就能看到。
查看“受信任的證書”霸褒,一般會分別顯示“系統(tǒng)信任的證書”和“用戶自定義信任的證書”伴找。
我們手動添加的Charles自己的證書,就屬于“用戶自定義信任的證書”啦废菱。
ok技矮,下面大致說說實現(xiàn)抓包的過程:
Charles接收web服務器的證書,若證書沒問題殊轴,則web服務器自然是正牌的衰倦,所以Charles信任web服務器。
這樣旁理,Charles與web服務器之間就可以完成密鑰交換了樊零,雙方使用約定的對稱密鑰進行通信。
但是孽文,Charles的職責可是一個代理驻襟,所以它還需要與客戶端進行通信。
而之前我們已經為客戶端安裝上Charles的證書了芋哭,表示客戶端信任Charles沉衣。
這樣,客戶端與Charles之間也可以完成密鑰交換了减牺,當然也可以使用約定的對稱密鑰進行通信了豌习。
綜上,Charles與web服務器之間打通拔疚,客戶端與Charles之間打通肥隆。
Charles就在web服務器和客戶端之間充當中間人的角色,即代理稚失。
web服務器和客戶端之間的通信內容都會經過Charles巷屿,也就實現(xiàn)了抓包。
-
安裝步驟
1.給客戶端(Android設備)安裝證書
http://blog.tingyun.com/web/article/detail/516
以上鏈接中墩虹,證書下載地址已不可用,可用地址為:
https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/
在上述官方鏈接頁面中有這樣一段話:
Legacy SSL Proxying
Version of Charles prior to v3.10 used a single SSL Root Certificate. You can still download the legacy certificate bundle here or the certificate itself here (for installing on mobile devices). Note that these certificates will not work on Charles v3.10.
If you are running Charles v3.10 or later, please go to Charles and consult the SSL Proxying submenu in the Help menu, for instructions on installing your new Charles Root Certificate.
You can also check the documentation on SSL Certificates for instructions for installing your Charles Root Certificate on various devices.
也就是說憨琳,根據(jù)你使用的Charles版本不同诫钓,安裝的證書可是不同的喲。
-
a.如果你是3.10之前的版本
去上面給的鏈接下證書篙螟,然后通過如下命令:
adb push charles.crt /sdcard/
將證書push到Android設備存儲卡中菌湃,之后通過手機文件查看器查看charles.crt,直接點擊即可安裝成功遍略。
-
b.如果你是3.10以后的版本
比如我前幾天就升級到4.0.2版本了惧所,那么你需要先打開Charles客戶端骤坐,
如上圖所示,找到“save Charles Root Certificate”這個選項下愈,把證書保存到本地纽绍,注意它是一個.pem結尾的文件,
然后接下來和a一樣势似,push到Android手機上拌夏,點擊即可安裝成功。
2.給Charles添加需要查看的HTTPS地址
如下圖所示:
Proxy → Proxy Settings → SSL
勾選上 Enable SSL proxying
點擊Add履因,添加需要查看的采用HTTPS的url和port障簿。
下圖中,所添加的address為*栅迄,表示查看所用采用HTTPS的地址站故;port為443,這是默認的端口號毅舆。
使用Charles模擬弱網環(huán)境
不多說西篓,直接上截圖,一目了然朗兵。