Mac Charles抓包

夙愿已清 提交于 2020-02-08 06:22:32

charles捕获http请求

1、Proxy --> macOS Proxy 先打开代理,使得mac上所有请求都通过charles进行代理。

15528325417514.jpg

 

2、Proxy --> Proxy Settings 设置监听端口号为8888。

15528327774262.jpg

 

3、此时,用电脑访问百度,就已经可以获取访问的包了,如果我们需要监听手机的访问,就还得在手机上进行设置。

 

15528329922849.jpg

4、先获取电脑的ip地址,Help --> Local Ip Address

15528331981826.jpg

 

5、然后在手机连接wifi,此时手机和电脑连接的必须是同一个wifi,然后在手机设置代理。

 

15528333270180.jpg

6、设置完成后,在手机打开一个网址,此时chartles就可以获取到手机访问的包了。

charles捕获https请求

http的请求我们已经可以获取,但是有些网站是https的,如果我们需要解析https的包,就需要安装证书了。

1、Help --> SSL Proxying --> install Charles Root Certificate,首先在mac安装CA证书。

15528347139321.jpg

 

2、然后要始终信任该证书。

 

15528348890706.jpg

3、Help --> SSL Proxying --> Install Charles Root Certificate On ...,然后生成手机上的证书。

15528350169528.jpg

 

4、Help --> SSL Proxying --> Save ...,然后保存该证书,它会生成一个类似charles-ssl-proxying.pem的文件,把该文件的后缀改为.crt,然后发送到你的安卓手机,进行安装即可。

15528351161931.jpg

 

5、Proxy --> SSL Proxying setting,设置你要监听的https请求的网址

15528353890176.jpg

 

6、手机再访问该网址,即可以抓到https的包了。

 

15528356124857.jpg

 

 

常见问题:

charles抓包出现乱码 SSL Proxying not enabled for this host:enable in Proxy Setting,SSL locations

1.情景:抓包的域名下 全部是unknown,右侧出现了乱码 

 

解决方法:proxy -> ssl proxy setting里 添加需要抓包的域名

 

 

如果想看所有抓包情况,可以这样设置:

 

 

对Flutter应用程序抓包

按照使用教程配置后,使用flutter开发的app发起网络请求,发现charles无法抓取请求包。开始一度怀疑是charles或者网络配置不正确,后面通过打开其它原生应用程序,发起网络请求,发现可以正常抓取请求包。
我的flutter应用程序中,网络请求使用的 dio 框架。经查阅dio的文档,发现可以设置http代理。

image.png

 

然后找到代码中实例化dio的地方,配置http代理。由于是需要连接电脑,并通过charles抓包,所以配置的ip是电脑的ip地址。
cmd命令行输入ipconfig -all,查看电脑当前ip地址

 

image.png

 

端口号是charles配置的端口号,在charles Proxy Settting中查看,默认是8888端口,可以修改。

 

image.png


获取到ip和端口号之后,修改代码如下:

    _dio.onHttpClientCreate = (HttpClient client) {
      client.findProxy = (uri) {
        //proxy all request to localhost:8888
        return "PROXY 172.16.2.176:8888";
      };
      // 你也可以自己创建一个新的HttpClient实例返回。
      // return new HttpClient(SecurityContext);
    };

保存后,重新运行flutter程序并发起请求,这个时候就可以在charles中查看到新发起的请求报文及响应报文了。

 

image.png

注意:对flutter应用程序抓包,需要配置http代理。发布应用程序前,记得清除代理配置,否则将导致网络请求失败。



 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!