跳至主要內容

前端抓包

Yihui大约 3 分钟

前端抓包

参照收集:

  • https://juejin.cn/post/7140040425129115684
  • https://juejin.cn/post/6844904100996481031

使用场景

主要涉及 Hybrid 开发,涉及到 h5 页面与原生 app 的交互,h5 页面需要与原生打通登录态,以及调用原生app 的接口

抓包原理

能够做什么

  • 分析网络问题

  • 业务分析

  • 分析网络信息流通量

  • 网络大数据金融风险控制

  • 探测企图入侵网络的攻击

  • 探测由内部和外部的用户滥用网络资源

  • 探测网络入侵后的影响

  • 监测链接互联网宽频流量

  • 监测网络使用流量(包括内部用户,外部用户和系统)

  • 监测互联网和用户电脑的安全状态

  • 渗透与欺骗......

作为前端开发者,通常是抓取应用层的 HTTP/HTTPS 的包。

HTTP/HTTPS 抓包原理

思路就是设置一个中间人进程负责抓包,每次目标进程之间的会话都先与中间人进程通信,再进行转发。

HTTP抓包

在 http 标准中,没有对通信端身份验证的标准。对于服务器来说,它接收的 HTTP 请求报文只要格式符合规范,就发送响应报文。

对于客户端来说也是如此,它无法校验服务器的身份,比如它连接的 http://www.jecyu.com 的主机,但由于中间节点的存在,最终连接的可能是 http://www.jerry.com 的主机。

因此,对于 HTTP 抓包,无需做过多的处理,只需要让中间人负责转发客户端和服务端的数据包。

HTTPS 抓包

HTTPS 语义仍然是 HTTP,只不过是在 HTTP 协议栈中 http 与 tcp 之间插入安全层 SSL/TSL

安全层采用对称加密的方式加密传输数据和非对称加密的方式来传输对称密钥,解决 http 数据没有加密、无法验证身份、数据容易纂改三个核心问题。

HTTP + 加密 + 认证 + 完整性保护 = HTTPS

其中验证身份问题是通过验证服务器的证书来实现的,证书是第三方组织(CA 证书签发机构)使用数字签名技术管理的,包括创建证书、存储证书、更新证书、撤销证书。

image-20220921101930945

电脑如何抓手机的包

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

PC 端建立一个服务器中间人进程,伪装为 web 应用的目标服务器。手机端 web 应用发送的请求数据先经过中间人,中间人进行拦截处理再发送给目标服务器。反过来,目标服务器发送的数据包先通过中间人,再由中间人响应给浏览器客户端。

这里要注意的是,无论是个人电脑PC,还是移动端手机,都需要接入互联网网络,可以相互找到对方才能建立通信。

一般对开发来说,个人电脑本地起的服务器进程,在公网上是访问不到的。一般是无线局域网,个人电脑与手机端连接同一个路由器发出的 Wi-Fi,就可以相互通信。

具体步骤:

  1. 在 PC 电脑本地起一个服务器进程,监听一个端口比如 8899
  2. 在手机上连接同一个局域网,配置网络代理,指向 PC 端的 IP 地址和 8899 端口
  3. 这样一来,手机上所有的网络通信都会被先转发到 PC 端的 8899 端口,就可以对数据包进行分析处理

常见工具

Charles www.charlesproxy.com

wireshark www.wireshark.org

whistle https://github.com/avwo/whistle