【摘要】 最近因为接口数据,请求参数,请求头的配置的问题,服务器不稳定的问题排除,弄得我很头疼。后台兄弟非常忙,作为一个程序小白,我开始寻求前人的利器。
【作者】 清泓
首先说明,这个问题是一个很小的细节问题,这里主要讲述的一个充分利用工具来解决问题的思路,也充分体现了其实一个写程序的人,不仅仅需要能够有解决问题的技术,而且需要沟通能力,才能少走弯路,解决问题,一步到位,但是在这个能力提升的过程中,如何解决当下难题?
第一部分:问题还原
一个很简单的配置问题,请求接口,在接口前面添加一个请求头,来进行接口参数的请求。
在这里,我们利用的是iOS中的AFT来进行的网络请求,有一个特殊的接口,需要加几个请求头,来进行数据的请求,我依照后台请求的我添加了一个请求头,对后台的数据进行获取。
这个接口本来已经调通了,没啥问题了,但是后来,发生的情况令人咂舌,在请求数据的时候,始终是请求不到数据。而且,也不报错。确实没报错,返回的是空。没有报错信息。
我刚开始想都没想就一直觉得一定是后台的问题。
第二部分:前后端问题定位
但后来还是试了一下,由于涉及到请求头等的配置,我利用postman进行了模拟请求。
重点在此工具如何添加请求头。
第一步:先添加这个基本的请求参数,如下图所示(可以看到确实没有返回数据,也没有任任何状态返回):
第二步:添加请求头,这个在postman的顶上栏配置tab标签的第三个:
第三步:看结果吧:返回值没问题,前端出现问题了,后端数据没问题
第三部分:解决问题
开发人员工具箱:什么是Charles,我为什么要它?
https://www.youtube.com/watch?v=y8Okx-RWK3M(需要安全上网)
实现的功能是https和http抓包,来看看我到底传了什么东西到后台去了,没有弄到数据。
第一步:我们需要下载它。
下载官网:https://www.charlesproxy.com
如果你下载不了,请私信我,乐意分享一切可用资源。
第二步:开始使用
在这里我发现了一个问题
我需要测试手机上程序的网络请求,这里就不得不说明一下如何配置手机上的网络了。
首先得查看电脑的http地址:
然后在手机上,点击你手机上面连接的网络。
找到你连接无线网的“配置代理”选项(必须跟你连接的电脑是同一个网段内)
点击配置代理,改为手动模式,然后设置服务器名,服务器名就是我们在电脑上面获取到的IP地址,端口号设置成:8888即可。
设置完成之后,你会发现,你的手机离开电脑就上不了网了,这都是正常现象的,等你调试完成之后,直接关掉就OK,我们可以开始正式抓包了。
设置端口完成,电脑端会出现以下弹窗,我们点击同意,allow
抓包成功:
这里没有我想要的东西,我想看到网络请求头到底有没有添加:
上图可以看出,我已经成功添加了请求头,而且数据都出来了,虽然这是我重现的,但确实可以理解为,服务器抽风了。
至此,问题就解决了,前前后后不到五分钟时间就解决了一个奇奇怪怪的问题。
拓展:
常见问题:
1.为什么我的手机抓不到包?
iOS10.3的真机抓包https, 在手机设置,关于本机,最下边有一个证书信任,必须打开charles的证书信任,才能抓包,而且,挂证书的api貌似抓不到包,只显示❌, 只有不挂证书的才能抓到。
2.ios13以上下载完证书以后,得去General -> Profile -> Charles Proxy CA里确认安装下,然后才会证书信用设置里出现相关信息。
可能存在的问题:
- 手机和电脑不处在同一网络环境下
- 手机上的代理ip不是电脑本机ip
- 证书没装成功
- 没勾选 Proxy -> macOS Proxy,勾选上 macOS Proxy
- 浏览器装的插件拦截了
- 不支持对应的协议,如 https http2 等需要另外配置
配置抓包HTTPS请求
主要步骤是电脑和手机上都安装好证书
电脑上的配置证书
如果您看了我的还觉得不能解决问题?讲的不够深入?没关系,可以继续往下看,如果以下没有您想要的,没关系,私信,留言联系我,我们一起学习,一起进步。
欢迎关注 技术团队的知乎账号 我们凭团队实例运作以下专栏, 必须干货!
互联网创业专栏 (我们小伙伴的创业历程)
与您一起聊技术 (APP、微信公众号、小程序、H5 技术总结)
互联网产品研发管理 (我们公司对产品结构的管理思路)
以下内容转载自:
使用Charles进行HTTPS抓包 - 掘金juejin.im安装SSL证书,手机端信任配置:
- 安装Charles HTTPS证书 路径:help–>SSLProxying–> Install Charles Root Ceriticate,如图所示:
- 点击Install Charles Root Ceriticate后,会直接跳到钥匙串
如果你的证书已经信任,可直接进入下一步,反之,点击Charles Proxy CA,进入钥匙串访问,设置为始终信任
- 通过Proxy–>Proxy Settings->Proxies, 勾选Enable transparent HTTP proxying
- 通过Proxy–>SSL Proxying Settings,勾选Enable SSL Proxying, 并添加host,端口是443 这里是把所有的host都设置进去
手机端下载证书
- 电脑上通过help–>SSLProxying–> Install Charles Root Ceriticate on a Mobile Device or Remote Browser,可以获得下载提示
- 手机上safari打开上述网址chls.pro/ssl(可能会有不同,请看上图提示),下载安装证书 注意要使用safari,其他浏览器下载证书并不会提示安装 20170606150148075.png
- 信任刚刚安装的证书,手机上打开 设置->通用->关于本机-> 证书信任设置 -> 信任证书
参考:YouTube TeamLearnable Author:https://www.youtube.com/watch?v=y8Okx-RWK3M
参考:https://juejin.im/post/5e96df7e6fb9a03c4237a4b4