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

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版|50资产|一周时长
简介: 基于内网穿透+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月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
161 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
2月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
57 8
|
3月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
168 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
2月前
|
前端开发 测试技术
前端工程化的分支策略要如何与项目的具体情况相结合?
前端工程化的分支策略要紧密结合项目的实际情况,以实现高效的开发、稳定的版本控制和顺利的发布流程。
28 1
|
2月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
43 2
|
3月前
|
前端开发 JavaScript
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
552 8
|
3月前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
3月前
|
前端开发 JavaScript 开发工具
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(三)
47 0
|
3月前
|
Web App开发 前端开发 JavaScript
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(二)
63 0
|
3月前
|
Web App开发 移动开发 前端开发
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(一)
前端代码规范和质量是确保项目可维护性、可读性和可扩展性的关键(一)
72 0