首先,有些公司的测试人员会面临一个抓包问题。 那就是自己家的app抓包必须要配置一个证书! 这个证书开发同学会发给你,一般后缀是.p12 .pem等 无所谓 如果不安装这个证书。我们就无法解析接口返回值,一般情况就是返回值写着:400,如图
要解决这个问题,首先要明确一个概念:
无论是fiddler,charles,要抓https接口,大多需要安装证书-抓包工具自带的证书。很多小伙伴会把这个证书和公司内自己的证书弄混,以为是一个证书。实际上并不是。
charles举例来说,工具自带的证书只是保证你能正常抓到https接口。并不管你能不能解析返回值。服务器发现你没有我们公司内部证书,所以给你返回400。
工具自带的证书一般是这么安装:
我们小伙伴去百度如何安装证书的时候,几乎所有文章都会教你安装这个工具自带抓https的证书,小伙伴也并不知道上述俩个证书的情况后,盲目的跟着网上教程安装了工具自带证书,然后就造成了抓包发现400 无法解析的问题。
本文要说的是如何安装公司内的证书。俩个证书的道理再用土话阐述一下:
1.工具自带证书:负责让你抓到https接口
2.公司内部证书:负责让你解析成功自家app的某些https接口,这个证书也叫客户端证书
网上教程几乎都是教你安装1.工具自带证书。
这里开始看好:
打开charles—点击上面菜单:Proxy------点击子菜单:SSL Proxying Settings-----点击中间的选项:Client Certificates----点击中下部按钮:Add------Host写 * -------点击Choose按钮-----选择开发给你的公司内部证书------点击ok----勾选上------点击ok------重启charles
如上图设置即可。重启charles后就可以成功解析那些接口了呢。
下面开始讲mitmproxy如何安装。
博主搜了n多文章,都无法搜到这个教程,甚至发现几乎所有教程都是复制粘贴,教你最简单的安装mitmproxy和抓包,mock等。其中有少许文章说如何安装mitmproxy自己的证书,但是没有发现如何安装公司内部的客户端证书。
无奈之下只能去看英文官网,发现这样一句:
没错,这就是在我们启动mitmproxy命令时候,只需要简单的加一个参数即可。就这么简单
命令如下:
mitmproxy --set client_certs=你的证书路径
mitmproxy --set client_certs=你的证书路径
1
这样就可以解析成功了!
附上官网文档连接:
mitmproxy官方文档
这里再说一下:charles中最好用.p12结尾的证书
mitmproxy的命令行中要用.pem结尾的证书
python的requests模块发送请求时候要带证书也要带.pem结尾的证书。
证书格式的转换可以用openssl命令转换,具体教程可以自行百度,有很多也很简单。
手机安装mitmproxy工具自带的证书也可以连接好代理后访问 mitm.it. 来下载即可:
如果进去显示这样:if you can see this ,traffic is not passing through mitmporxy. 这说明没代理成功。请重启mitmproxy,手机代理连好,端口8080。