移动端代码调试-使用代理服务器进行调试

本文介绍了如何使用Charles作为代理服务器进行移动端页面开发的调试,包括HTTP抓包、HTTPS抓包的配置,以及如何解决HTTPS证书不受信任的问题。此外,还详细讲解了Map请求重定向和Rewrite修改请求内容的功能,帮助开发者更高效地进行代码调试和生产环境代码的替换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言 

最近在做移动端页面的开发,在开发过程中发现有些功能必须要在手机上调试,例如微信授权的功能等,一开始是采用打包放到服务器上的方式实现,后面发现这样调试起来太麻烦而且效率太低了,于是就去了解了通过代理服务器的方式进行调试,以下是使用下来的一些总结


一、代理服务器的介绍

抓包工具

  • 展示http、https请求,辅助开发调试
  • 拦截客户端和web服务器之间的所有请求

常见的代理服务器有以下两种,由于Charles是支持多平台的,所以下面我们的介绍都是在charles下进行的:

 

二、HTTP抓包

1.移动端配置

点击手机连接的Wi-Fi --->HTTP代理,配置代理

  • 服务器/主机名:填入电脑的ip地址
  • 端口:我的手机默认是8080

2.使用charles开始抓包:

当我们去抓取https请求的页面时会发现无法直接解析HTTPS请求,原因是加密请求解析并没有被开启,接着我们往下看:

三、HTTPS抓包

1.添加要解析的域名列表:

  • 菜单栏Proxy  --->  SSL Proxying Settings,添加完后重启charles

  • 配置完后重新抓包,然后手机重新访问对应的页面会收到以下警告

这是由于网站证书不受信任导致的,我们先来简单了解以下https协议的加密机制

HTTPS协议

  •  HTTPS=HTTP+SSL(Secure Sockets Layer)在http协议的基础上添加了一个SSL层
  •  公钥加密法:客户端向服务端索取一个公钥,这个公钥是存放在客户端里的,使用的时候客户端使用公钥加密请求的信息,服务端收到加密后的请求,用存放在服务器上的私钥来解析这个请求,服务端给客户端的公钥有一个载体,就是数字证书,公钥是放在数字证书里给到客户端的,如果证书是可信的,这个公钥就是有效的

Charles代理HTTPS请求的机制如下图:

charles会动态给每个服务器生成一个由charles根证书签发的一个数字证书,所以请求产生时客户端收到的不是服务端的原始证书,而是charles签发的证书,原始证书是保存在charles上的,客户端和charles之间的通讯是由charles公钥来加密的,而charles和原始服务器之间的通讯是由服务器公钥加密的

因为我们原本信任的是服务器的证书,charles动态生成的证书在我们的设备上是不被信任的,所以会产生上面所说的警告,要移除这个警告则需要如下处理:

信任Charles根证书:

  • 在移动端用浏览器访问https://chls.pro/ssl  下载证书描述文件
  • 安卓:直接安装即可
  • ios:在设置-通用-描述文件与设备管理 中安装证书,然后开启设置-通用-关于本机-针对根证书启用完全信任

设置完后再进行抓包可看到以下内容:

四、Map请求重定向

Map Local/Map Remote使用情况:

  • 生产环境代码打包压缩后不利于debug
  • 调试时不方便频繁发布代码

Map Local:将某请求重定向至本地某文件

Map Remote:将某请求重定向至另外一个请求(可将测试环境的代码重定向到本地的代码)

  • 可将生产环境的代码通过重定向功能替换为本地代码

五、Rewrite修改请求内容

  • 可作用于:requests & responses
  • 可修改:header、host、path、url、param、body等等
  • 采用新增、替换的形式

示例:在生产环境注入Vconsole脚本:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值