学习爬虫第一步应该是了解相关的网络协议及各类协议的工作原理。 本文章可以让各位对网络协议有个大体的概念。 如果需要深入研究就需要自行看书和查阅资料了
1- OSI(open system iterconnection Reference Model)概念模型
一种概念模型, 由国际标准化组织提出, 一个试图使各种计算机在世界范围内互连为网络的标准框架。其模型分为七层, 用于报文的传输。
其实真要深入了解OSI模型不是一天两天能搞定的,只能大概理解。 数据通过应用层生成并开始传输, 应用程序对数据进行封装后后传入下一层, 下一层继续封装直到数据链路层, 再由数据链路层转为物理层数据最终实现端到端的通信。
如果想要了解OSI模型详情, 查看此链接
2- TCP/IP五层模型
此模型将OSI模型中的上三层封装成了一层(应用层)。
3- 浏览器发送HTTP请求的典型场景
HTTP请求的步骤比较清晰。 即我们用户界面上看到的内容是由浏览器引擎到渲染引擎再到底层的网络&JS解释器&UI后端等操作组合而来。 其中需要注意的是 在浏览器中有个数据库存在。 例如瑞数。 cookie有个加密参数271位的长度。此时设计一个定时器从浏览器数据库中提取数据添加到cookie的271位后, 使cookie成为变动的值,从而进行加密反爬。
4- HTTPS
https是HTTP通过SSL加密而来。 利用SSL/TLS建立全信道, 加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份验证。具体体现在证书认证, 如果没有证书认证就算截取了HTTPS的报文也无法破译其中的内容。
5- 抓包工具
Fiddler: windows平台专用抓包工具 Charles macOS平台下的抓包工具, 也可用于windows AnyProxy 基于NodeJS实现 Mitmproxy 基于python Wireshark 更底层的抓包工具。可以查看TCP/IP协议下的报文详情
6- 抓包软件原理
总体来说就是, 所有的请求都是由客户端发送给服务端。 所以Fiddler可以模仿客户端发送请求给服务器,在拿到服务器下发给客户端的证书后, 更改证书为自签名证书并且向客服端发送服务端传过来的数据, 再将客户端的对称秘钥处理后返回给服务器, 这样就建立了客户端到服务器间的桥梁。 客户端与服务端的一切交互都会经过Fiddler工具。
note:这里有一点需要注意。 在TCP/IP模型中, Fiddler只能抓到应用层的包。 如果想要看到TCP/UDP,IP甚至于mac地址相关的报文, 则需要更换抓包工具。
|