前端人必须掌握的抓包技能

244 阅读3分钟

1. 抓包的原理

2.1 什么是抓包?

抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,通过抓包可以:

  • 分析网络问题
  • 业务分析
  • 分析网络信息流通量
  • 网络大数据金融风险控制
  • 探测企图入侵网络的攻击
  • 探测由内部和外部的用户滥用网络资源
  • 探测网络入侵后的影响
  • 监测链接互联网宽频流量
  • 监测网络使用流量(包括内部用户,外部用户和系统)
  • 监测互联网和用户电脑的安全状态
  • 渗透与欺骗
  • ... 回顾下计算机网络知识,数据在网络上是以很小的的单位传输的,帧通过特定的称为网络驱动程序的程序进行成型,然后通过网卡发送到网线上,通过网线到达目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。在这个传输和接收的过程,就可以使用抓包工具(Sniffers)进行抓包,作为前端开发者,通常是抓取应用层的 HTTP/HTTPS 的包

2.2 电脑如何抓手机的包

要想通过电脑端获取手机 Web 应用的数据包, 就需要中间人策略。

  • PC 端建立一个服务器中间人进程,伪装为 web 应用的目标服务器。手机端 web 应用发送的请求数据先经过中间人,中间人进行拦截处理再发送给目标服务器。反过来,目标服务器发送的数据包先通过中间人,再由中间人响应给浏览器客户端。
  • 这里要注意的是,无论是个人电脑PC,还是移动端手机,都需要接入互联网网络,可以相互找到对方才能建立通信。
  • 一般对开发来说,个人电脑本地起的服务器进程,在公网上是访问不到的。一般是无线局域网,个人电脑与手机端连接同一个路由器发出的 Wi-Fi,就可以相互通信。
  • image.png
  1. 在 PC 电脑本地起一个服务器进程,监听一个端口比如 8899
  2. 在手机上连接同一个局域网,配置网络代理,指向 PC 端的 IP 地址和 8899 端口
  3. 这样一来,手机上所有的网络通信都会被先转发到 PC 端的 8899 端口,就可以对数据包进行分析处理
  4. 拿访问 youtuBe 来说,比如电脑已经使用【服务器软件】成功访问,此时只要手机配置代理指向电脑 ip 地址和指定端口,手机就可以同样访问 youtuBe了。

3. 抓包工具 whistle

3.1 whistle 是什么

Whistle 是基于 Node 实现的跨平台抓包免费调试工具,其主要特点:

  1. 完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统
  2. 功能强大:
  • 支持作为 HTTP、HTTPS、SOCKS 代理及反向代理
  • 支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
  • 支持重放及构造 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
  • 支持设置上游代理、PAC 脚本、Hosts、延迟(限速)请求响应等
  • 支持查看远程页面的 console 日志及 DOM 节点
  • 支持用 Node 开发插件扩展功能,也可以作为独立 npm 包引用
  1. 操作简单
  • 直接通过浏览器查看抓包、修改请求
  • 所有修改操作都可以通过配置方式实现(类似系统 Hosts),并支持分组管理
  • 项目可以自带代理规则并一键配置到本地 Whistle 代理,也可以通过定制插件简化操作