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请求进行抓包