Charles抓包以及解决抓取HTTPS请求unknown的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Charles抓包以及解决抓取HTTPS请求unknown的问题相关的知识,希望对你有一定的参考价值。

参考技术A

在 Mac 下使用 Charles 工具进行抓包,然后抓取 HTTPS 请求时,出现 unknown,无法解析的情况如何处理呢?

请继续往下看,将会详细介绍一下整个过程...

过于简单,省略一万字...

包括电脑端和手机端,这也是抓取 HTTPS 请求的关键所在。

1. 电脑端

打开 Charles,然后在菜单栏选择 Help → SSL Proxying → Install Charles Root Certificate ,将证书安装至电脑,并打开 钥匙串访问

证书安装后,默认是 不被信任 的,所以我们需要将其设置为信任。

钥匙串 中找到该证书 Charles Proxy CA ,并设置为 始终信任 ,然后保存。

这样电脑端证书就安装完成了。

2. 手机端

同样在菜单栏选择 Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser ,将会有以下提示。

在手机打开: 设置 → Wi-Fi → 打开所连 WiFi → 设置 HTTP 代理 → 选择手动 ,接着将 IP 地址以及端口填写进去,然后存储即可。

输入过程中,服务器一栏 . 之间可能会自动插入空格,手动删除一下。

接着打开系统 Safari 浏览器 (其他浏览器可能无法唤起安装证书的弹窗),输入地址 chls.pro/ssl 打开页面,会自动唤起安装描述文件的弹窗,选择 允许

紧接着,前往: 设置 → 通用 → 描述文件 → 选择对应描述文件 → 安装

前往, 设置 → 通用 → 关于本机 → 证书信任设置(滑到屏幕最下面) → 将 Charles 证书勾选上 即可。(PS:我截图有两个是证书是两台不同的机器)

Charles 默认是 8888 ,不占用其他服务端口情况下,不修改问题也不大,根据实际情况自行调整。

这样我们就可以愉快地玩耍了

由于 android 机型众多,各定制系统差别也不同,安装证书在不同 Android 版本也有限制,导致在使用 Charles 进行抓包时要比 ios 难很多。

Android 7.0 之后默认不信任用户添加到系统的 CA 证书:

换句话说,就是对基于 SDK24 及以上的 APP 来说,即使你在手机上安装了抓包工具的证书也无法抓取 HTTPS 请求。

下面提供几个链接:

charles抓包

 

 

 

一、抓包工具作用

1、看发出去的请求
2、定位问题:看是server端的问题还是客户端
3、能模拟一些服务端返回的异常情况

二、抓包方式:

电脑抓包不需要配置,直接打开charles,就会自动抓取电脑上所有的http请求,目前https请求抓不到需要安装相关证书,配置。

手机抓包设置:

1、必须保证手机和电脑在同一个局域网
2、获取电脑ip,查看charles端口号,默认是8888(charles中proxy-proxy settings)
3、将手机设置ip和端口。从wifi进入,设置ip,端口和charles一致

三、charles设置断点

选择需要拦截的请求,右键-breakpoints,这样每次该请求对服务器进行访问时,都会被charles拦截

拦截后就可以对发送的请求进行更改,比如对http://bj.58.com/设置断点后,再次刷新页面,如下

进入edit request,就可修改请求的所有信息:url、请求方法、herders、cookies等等,修改完成后,点击execute ,就会按照修改后的请求去访问服务器

比如将地址改为http://iqiyi.com,点击execute,就会跳转到爱奇艺网站,而不是北京58网站

选择要拦截的响应数据,并请求上右键-breakpoints,页面重新发送请求,在向服务器发送过程中停止,不改变内容,直接点击execute原样请求服务器。则在服务器返回数据时就再次会停止,此时服务器返回了响应数据,可在response中修改内容:

 

比如修改上述内容为“”hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh“”,执行execute

 

以上是使用charles对请求或响应数据进行修改案例。

另,charles因为会对电脑上所有的请求抓包,数据比较多乱,如果想只看某一个请求,可以在请求上右键-focus,就可以对所有的请求分类为  关注的请求和other hosts

四、charles抓取https

1、安装根证书

 

 点击安装证书,安装过程中,直接将该证书安装到信任证书目录下

 

 安装完成后,还需要进行一步设置

如下图,勾选Enable SSL Proxying,点击添加,弹出下面的对话框,Host 表示你要抓取的 ip 地址或是链接,Port 填写 443 即可:

然后再次访问百度,发现可以抓包了

 手机抓包:

1、手机必须跟电脑在同一个网段

2、设置代理:进入手机无线网,选择代理--手动:填写IP(电脑的ip),端口8888.设置完成后,就可以抓包了

如果想要抓https的包,

1、pc安装证书:Charles--help---sslproxying---install charlex root certificate 然后弹出证书安装窗口,按照操作安装证书到pc。

2、手机需要下载证书,下载地址: 点击charles---help--ssl proxying---install charles root certificate on a mobile device .....会弹出一个信息框,上面写的有证书下载地址

3、在手机浏览器输入地址,下载证书并安装。安装完成后,在手机通用--关于本机--证书信任列表中,将Charles证书设置为信任证书即可

以上是关于Charles抓包以及解决抓取HTTPS请求unknown的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用Charles对Android App的https请求进行抓包

抓包工具--charles

HTTP/HTTPS抓包工具Charles

详解Android/IOS平台下抓包工具使用以及抓取API接口

charles抓包

Charles抓取http请求详解