Skip to main content

Reqable镜像功能实战案例

· 6 min read
Megatron King

Reqable正式版本已经发布,我们在随后的第1个小版本v1.0.1中修复和优化了镜像功能一些问题。很多小伙伴不了解镜像功能该如何使用,所以今天写一篇实战教程,演示下如何使用镜像功能来提高我们的开发和测试效率。

Reqable镜像功能常见的用途有两种,一种是切换API环境,第二种是本机服务访问,我们下面一一来解释这两种用途。

caution

SOCKS代理模式使用镜像功能需要升级到v1.0.2版本。

1. 切换API环境

很多公司在开发API接口的时候,都会区分环境,比如生产环境、测试环境和开发环境等等,不同公司的区分和叫法可能不一样,但是目的都是大同小异的:使用不同环境来区分数据和逻辑。比如,我们在API开发阶段的时候,调用开发环境下的API接口,用来自测或者调试;交付给QA部门的时候,QA同学会使用测试环境对产品功能进行测试;产品上线后,用户使用的则是生产环境。

不同公司切换API环境的做法不一样,有的是切换域名,例如生产环境域名是api.study.com,开发环境是api-dev.study.com。当然,不同公司的实现方式可能不一样,我们这里仅针对通过域名切换API环境的方式进行演示。

我们可以使用Reqable进行域名切换,例如将原本访问的正式环境域名api.study.com切换成开发环境域名api-dev.study.com,可以非常方便地对产品功能进行测试。

2. 本机服务访问

我们在开发前端或者服务端项目的时候,经常会将服务部署到PC本机,然后通过localhost作为域名进行访问。例如下图,我将Reqable的官方网站部署到了本机,通过浏览器访问http://localhost:3000进行访问。

如果我希望通过Reqable对本机部署的官网服务进行抓包分析,但是localhost默认是不走代理服务器的,即使我们设置了系统代理,可以看到Reqable的调试列表里面什么也没有。这时候,我们可以通过Reqable的镜像功能进行域名映射,例如配置下面的镜像:

接下来,在Reqable中开启系统代理,然后在浏览器中输入http://go

可以看到,效果和访问http://localhost:3000是完全一致的,同时我们抓取到了所有本机服务接口流量:

为什么可以这么神奇呢?

这里简单解释下。在Web代理模式下,终端并不会做域名DNS解析,而是将域名发送给代理服务器,代理服务器负责域名DNS解析并连接到真正的服务器。Reqable代理服务器并没有解析go这个域名,而是直接去访问了localhost:3000

在这种模式下,我们还可以再进行一些深入的拓展。

假如说,我们希望在真实手机上访问PC本地部署的服务。一种做法是,将在PC上将本机服务部署到0.0.0.0,监听所有的连接,然后通过访问PC本机的IP地址+端口号进行访问,例如http://192.168.1.2:3000,但是很多时候重新部署终归麻烦了点,终端访问输入IP和端口号的体验也不好。

这时候,我们还可以利用Reqable的镜像功能进行远程访问。将手机的Wifi配置代理到Reqable的代理服务器,例如主机名192.168.1.2和端口9000。手机端浏览器输入http://go,便可以访问部署在localhost:3000上面的服务了。

当然,这种场景下同样可以在Reqable中抓取到所有访问流量。

结尾

以上两种用途并不是全部,也许还有更多新的使用方式等待探索。我们也将继续完善Reqable的功能,精益求精,更进一步。如果您觉得有帮助,可以通过订阅来支持我们!

感谢阅读,再见!