转载自: http://www.baidufe.com/item/8a53eea855cb6289993f.html
之前做Web项目的时候,经常会使用Fiddler(Windows下)、Charles Proxy(Mac下)来抓包,调试一些东西;现在搞Android App开发,有时候也需要分析手机App的网络请求,包括参数、返回值等。在Mac上也是可以继续使用Charles Proxy来抓Android App发出的网络包的,大概的几个步骤:
1、保证手机和Mac连接的是同一个无线局域网
2、在Mac上打开Charles Proxy,菜单栏操作:Proxy→Proxy Setting,检查端口,一般保持默认,HTTP Proxy端口为8888
3、查看Mac当前的IP地址,之后作为手机的Proxy IP用:
4、编辑手机的WIFI连接,长按当前连接的WIFI网络:
5、选择“修改网络”,进入网络连接的编辑模式(选择“显示高级选项”)并保存:
6、这个时候可以在手机App上随意进行一个操作,比如Tieba客户端的一键签到:
7、观察Charles Proxy上的抓包情况:
抓到的数据包显示非常友好,并且可以对已经发出去的请求进行编辑,然后重新发送(模拟请求,并分析结果)。
以上就是一个大概的使用过程,关于这个Charles Proxy,不介绍太多;Windows下,可以使用Fiddler(2/4),默认端口也是8888,当然,你也可以随便改。
另外,附上Charles Proxy For Mac的下载包(附带序列号:给懒人): Charles-Proxy-For-Mac-3.8.1
以上,希望也对你有用!
转载自: http://www.neatstudio.com/show-2454-1.shtml
在mac下面,居然没有好的抓包工具,这让我十分纠结,毕竟不可能为了抓一个http包就跑到win下折腾。或许有人说tcpdump这么好的工具,你怎么不用。说实话,tcpdump太复杂了,我还没有细看,再加上不是所见所得,所以,用起来不是那么习惯
又有人说,wireshark怎么不用?好吧,其实我是有装wireshark,只是启动的时候会启动XQuartz,有点慢,当然这不是主要的,而是wireshark功能太强大了,以至于都不会写过滤器。
也有人说,图方便的话,完全可以用chrome自带的抓包工具啊?在没有找到这个工具之前,你可以尝试在地址栏输入:chrome://chrome-urls/,你会发现chrome原来有这么多的隐藏工具,嗯。我要说的就是其中的一个:chrome://net-internals/ ,在Events中,你可以进行过滤,不过,针对https的包,内容没法显示
越来越怀念windows下面,smartsniff完全就是wireshark的简化版,抓起包来刷刷的,过滤数据也很方便。
当然,mac下面的charles就真心不错了,试用了一下,果然对于https的包也能够抓取。
这里有一个简单的教程(实际操作略有出入):
在Mac下做开发,用Fiddler抓包由于离不开Windows比较痛苦,还好有Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Retinizer中把文字变清晰)
HTTP抓包
- 打开Charles程序
- 查看Mac电脑的IP地址,如192.168.1.7
- 打开iOS设置,进入当前wifi连接,设置HTTP代理Group,将服务器填为上一步中获得的IP,即192.168.1.7,端口填8888
- iOS设备打开你要抓包的app进行网络操作
- Charles弹出确认框,点击Allow按钮即可
HTTPS抓包
- 下载Charles证书http://www.charlesproxy.com/ssl.zip,解压后导入到iOS设备中(将crt文件作为邮件附件发给自己,再在iOS设备中点击附件即可安装;也可上传至dropbox之类的网盘,通过safari下载安装)
- 在Charles的工具栏上点击设置按钮,选择Proxy Settings…
- 切换到SSL选项卡,选中Enable SSL Proxying,别急,选完先别关掉,还有下一步
- 这一步跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles则麻烦一些,需要在上一步的SSL选项卡的Locations表单填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port填443
接下来就跟HTTP抓包一样了
---EOF---
上文中的一些操作,其实是有点出入的(HTTPS)抓包
1、如果没有设置ssl的话,那么你看到的ssl的接口中,会有一个报错:SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations,这个时候,在左侧的域名上点右键:enable ssl,就OK了。(其实就是上面的第4部,不过这个操作是简化操作,上面的第4步太麻烦了)
2、如果这样还是不能抓包,那么官方会有一个说明(http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/):
二、步骤
1、安装Charles
(破解什么的自行搞定……)
2、打开,并设置基本参数
打开Proxy——Proxy Settings…——Proxies——HTTP Proxy里的Port,就是代理的端口,是与手机端一致(比如这里默认8888,我设置了8889
)——勾选Enable transparent HTTP proxying
3、手机连接wifi,并且设置手动代理
(ip为当前电脑,端口是上面设置的8889
) 此时,手机打开一个url,已经可以实现初步抓包!下面接着把https的配置好
——不配置的话,报错提示(如「图1」)
SSLHandshake: Remote host closed connection during handshake
You may need to configure your browser or application to trust the Charles Root Certificate. See SSL Proxying in the Help menu.
「图1」
4、接着配置电脑上charles的ssl
Proxy——SSL Proxying Settings——SSL Proxying ——勾选Enable SSL Proxying——Locations里add一个Host和port(比如xxx-api.xxx.com, 443)(注意,这里先别填*:443
, 下文会说明为什么)
5、获取证书
Help——SSL Proxying——Install Charles Root Certificate on a Mobile Device or Remote Brower…——出现一个弹窗(如「图2」)
「图2」
6、手机安装证书
手机按提示,访问http://charlesproxy.com/getssl,出现安装证书提示,随便打个名称,选择WLAN(这里android,一定要选WLAN
而不是VPNxxx),确定,完成! 这时再看看手机访问的https的链接,Charles能抓到了吧!
7、如果此时也想电脑也可以抓到https,还需要一点设置
Help——SSL Proxying——Install Charles Root Certificate——这时会打开【实用工具的钥匙串访问】——解锁系统根证书——搜索找到Charles Proxy Custom Root Certificate (built on biuMBA,local,31 DEV 2015)——打开——选择信任——使用此证书时:始终信任(如「图3」)
「图3」
8、别急,最后一步
记得前面说过的*:443
吗,对,这时就可以改为*:443
了,手机端,电脑,都可以访问任意https而畅通无阻。(如果前面就设置了,就会出现,手机访问xxx-api.xxx.com正常,而电脑访问一些https的资源时,就有问题……我就是刷着知乎,发现样式全丢了,一看charles,全部报红叉,我去……想重现,发现重现不了,我也不想再折腾回去了……@_@)
好像是
Transaction began prior to session being cleared, body content transmitted before the session clear has not been captured
类似这样的。
三、重点说明
1、关键步骤说明
在「二、6」那里要用手机的访问https的浏览器来访问,才生效,否则无效。(这是新版charles不同的地方,官网说3.10之前的版本,仍是下载crt证书来完成这步,而之后的都是上述说的新方法。)
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. [1]
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. [2]
Charles generates its own certificates for sites, which it signs using a Charles Root Certificate, which is uniquely generated for your installation of Charles (as of v3.10). You will see a warning in your browser, or other application, when it receives that certificate because the Charles Root Certificate is not in your list of trusted root certificates. See SSL Proxying. [3]
正是通过查看说明,在Help菜单上找到了相应入口,一个简单的小说明,就让原本一筹莫展的问题,瞬间得以突破,进而下一步操作!耐心、细心很重要。
2、提醒
本文说明里,用的是安卓手机连接电脑(别问为什么用mac的还用android……),排查中,看到文档有提到ios9的话会遇到一些问题,顺手就留个课外作业:用iphone的童鞋,如果要抓去https的话,该如何操作呢?-0-