基于内网穿透+Fiddler的私有化项目调试前端解决方案

前言

分享一下这段时间的一个工作经历:对接第三方平台时,对方只会提供一台跳板机,以及只有跳板机能访问的内网ip(通过内网ip可以访问前端页面,后端接口,数据库,最重要的是第三方平台的api),此时该方案比较适用

准备工作

  • toDesk(控制跳板机)
  • 内网穿透工具(部署本地前端项目)
  • Fiddler(更改远程请求接口)
  • 可以本地部署的前端项目

意义

我们使用反证法,如果不这么做,在对接第三方的时候有以下缺点:

  • 代码更新需要发版解决,每次调试需要重新打包部署,十分耗时间
  • 控制台无法直接调试源码,只能查看webpack或者其他打包工具编译后的产物
  • 线上环境屏蔽了debugger调试困难
  • 不灵活,无法动态切换页面(如切换起始页)

若使用该方案可以有效解决上述问题

整体思路

基于内网穿透+Fiddler的私有化项目调试前端解决方案

实现过程

本地起一个服务,记住项目类型的端口号,用于内网穿透,如:127.0.0.1:9999或0.0.0.0:9999,使用内网穿透将端口映射到外网中,如何使用内网穿透可以参照这篇文章各大平台也会提供文档,不多做赘述。在本地浏览器通过对应的映射ip或域名能访问到本地调试运行的页面就说明成功了。

此时我们在跳板机上也可以通过输入映射ip或域名的方式来访问本地启动的项目,那么此时还剩下一个问题:后端请求接口怎么办于前端页面服务在本地而非跳板机上,会导致前端的项目请求时仍然无法访问到跳板机局域网中的接口。

经过一番折腾后最后用fiddler+JScript脚本解决了问题

过程及踩坑如下:

  • 本地化部署:不现实,无法访问第三方提供的OpenAPI
  • nginx反向代理:接口提示304,修改较大
  • Fiddler重定向:和nginx一样,http状态码报304重定向

下面我详细分享一下fiddler+JScript的方式解决

fiddler作为一款比较优秀的抓包软件,开发人员自然是要信手拈来

而说到fiddler更有意思的地方,就是JScript(语法和js很像)一款运行在Fiddler的脚本,基于它,我们可以拓展出更多的功能

我们的目的是将匹配到的请求,在请求发起之前修改为跳板机上的请求地址

  • 首先我们打开规则的自定义规则

基于内网穿透+Fiddler的私有化项目调试前端解决方案

  • 找到OnBeforeRequest函数,这个函数是截取拦截器,参数是req的所有参数
  • 在全局写个ReplaceUrl函数,用来将请求url替换成另一个
  • 最后在OnBeforeRequest中调用上述函数,就可以了

保存一下代码,重启软件就可以达到以下效果,请求域名的接口全部被替换成了跳板机上的接口

基于内网穿透+Fiddler的私有化项目调试前端解决方案

写在最后

感谢你看到这里,如果文章对你有帮助,请点个赞支持一下,你的支持是作者创作的动力

来源:DieHunter1024

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月17日
下一篇 2022年1月17日

相关推荐