几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的操作界面,因此这种抓包方式也被称为"控制台抓包"。本节以Chrome浏览器为例进行抓包演示。 控制台抓包指的是利用浏览器开的发者调试工具抓取客户端与后端服务器交互的数据,它能够将网络传输中发送与接收的数据进行截获、重发和编辑。 控制台抓包非常适合于POST请求类型。我们知道,POST请求使用Form表单向服务器提交数据,通过抓包可以获取POST请求体的数据以及相应参数,从而对响应内容进行分析。下面以有道翻译(http://fanyi.youdao.com/)为例,讲解如何进行控制台抓包。控制台界面 关于开发者调试工具,您应该不会感到陌生,它除了有检查网页结构、元素构成的功能外,还有许多其他重要功能,比如抓取数据包。下面对如何抓包做重点介绍。 首先访问有道翻译网站,然后使用快捷键F12打开控制台,并找到Network选项卡,最后在有道翻译的输入框内输入"helloworld"进行翻译,控制台主界面如下所示: 下面对上图1中控制台的常用选项做简单介绍: 1)NetWork 该选项主要用于抓取网络数据包,比如查看请求信息、响应信息等。它有三个常用选项卡,分别是All、XHR、JS,其作用如下: All:抓取所有的网络数据包 XHR:抓取所有异步加载的网络数据包 JS:抓取所有的JS文件 2)Sources 该选项主要用于查看页面的HTML、JavaScript、CSS的源代码,除此之外,最重要的是它还可以调试JS源代码,可以给JS代码打断点调试,有助于分析爬虫程序中的一些参数。 3)Console 交互模式,能够执行JavaScript代码,一般用于对当前程序中JS代码进行测试,同时也可以查看JavaScript对象,或者调试日志、异常信息等。 4)Application 该选项用于查看、修改本地存储(LocalStorage)以及会话存储(SessionStroage)等,同时它也可以用来查看Cookie信息。 Cookie是网站服务器为了辨别用户身份,而储存在客户端浏览器上一段加密字符串。某些网站需要用户登录后才可以看到相应的数据。如果想要爬取此类网站的数据,就需要使用Cookie模拟用户登录。数据包抓取 有道翻译采用了JS异步加载的方式获取翻译结果,并将该结果渲染到指定的输出框内。所谓异步加载,即不需要刷新页面,就可实现页面的局部渲染。对于这样数据,可以通过NetWork的中XHR选项来抓取数据包,并选择查看最后一个数据包,如下图2所示: 因为异步加载几乎是实时响应的,所以当您在输入框内输入"helloworld"的过程中,每输出一个单词都会向服务器发送一次异步请求(若输出很慢时,一个字母都会发送一次请求),除非您事先将要查询的单词复制好,一次性粘贴到输入框内,只有这样才会得到一个数据包。因此,在这里选择了最后一个数据包进行分析。 接下来,对上图2中常用选项做简单介绍:Headers用来描述整个请求信息,Preview用来对响应内容进行预览,Response用于查看响应内容,Cookies用于查看客户端Cookie信息。 看变化规律 在有道翻译的输入框内多输入几个单词或者汉字,查看FormData的变换规律。你会发现有些参数的值总是变化的,而有些参数值没有变化,比如salt、sign、lts总是变化的,而bv等参数是不变化的,而参数i代表用户输入的单词。如下所示:i: hello world #你输入的单词 salt: 16161405904876 sign: a6f9d57d297acc79f31b049e2a542519 lts: 1616140590487 bv: cda1e53e0c0eb8dd4002cefc117fa58812345复制代码类型:[python] 经过分析,最终您会发现如下规律:lts代表毫秒时间戳;salt和lts之间存在着某种关联,因为两者只有最后一个数字是不同的;而sign对应的值是一个加密后的字符串。在下一节我们将讲解如何破解有道翻译,将它作为API接口实现在线实时翻译。 抓包是分析请求、响应数据,以及监视HTTP(S)通信的常用方法,它能够帮助我们明确要请求的URL、请求参数/参数值、Cookies,以及其他响应信息,这对于构建POST请求方法十分重要。 除了使用浏览器自带的调试工具外,您也可以使用Fiddler抓包工具,这款软件不仅适用于Web抓包,同样也适用于手机移动端抓包, 开课吧广场-人才学习交流平台