DevOps工具量化

macOS下常用的抓包工具:mitmproxy和Charles

2016-12-17  本文已影响563人  Rangethan

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

其中,参数--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的包

Charles接收web服务器的证书,若证书没问题,则web服务器自然是正牌的,所以Charles信任web服务器。
这样,Charles与web服务器之间就可以完成密钥交换了,双方使用约定的对称密钥进行通信。
但是,Charles的职责可是一个代理,所以它还需要与客户端进行通信。
而之前我们已经为客户端安装上Charles的证书了,表示客户端信任Charles。
这样,客户端与Charles之间也可以完成密钥交换了,当然也可以使用约定的对称密钥进行通信了。
综上,Charles与web服务器之间打通,客户端与Charles之间打通。
Charles就在web服务器和客户端之间充当中间人的角色,即代理。
web服务器和客户端之间的通信内容都会经过Charles,也就实现了抓包。

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.

也就是说,根据你使用的Charles版本不同,安装的证书可是不同的哟。

adb push charles.crt /sdcard/

将证书push到Android设备存储卡中,之后通过手机文件查看器查看charles.crt,直接点击即可安装成功。

Charles证书.png

如上图所示,找到“save Charles Root Certificate”这个选项,把证书保存到本地,注意它是一个.pem结尾的文件,
然后接下来和a一样,push到Android手机上,点击即可安装成功。

2.给Charles添加需要查看的HTTPS地址
如下图所示:
ProxyProxy SettingsSSL
勾选上 Enable SSL proxying
点击Add,添加需要查看的采用HTTPS的urlport
下图中,所添加的address为*,表示查看所用采用HTTPS的地址;port为443,这是默认的端口号。

Charles抓HTTPS包
使用Charles模拟弱网环境

不多说,直接上截图,一目了然。


模拟弱网环境
上一篇下一篇

猜你喜欢

热点阅读