如何抓包/代理node服务的request

1,854 阅读1分钟

前言

此文默认看官都已经懂得如何使用抓包工具了,如果不懂抓包工具的作用的话,可以先去其他地方了解一下

背景

当我们开发node服务,或SSR项目时,我们经常需要调下游接口。在开发过程中,下游接口会先部署到测试环境,我们访问下游测试环境时需要给请求增加请求头。我们通过抓包的方式,很容易给请求增加请求头

目前痛点

相信会用抓包工具的同学,去抓包项目时,会发现,只能抓到前端(浏览器发出)的包,抓不到node服务发出的包

抓不到node服务发出包,我们就无法代理增加请求头 等

解决办法

其实也很简单:为你的node服务的启动,增加4个环境变量

  • ENABLE_FETCH_PROXY=true (可以抓到 node-fetch 的请求)
  • http_proxy=http://127.0.0.1:8899 (8899指的是代理工具的端口号,比如whistle的默认是8899)
  • https_proxy=http://127.0.0.1:8899
  • NODE_TLS_REJECT_UNAUTHORIZED=0

例如:

// package.json
{
    "scripts": {
        // 假设原本是这么启动的:
        "dev": "cross-env NODE_ENV=development HOST=0.0.0.0 PORT=1111 nodemon server/index.js --watch server",
        // 增加3个代理后:  
        "dev-proxy": "cross-env ENABLE_FETCH_PROXY=true http_proxy=http://127.0.0.1:8899 https_proxy=http://127.0.0.1:8899 NODE_TLS_REJECT_UNAUTHORIZED=0 NODE_ENV=development HOST=0.0.0.0 PORT=1111 nodemon server/index.js --watch server",
    }
}

码字不易,点赞鼓励!