npm 包 local-mitm 使用教程

阅读时长 5 分钟读完

前言

随着前端技术的发展,越来越多的项目开始采用前后端分离的架构模式。其中,前端工程师需要频繁地调试和排查问题。在前后端分离的情况下,前端工程师通常需要使用代理工具来解决跨域等问题。然而,有些情况下,代理工具并不能满足我们的需求,这时我们需要一种更为灵活的方式来处理 HTTP 请求。这个时候,local-mitm 就能派上用场了。

什么是 local-mitm

local-mitm 是一款基于 Node.js 的本地 HTTP/HTTPS 中间人代理库。它可以将本地浏览器请求发送到远程服务器,并在请求和响应之间插入我们自己的逻辑。通过简单地编写 JavaScript 代码,我们就能够修改请求和响应,模拟网络状况,实现自定义的拦截和响应逻辑等。

local-mitm 的特点如下:

  • 支持 HTTP/HTTPS 请求代理。
  • 支持拦截请求和响应。
  • 可以对请求和响应进行修改,并自定义响应逻辑。
  • 支持请求转发和数据篡改等功能。
  • 支持导入和导出规则,方便分享和重用。
  • 支持自定义中间人证书。

如何使用 local-mitm

安装

使用 local-mitm 需要先安装 Node.js 环境。

在终端中运行以下命令安装 local-mitm:

使用

下面是一个简单的例子:

-- -------------------- ---- -------
----- ---- - ----------------------

----- ---- - -------

-- --------
---------------- -- -
  -- ------------------------------------- -
    --------------------------------- - --------
  -
  -- -------------------------------------- -
    --------------------- - ----------------
  -
---

-- -------
-------------
  ----- -----
  ------- -----
  --------- -------
---

通过上面的代码,我们将监听 8080 端口,同时配置了两个拦截规则:

  • 如果请求 URL 包含 api,则在请求头添加 x-auth 字段,并将其值设为 token
  • 如果请求 URL 包含 auth,则直接返回响应体 authenticated

注意,local-mitm 默认只能拦截 HTTP/HTTPS 请求,如果要拦截 HTTPS 请求,需要引入自己的 CA 证书。上面的例子中,我们通过 sslCaDir 参数指定了证书的存放路径。

API

local-mitm 通过提供一些 API,来帮助我们控制请求和响应的行为。

context

在请求拦截规则中,local-mitm 会将请求上下文和响应上下文封装成一个 context 对象。通过访问 context.requestcontext.response 可以获取请求和响应的相关信息。在请求拦截规则中,我们可以对 context.requestcontext.response 进行修改,来实现自定义的请求和响应处理逻辑。

以下是 context 的常用属性和方法:

  • context.request.url:请求的 URL。
  • context.request.method:请求的 HTTP 方法。
  • context.request.headers:请求的头部信息。
  • context.request.body:请求的主体。
  • context.response.status:响应的 HTTP 状态码。
  • context.response.headers:响应的头部信息。
  • context.response.body:响应的主体。

Mitm(options)

创建一个 Mitm 实例。options 是一个可选的参数,它支持以下字段:

  • port:监听的端口号,默认是 8080
  • silent:是否启用静默模式,默认是 true
  • sslCaDir:CA 证书的存储路径,默认是 os.tmpdir()

mitm.listen(options)

启动代理服务器。options 是一个可选的参数,它支持以下字段:

  • port:监听的端口号,默认是 8080
  • silent:是否启用静默模式,默认是 true
  • sslCaDir:CA 证书的存储路径,默认是 os.tmpdir()

mitm.close()

关闭代理服务器。

mitm.use(handler)

配置请求拦截规则。handler 是一个函数,接收一个 context 参数,用于拦截和处理请求和响应信息。

总结

通过本篇文章的介绍,我们了解了 local-mitm 的特点和使用方法,并提供了一个详细的示例代码。local-mitm 提供了灵活的 HTTP/HTTPS 中间人代理方式,使得我们能够自由地控制请求和响应的过程,从而实现更为精细的网络调试和测试。同时,我们还介绍了有关 Mitm 的 API,以方便读者在实际应用中灵活使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cab81e8991b448e6164

纠错
反馈