JS逆向-1-逆向开发环境配置和网络协议基础
一、网络协议&抓包原理
1.1 OSI 概念模型
《计算机网络》一书中对每一层都有深入的讲解(以下为粗解)。
- 应用层:是用户与计算机网络的交互接口。主要解决业务问题。就像你使用的各种软件应用程序(例如浏览器、电子邮件客户端),它直接提供你所需的服务和数据。
- 表示层:负责数据的翻译、加密和压缩。就像翻译器将一种语言转换成另一种语言,或对信息进行加密保护隐私。
- 会话层:会话层负责建立、管理和终止应用程序之间的对话。就像电话客服会管理你的通话,确保你能和客服人员顺利交谈,且对话能正常结束。
- 传输层:传输层负责在两台设备之间可靠传输数据。就像快递服务确保你的包裹完整地从你的家送到另一座城市的朋友家,提供跟踪和确认服务。
- 网络层:网络层负责在不同网络之间传输数据包,并选择最佳路径。就像导航系统会选择最快的路线,把你从一个城市带到另一个城市。
- 数据链路层:数据链路层负责将比特组织成帧,并在同一网络中进行数据传输和错误检测。就像邮差把信件装进信封,并确保信件在同一个小区内的传送是正确的。
- 物理层:物理层负责在设备之间传输原始的比特流(0和1)。它就像电线和灯泡一样,传输和接收电信号或光信号,不关心这些信号的具体内容。
总结:
- 下三层是通信子网,为了联网而附加的通信设备,完成数据的传输功能;
- 高三层统称资源子网,他相当于计算机系统,完成数据的处理等功能;
- 传输层承上启下;
背诵口诀:
物数网传会表应。
1.2 TCP/IP 模型
- 该模型与OSI七层模型唯一的区别就是,OSI的上三层在这个模型中,就是变成了一层应用层而已。
- 爬虫中,关注最多的就是应用层、传输层和网络层。物理层和数据链路层基本接触不到。
1.3 HTTP 请求的经典场景
当一个浏览器发起一个http请求的时候到底发生了什么?
举例,访问http://www.baidu.com的过程如下:
- 对http://www.baidu.com这个网址进行DNS域名解析,得到对应的IP地址。
- 根据这个 IP,找到对应的服务器,这里是负载均衡器IP,经过 lvs、nginx,转发(负载均衡算法)到实际的应用服务器。
- 发起 TCP 的三次握手,建立 TCP 连接后发送请求数据。
- 这个数据的发送要经过网络的TCP/IP模型,从应用层、传输层、网络层、数据链路层和物理层。
- 服务器响应 HTTP 请求,浏览器得到 HTML 代码。
- 浏览器解析 HTML 代码,并请求 HTML 代码中的资源(如 js、css、image 等)。
- 浏览器对页面进行渲染呈现给用户
浏览器负责的工作
1.4 HTTPS
HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
1.5 TCP协议的三次握手和四次挥手
- 无论是连接还是释放都是客户端发起的。
- 详解TCP链接的三次握手和四次挥手的链接:
https://www.cnblogs.com/AhuntSun-blog/p/12028636.html
https://www.cnblogs.com/AhuntSun-blog/p/12037852.html
1.6 报文在抓包的时候是如何产生的
- 这个图就非常详细的介绍了报文是如何产生的以及数据是如何转化的。
- 理解一下的话就跟你网购一件商品一样:1. 你从淘宝上看上了一双鞋子并下单(你打开浏览器输入一个网址并按下了回车);2. 商家找到这双鞋子(服务器找到你要访问的资源);3. 商家开始打包,鞋盒打包(应用层封包)4. 快递员打包(传输层打包);5. 快递站把所有快递扔到一个大麻袋里(网络层、数据链路层打包);6. 装车运输(物理层打包并顺着网线传输数据);7. 反向再来一遍直到你打开鞋盒看到鞋子(本地客户端收到数据之后开始解包,知道你肉眼可见)。举的例子不太好,但是差不多就是这么个意思哈。
抓包工具
- fiddler Windows平台专用抓包软件
- charles macOS 平台下最好用的抓包分析工具之一
- anyproxy 阿里巴巴开源的 HTTP 抓包工具,基于 NodeJS 实现,可以进行二次开发
- Mitmproxy 基于 Python,支持 SSL 的抓包工具。可以使用python代码控制(爬虫的一些很骚的操作都是用该软件实现)
- Wireshark 相对更加底层,更加古老的抓包工具,可以直接从网卡角度抓到包。这个工具不适合于PC爬虫领域(PC 99.999%都是http协议【也就是应用层】)
抓包软件的原理
- 结论:在TCP/IP模型中,Fiddler只能抓到应用层的包。如果想要看到 TCP/UDP、IP 甚至于 mac地址相关的报文,则需要更换抓包工具。这也就是为什么有很多数据包无法被Fiddler/Charles 捕获到的原因
小结
- OSI与TCP/IP 原理
- “三次握手”与“四次挥手”
- Http协议原理
- 抓包工具原理