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

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

前言

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


准备工作

toDesk(控制跳板机)

内网穿透工具(部署本地前端项目)

Fiddler(更改远程请求接口)

可以本地部署的前端项目

意义

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


代码更新需要发版解决,每次调试需要重新打包部署,十分耗时间

控制台无法直接调试源码,只能查看webpack或者其他打包工具编译后的产物

线上环境屏蔽了debugger调试困难

不灵活,无法动态切换页面(如切换起始页)

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


整体思路

1.png


实现过程

本地起一个服务,记住项目类型的端口号,用于内网穿透,如: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的脚本,基于它,我们可以拓展出更多的功能


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


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

1.png


找到OnBeforeRequest函数,这个函数是截取拦截器,参数是req的所有参数

在全局写个ReplaceUrl函数,用来将请求url替换成另一个

static function ReplaceUrl(oSession, origin_host, replace_host){
    // MessageBox.Show(oSession.url.indexOf(origin_host))
    if(oSession.url.indexOf(origin_host)!=-1){
        //MessageBox.Show(oSession.url)
        oSession.fullUrl = oSession.fullUrl.Replace(origin_host,replace_host);
    }
}

最后在OnBeforeRequest中调用上述函数,就可以了

static function OnBeforeRequest(oSession: Session) {
    var origin_host = 'websakura.diehunter1024.work/api/'
    var replace_host = '10.5.24.108/api/'
    ReplaceUrl(oSession, origin_host, replace_host)
......
}

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

1.png



写在最后

相关文章
|
2天前
|
资源调度 前端开发
编译第三方前端项目时候出现Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
编译第三方前端项目时候出现Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
16 0
|
2天前
|
前端开发 JavaScript API
flowable流程移植新项目前端问题汇总
flowable流程移植新项目前端问题汇总
|
4天前
|
JSON 前端开发 搜索推荐
BoostCompass( http_server 模块 | 项目前端代码 )
BoostCompass( http_server 模块 | 项目前端代码 )
23 4
|
12天前
|
前端开发 数据处理 Android开发
【Flutter 前端技术开发专栏】Flutter 中的调试技巧与工具使用
【4月更文挑战第30天】本文探讨了Flutter开发中的调试技巧和工具,强调其在及时发现问题和提高效率上的重要性。介绍了基本的调试方法如打印日志和断点调试,以及Android Studio/VS Code的调试器和Flutter Inspector的使用。文章还涉及调试常见问题的解决、性能和内存分析等高级技巧,并通过实际案例演示调试过程。在团队协作中,有效调试能提升整体开发效率,而随着技术发展,调试工具也将持续进化。
【Flutter 前端技术开发专栏】Flutter 中的调试技巧与工具使用
|
13天前
|
前端开发
【专栏】在前端开发中,package.json 文件是项目的重要配置文件,其中包含了许多与项目相关的信息和设置
【4月更文挑战第29天】`package.json`的`proxy`字段用于配置开发环境中的代理服务器,解决跨域问题并模拟后端响应。它是字符串类型,值为代理服务器地址。主要应用场景包括前端跨域请求和本地调试。配置时在`package.json`顶层添加`proxy`字段,如`"proxy": "http://localhost:8080"`。该配置仅在开发环境中生效,生产环境需另寻解决方案。
|
13天前
|
监控 前端开发 jenkins
Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程
【4月更文挑战第29天】本文探讨了Jenkins在前端项目持续部署中的应用,介绍了Jenkins作为自动化部署工具的基本概念和流程。前端持续部署涉及代码提交、构建、测试和部署四个步骤。实现过程中需配置代码仓库、构建、测试和部署任务,安装相关插件并确保环境一致性。注意事项包括代码质量控制、环境一致性、监控预警和安全管理。通过Jenkins,可提升前端开发效率和质量,但需不断学习以应对技术发展。
|
13天前
|
Web App开发 JavaScript 前端开发
【专栏】如何使用 Chrome DevTools 的断点功能提升前端调试效率, 花式打断点
【4月更文挑战第29天】本文介绍了如何使用 Chrome DevTools 的断点功能提升前端调试效率。从基本的行断点和函数断点,到更高级的条件断点、DOM 断点、XHR 断点和事件断点,以及代码注入断点,详细阐述了各种断点的设置和应用场景。通过断点调试实战案例,如异步操作、复杂逻辑和性能优化,展示断点在解决实际问题中的重要作用。掌握这些技巧能有效提高开发质量和效率。
|
13天前
|
JavaScript 前端开发 开发者
前端框架(Vue.js&&vue-cli项目框架&&element-ui使用)
前端框架(Vue.js&&vue-cli项目框架&&element-ui使用)
|
17天前
|
缓存 前端开发 JavaScript
前端vue3分享——项目封装axios、vite使用env环境变量
前端vue3分享——项目封装axios、vite使用env环境变量
19 0
|
29天前
|
监控 前端开发 JavaScript
如何使用浏览器调试前端代码?
【4月更文挑战第11天】前端开发中,浏览器调试是关键技能,能提升代码质量。本文介绍了如何使用浏览器的调试工具:1) 打开调试窗口(F12或右键检查);2) Elements标签页检查DOM结构和样式;3) Console调试JavaScript,查看日志和错误信息;4) Sources设置断点调试JS文件;5) 利用Network、Performance和Memory等标签页优化性能。熟悉调试工具、利用日志和错误信息能有效定位问题,提高开发效率。
48 7