#青训营笔记创作活动#
1月19日 Day6

一项技能——抓包

1.抓包的概念
抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。为前端开发者,通常是抓取应用层的 HTTP/HTTPS 的包。

2.HTTP抓包原理
HTTP/HTTPS 是应用层使用的通信协议,常见的应用层体系结构是客户端-服务器体系。抓包的思路就是设置一个中间进程负责抓包,每次目标进程之间的会话都会先于中间进程通信,从而实现抓包。
在HTTP标准中,没有对通信端身份验证的标准。对于服务器来说,它接收的 HTTP 请求报文只要格式符合规范,就发送响应报文。对于客户端来说也是如此,它无法校验服务器的身份。因此,对于 HTTP 抓包,无需做过多的处理,只需要让中间进程负责转发客户端和服务端的数据包。
3.HTTPS抓包原理
在HTTPS协议下抓包相比HTTP要复杂一些,因为HTTP是明文传输,容易受到中间人攻击,不安全。HTTPS语义仍然是 HTTP,只不过是在 HTTP 协议栈中 http 与 tcp 之间插入安全层 SSL/TSL。安全层采用对称加密的方式加密传输数据和非对称加密的方式来传输对称密钥,所以想用中间进程来抓包,需要设置在HTTPS加密通信之前,其中很重要的一步是浏览器的根证书校验。
具体中间的细节参考文末的链接,这里只给出整体流程。
4.电脑抓手机的包
PC 端建立一个服务器中间进程,伪装为 web 应用的目标服务器。手机端 web 应用发送的请求数据先经过中间进程,中间进程进行拦截处理再发送给目标服务器。反过来,目标服务器发送的数据包先通过中间进程,再由中间进程响应给浏览器客户端。这里要注意的是,无论是个人电脑PC,还是移动端手机,都需要接入互联网网络,可以相互找到对方才能建立通信。
一般对开发来说,个人电脑本地起的服务器进程,在公网上是访问不到的。一般是无线局域网,个人电脑与手机端连接同一个路由器发出的 Wi-Fi,就可以相互通信。

5.抓包工具
whistle是基于 Node 实现的跨平台抓包免费调试工具,其功能很强大,而且完全跨平台,操作简单,可以实现设置代理,反向代理,抓包重放等功能。具体关于whistle的操作可以参考文末的链接。
展开
评论