原理:
设置charles为服务器和客户端直接的过滤器,让所有的网络请求都经过charles
Proxy----Proxy Setting----Enable transparent HTTP proxying
1.HTTP
1)配置代理端口号;
Proxy -》 Proxy Settings -》 Port,port可以随便指定,默认为8888,不改就好;
2)配置代理的ip;
Android手机的网络代理一般在设置页面,点击当前连着的wifi,手动修改代理配置,然后将你的电脑ip和第一步中配置的端口号填写到手机上即可。
(我的是华为手机,长按链接的wifi,点击:修改网络,勾选:显示高级选项,点击:代理,选择:手动。再分别输入电脑的IP,和端口号)
2.HTTPS
1)在上面两步的基础上,你需要为charles添加SSL Proxiyng。具体的步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,你可以这样配置:
host是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port为443。
2)下载手机的SSL证书。charles里点击help -》SSL Proxying-》Save Charles Root Certificate,然后选择目录,保存一个类似于这样的“charles-ssl-proxying-certificate.pem”文件
3)给手机安装证书: adb push charles-ssl-proxying-certificate.pem sdcard/charles.pem
打开手机的文件管理器,找到charles.pem,点击安装
如果安装不成功,打开手机设置 -》更多设置 -》系统安全 -》从存储设备安装 -》选择charles.pem,点击安装
如果安装还不成功,请尝试把文件重命名为.crt,再重复上述操作
4)给电脑安装证书,第二步下载的证书直接双击安装即可
这样就可以抓到https的数据包,且没有乱码,没有unknown~~
另外再补充一下:
利用charles在PC端上抓http包,大概思路:1.先设置charles为代理:直接在代理---windows 代理。2.设置代理的端口,具体参照最上面的步骤,
3,PC端的浏览器默认就好,不需要更改。如果想更改:谷歌浏览器中输入:Chrome settings-----搜索框中搜索:代理,然后再找到代理处输入IP地址和端口号就行了。
在PC端上抓取https的包,就是与上面的android的抓包方式类似,无法就是先设置好https的端口号--*443,再在help中安装好证书。
本文转自:https://blog.csdn.net/luochoudan/article/details/72801573