浏览器网络请求抓包和数据劫持 - Proxyman

3,314 阅读5分钟

一、前言

工作中,开发时,我们一般会在本地环境打开浏览器的开发者工具来查看网络请求,如下图

image.png

但在一些情况下,我们无法打开浏览器器开发者工具查看,比如

  • 大量请求导致浏览器崩溃,接口数据过期无法查看
  • 点击页面跳转到新开页,新页面的请求无法查看
  • APP、客户端、内置的浏览器
    • 企业微信移动端页面

此时我们就需要利用一些工具协助排查,这里推荐两种抓包方式

proxyman 工具图:

image.png

Fiddler工具图:

image.png

此外还有一些谷歌插件可以用来抓包和过滤请求数据。

抓包工具最主要的作用:

  • 深度分析HTTP/HTTPS网络请求数据
  • 构造HTTP(S)请求
  • 修改请求和返回参数
  • 获取APP的网络请求

二、Proxyman如何使用

我们介绍一下proxyman是如何抓包的,Fiddler用法基本一样

image.png

1、区域介绍

Working Session

抓包分类,这个区域可以快速管理自己的请求来源。

Advanced Filters

筛选抓包类型,可以根据协议类型、返回类型、状态码筛选请求数据。

Customize Layout

自定义操作栏,该区域可以自定义放置自己常用的操作:开始抓包、构建请求、删除请求数据,工具布局选择。

Powerful Debugging

核心区域,用来查看请求,打断点、查看请求相关的数据等

Best-in-class-Request/Response Previewer

请求参数和返回参数

2、Https请求

这里使用的是免费版本,所以对https的抓包限制规则为6个,但配合通配符一般够用了

正常情况下,我们点击请求看到的是下图内容

image.png

但如果你的返回值为:

image.png

在工具栏点击证书,安装证书即可支持https的数据解析

image.png

3、构建接口请求

proxyman可以当作postman使用,不管是直接发起请求还是导出json格式的文件,都非常简单

点击下图的编辑按钮,就可以撰写请求

image.png

录入必要的API和请求参数,就可以请求数据了

image.png

4、请求对比

我们工作中经常会遇到,明明线上是正常的,但是自己的接口请求就不行,很大原因是某个地方写错了,但是我们肉眼却很难识别

我们可以选择任意的两个请求,只需要右键加入对比池子,就可以看到对比效果了。

image.png

对比效果

image.png

三、数据劫持演示

1、断点

点击某个接口:右键 => 工具,或者在工具栏点击工具,可以看到有几个选项卡:断点、本地映射、远程映射、脚本。利用这些工具我们可以实现对请求数据或返回数据的劫持。

image.png

1、添加断点规则,可以使用通配符

image.png

2、刷新页面再次请求接口,当前接口将会在Request/Response阶段会暂停,此时我们可以修改返回参数

image.png

点击Execute,即可看到页面的数据变成了修改后的数据

image.png

image.png

2、本地映射

同样的做法,我们找到一个请求,右键选择本地映射,然后配置匹配规则,然后修改请求返回值,即可修改接口返回数据

image.png

3、脚本

上面的断点和本地映射修改请求和返回值是固定的,这里的脚本提供了更加灵活的能力,当我们构建脚本规则后,可以通过js来处理请求的值和返回的数据信息。

配置入口

image.png

通过js修改返回值

image.png

四、实现原理

当Proxyman 配置为代理服务器时,它会在您的设备和目标服务器之间充当中间人的角色。

Proxyman 会在指定的端口上进行监听,等待您的设备发起连接。一旦设备发起连接,Proxyman 就会接收到设备发送的网络数据包。

对于 HTTP(超文本传输协议)和 HTTPS(安全超文本传输协议)请求,Proxyman 能够识别和解析数据包中的各个部分。例如,对于 HTTP 请求,它可以解析出请求方法(如 GET、POST、PUT 等)、请求的统一资源标识符(URI)或 URL、请求头中包含的各种信息(如用户代理、接受的内容类型、授权信息等)以及请求体中的数据(如果存在)。

对于 HTTPS 流量,Proxyman 通常需要您在设备上安装信任的证书,以能够解密和查看加密的数据包内容。

在解析完数据包后,Proxyman 会将这些信息以一种易于理解和查看的形式呈现给用户。这包括以结构化的方式展示请求和响应的各个部分,提供搜索、过滤、标记等功能,以便用户能够快速定位和分析感兴趣的数据包。

此外,Proxyman 还可能会记录数据包的时间戳、源 IP 地址和目标 IP 地址等信息,帮助用户了解网络通信的时序和路径。

通过对网络数据包的拦截、解析和展示,Proxyman 为用户提供了深入了解网络应用通信过程的工具,有助于发现潜在的问题,如错误的请求、响应延迟、数据格式错误等,并对网络应用的性能优化、安全检测和故障排查提供有力的支持。