1.简介

抓包是指对网络传输中发送与接收的数据包进行拦截、重发、编辑和转存的操作。

在开发网络爬虫时,给定URL,开发者必须清楚客户端是如何向服务器发送请求的,以及客户端发出请求后服务器返回的数据是什么。只有了解这些内容,开发者才能在程序中拼接URL,针对服务返回的数据类型制定具体的解析策略。因此,网络抓包是实现网络爬虫必不可少的技能之一,也是网络爬虫开发的起点。

例如,采集药监局国产药品数据时,在浏览器中输入​​国产药品列表页URL​​​,如图1所示。点击药品信息,浏览器显示出药品数据详情,如图2所示,但是URL却没有发生变化。原因是单击药品信息时,客户端向服务器发送了其它请求,而该请求的URL并不是浏览器上显示的,而是下面这个地址​​国产药品详情URL​​。

2.7 网络抓包_数据


2.7 网络抓包_登录页面_02


基于网络抓包很容易捕获浏览器每一步操作对应的请求信息以及响应信息。

2.使用情境
对于很多初学者而言,由于不了解网络抓包,而直接去请求某个URL,可能导致无法获取自己想要的数据。在此,对网络抓包的使用情境做如下说明。

  • 直接请求URL能够获得数据时,可以不用进行网络抓包分析。但当使用程序直接请求URL无法找到网页中的数据时(多为JSON),则需要采取网络抓包措施,获取数据对应的真实请求URL。
  • 执行表单请求时,需要采取网络抓包措施,如需模拟登录网站才能获得的数据。基于网络抓包,可以捕获表单请求提交的详细参数(如用户名、密码等)。
  • 将捕获的请求信息添加到程序中,如利用网络抓包获取一些浏览器请求网页的头信息和请求方法等。

3.谷歌浏览器抓包

网络抓包分析的主要内容是报文信息,即HTTP请求方法、信息头、响应状态、响应状态码、响应正文内容和表单的提交参数等。多数浏览器,都具有HTTP抓包的功能,下面使用谷歌浏览器进行操作,来分析阿里云网站的登录页面,如下图所示。

2.7 网络抓包_网络抓包_03


步骤1:在谷歌浏览器中,右击“检查”按钮,在弹出框中单击“Network”,勾选“Preserve log”,如下图所示。刷新页面,并在账户登录页面输入用户名和密码。

2.7 网络抓包_数据_04


步骤2:单击“登录”按钮,执行网络抓包。在“Name”栏中找到与登录提交参数有关的请求。如下图所示,网络抓包得到的登录过程中,表单提交的内容,同时,在“General”栏中可以看到具体的请求URL。

2.7 网络抓包_登录页面_05


在网络爬虫模拟登录过程中,需要提交这些参数。所以,首先需要获取登录页面对应的具体参数值。要是密码采用了加密,则需要使用相应的加密算法获得加密后的密码。其次,拼接登录的URL。最后,提交所有参数以及参数值便可以达到模拟登录网站的目的。