前端请求调试工具推荐

简介: 首先从官网下载并安装Proxyman 打开软件,你可以看到主界面上会有很多个请求依次弹出

Proxyman


安装

首先从官网下载并安装Proxyman

1682523437(1).png

打开软件,你可以看到主界面上会有很多个请求依次弹出

1682523465(1).png

这些就是我们电脑发出的请求,并且你可以从client一栏识别出是哪一个app发出的请求


捕获localhost


在开发中我们一般会在localhost调试本地程序,但是你会发现无论怎么刷新都无法在proxyman中发现localhost的请求

这是因为proxyman默认屏蔽了localhost的所有流量,那我要是非要看localhost呢?

当然也有解决办法,有两种方案可以解决:

替换URL

使用localhost.proxyman.io代替localhost。比如你的web地址是http://localhost:8001开启proxyman客户端之后在浏览器中访问http://localhost.proxyman.io:8001就可以监控到本地的流量了。proxyman会把localhost.proxyman.io的DNS设置为127.0.0.1

修改hosts

改写本地的hosts文件

$ sudo vim /etc/hosts
复制代码

添加hosts记录

127.0.0.1 proxyman.local #ipv4
 ::1 proxyman.local # ipv6
复制代码

然后保存,使用proxyman.local替换原来的localhost(同方法一)

可以看到本地的流量都被抓取到了(方法一必须在proxyman客户端开启时才会生效)

1682523503(1).png


改写响应


改写响应可能会需要安装证书,这个客户端会弹出提示,根据提示安装即可

找到我们需要改写的请求,右键点击依次选择:Tools->Breakpoint,此时会弹出一个窗口,取消request的勾选,点击Done

1682523534(1).png

然后刷新页面,再次发送刚才的请求,等待接收到服务端响应之后会弹出一个窗口,点击body修改响应,然后点击右下角Execute

1682523553(1).png

回到页面就可以看到,响应已经被我们修改成功了

1682523576(1).png


Requestly

Requestly 是一款 chrome 浏览器的插件,可以去 chrome 应用商店下载,需要一点特殊的手段(科学)。

安装完成之后点击插件,点击 open app 进入到应用界面,创建于第一个规则,这里选择Modify API Response

1682523604.png

我们来拦截一下mock 数据试试,原数据长这样

1682523623(1).png

渲染效果如下

1682523647(1).png

我们将其 total 修改为 9

1682523667(1).png

可以看到 total 已经成功被修改

这是返回静态数据,还可以通过JS Script 的形式返回数据,我们来修改一下刚才的规则,先看一下可以拿到哪些数据

function modifyResponse(args) {
   const {method, url, response, responseType, requestHeaders, requestData, responseJSON} = args;
   // Change response below depending upon request attributes received in args
   console.log('method', method)
   console.log('url', url)
   console.log('response', response)
   console.log('responseType', responseType)
   console.log('requestHeaders', requestHeaders)
   console.log('requestData', requestData)
   console.log('responseJSON', responseJSON)
   return response;
 }
复制代码

可以从控制台打印信息中看到这几个字段的含义

  • method:请求方法
  • url:请求地址
  • response:响应体(Text 类型)
  • responseType:响应数据的类型
  • requestHeader:请求头
  • requestData:请求携带的数据
  • responseJSON:响应体(格式化的 JSON)

1682523692(1).png

我们可以通过逻辑来控制返回的数据

function modifyResponse(args) {
   const {method, url, response, responseType, requestHeaders, requestData, responseJSON} = args;
   // Change response below depending upon request attributes received in args
   const {code, data} = responseJSON
   if(code === 0) {
     data.total = 9
     return JSON.stringify(responseJSON)
   } else 
     return response;
 }
复制代码

这样相对于直接返回静态数据来说可以只在接收正常数据的时候修改数据,如果返回异常可以将异常原样返回。


XSwitch


同样作为浏览器插件,Requestly 只能修改响应的数据,XSwitch 可以更改请求的目标,这在我们的开发中也是很有用的,可以将线上的请求转发到本地的后端服务,用于调试后端的 bug。

首先同样需要去 Chrome 商店安装插件,安装完成之后打开面板可以看到很简洁的一个面板,使用起来也行对比较简单。

1682523727(1).png

proxy 字段用来做转发,会将每一个子数组的第一项转发到第二项,如果需要处理跨域可以在 cors 字段中添加目标域名。

值得一提的是 proxy 支持正则匹配

{
   "proxy": [
     [
       // 原始替换地址
       "https://www.a.com/(.*)",
       // 替换后的地址
       "https://localhost:8080/$1",
     ],
   ],
 }


相关文章
|
20小时前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
20小时前
|
JSON 前端开发 Java
前端请求SpringBoot接口出现Required request body is missing
前端请求SpringBoot接口出现Required request body is missing
40 2
|
7月前
|
前端开发 开发工具
前端基础 - 网页调试工具NetWork
前端基础 - 网页调试工具NetWork
79 0
前端基础 - 网页调试工具NetWork
|
7月前
|
前端开发 安全 程序员
测试大姐趁我下班点又提了个bug!前端你咋多个options请求?
测试大姐趁我下班点又提了个bug!前端你咋多个options请求?
47 0
|
20小时前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
98 7
|
20小时前
|
前端开发 安全 Java
springboot集成springdoc-openapi(模拟前端请求)
springboot集成springdoc-openapi(模拟前端请求)
|
20小时前
|
存储 前端开发 JavaScript
前端面试:如何实现并发请求数量控制?
前端面试:如何实现并发请求数量控制?
100 0
|
20小时前
|
负载均衡 前端开发 Java
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
字节后端面试题(前端发送请求到后端的过程(MVC),网关gateway作用,怎么解决跨域,各微服务组件作用)
149 0
|
20小时前
|
前端开发 JavaScript 网络协议
前端中 JS 发起的请求可以暂停吗?
前端中 JS 发起的请求可以暂停吗?
|
20小时前
|
前端开发 JavaScript 网络协议
【面试题】前端中 JS 发起的请求可以暂停吗?
【面试题】前端中 JS 发起的请求可以暂停吗?