1.下载charles
可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/ 根据自己的操作系统下载对应的版本,然后进行安装,然后打开charles工具
2.设置代理(记住手机跟电脑要在同一个网络,用的同一个路由器)
1).查看默认端口 Proxy->Proxy Settings 在这个页面会看到HTTP Proxy的默认端口是8888 我们不需要修改,只需要知道有这个值就行
2).查看当前电脑的ip 例如我这里的是:192.168.9.129
3).知道了默认端口跟ip地址,我们就可以手机上设置代理了。设置步骤我录制了gif动画。(我用的是genymotion模拟器,真机也是一样的)
完成了以上两个步骤就可以抓到http请求的数据了,效果图如下:
接下来讲解如何抓取https协议的包,如果你没有这个需求,请不要继续浏览下面的内容
3.设置charles ssl代理
Proxy->SSL Proxy Settings 弹出一个ssl代理设置界面
1).Enable SSL Proxying复选框打上勾
2).添加你想要的设置代理的域名,端口默认443
设置过后效果图如下:
4.手机下载ssl证书
1).Help->SSL Proxying ->Install Charles Root Certificate on a Mobile Device or Remote Browser…
会弹出一个提示框,如下显示:
浏览器输入这个地址即可下载证书,记住要用Android自带的浏览器. 地址是:http://charlesproxy.com/getssl 扫一扫二维码安装ssl
2).然后按照他的提示安装证书即可.
做完第三步跟第四步就可以抓包https数据了.如果还有问题请留言。。。下面是我抓包截图。
方法二
HTTP包:
1.安装抓包工具 Charles , 到官网http://www.charlesproxy.com/可下载到最新版本
2.用安装了charles的电脑,代理待抓包anroid手机的网络连接:
首先查看pc的网络IP地址;打开手机设置,进入当前wifi连接,设置代理为手动,将服务器填为上一步中获得的IP,端口默认为8888(在charles的proxy setting中可以改这个端口号)。这时Charles弹出确认框,点击Allow按钮即可
3.中文乱码问题解决
在charles的content/info.plist 中 的vmoption 添加-Dfile.encoding=UTF-8
HTTPS抓包:
- 下载Charles证书http://www.charlesproxy.com/ssl.zip,解压后导入到手机中,然后设置->安全->凭据存储->从存储设备安装,选中证书。
- 在Charles的工具栏上点击设置按钮,选择Proxy Settings;切换到SSL选项卡,选中Enable SSL Proxying,选项卡的Locations表单可以填写要抓包的域名和端口,点击Add按钮,在弹出的表单中Host填写域名,比如填api.instagram.com,Port填443。默认的..表示应用于所有地址