在编写网络爬虫时,第一步(也是极为关键一步)就是对网络的请求(request)和回复(response)进行分析,寻找其中的规律,而后才能经过网络爬虫进行模拟。浏览器大多也自带有调试工具能够进行抓包分析,可是浏览器自带的工具比较轻量,复杂的抓包并不支持。且有时候须要编写手机APP爬虫,这时候就必须须要用到其余的专业抓包工具,例如本篇介绍的Fiddler。web
Fiddler是位于客户端和服务器端的HTTP代理,也是目前最经常使用的http抓包工具之一,它可以记录客户端和服务器之间的全部 HTTP请求,能够针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至能够修改服务器返回的数据,功能很是强大,是web调试的利器。chrome
固然,除了Fiddler以外,抓包工具还有Firebug、Wireshark、Httpwatch等,为何咱们要选择fiddler呢?缘由以下:浏览器
(1)Firebug虽然能够抓包,可是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug经常是须要“无刷新修改”,若是刷新了页面,全部的修改都不会保存。缓存
(2)Wireshark是通用的抓包工具,可是比较庞大,对于只须要抓取http请求的应用来讲,彷佛有些大材小用,总有一点杀鸡用牛刀的感受。安全
(3)Httpwatch也是比较经常使用的http抓包工具,可是只支持IE和firefox浏览器(其余浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,彷佛稍显无力,而Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何可以设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序均可以使用 Fiddler。服务器
Fiddler界面以下:网络
Fiddler界面左侧的小窗口列表展现的是全部Fiddler抓取的包,各个包每一个字段还有图标的含义以下表所示:ide
数据包属性第一列的图标含义以下表所示:工具
Fiddler界面右侧是用来显示选中数据报的详细信息,上半部分显示的是数据报的请求信息,下半部分显示的是回复信息:网站
Fiddler打开后,会自动将浏览器代理设置为“127.0.0.1:8888”,关闭时自动修改成原来的代理,这一点上Fiddler仍是比较方便的。固然你也能够手动设置浏览器代理。开始抓包是必须确保猜到了file下的Capture Traffic是勾选上的,固然也能够经过下方的Capturing按钮开启或关闭。
打开后,Fiddler会自动捕获全部HTTP会话信息。
完成上述设置以后能够捕获HTTP协议下的会话信息,但如今的不少网站都采用HTTPS协议,用Fiddler不会就会出问题。百度首页采用的就是HTTPS协议,以下图所示,当咱们尝试使用Fiddler不会访问百度首页时,出现捕获失败:
因此,如果要捕获HTTPS协议会话信息,要进行进一步的配置。配置过程以下:
第一步:打开Tools – Options,而后将弹出窗口内HTTPS选项下的全部可选项都勾选上。
有的网上教程说到此点击OK就能够了,但事实证实,若是就设置到这一步,打开HTTPS网页会失败,出现警告“您的链接并不安全”,以下图所示。因此还要进行第二步操做。
第二步:仍是在第一步中打开的弹出窗口内,点击action,而后选择第二项,将证书处处到桌面。
第三步:打开firefox浏览器,选项-隐私与安全,在最下面找到证书设置项,点击“查看证书”,导入在第二步中处处到桌面的证书,勾选两个信任以后确认退出。
此时,再次打开百度首页,查看Fiddler捕获的信息,发现能够正常访问百度,且Fiddler没有报警报信息,且成功捕获以下所示:
除了采集电脑浏览器的网页会话外,Fiddler还能采集手机APP的会话信息。固然,这仍是须要通过一番设置才行。步骤以下:
第一步:用电脑开启一个无线网(360WiFi、猎豹wifi等均可以实现),而后让手机经过电脑开启的无线网上网。
第二步:依次点击打开Tools-Options-Connections,而后勾选第二项“Allow remote compute to connect”。
第三步:到手机中将手机的网络代理改成电脑的fiddler。首先查看电脑的ip地址,而后在手机中一次打开“设置-无线和网络-wlan”,链接上电脑上刚建立的无线网,而后长按该无线网,依次点击“修改网络-显示高级设置-代理-手动”,将服务器主机名设置为电脑的ip地址,端口设置为8888。以下图所示:
设置好后,咱们Fiddler就能够成功捕获手机APP的会话信息了。
当咱们打开Fiddler进行会话捕获时,在默认状况下,Fiddler会不会全部的会话,这样就形成不会的会话过多,不利于咱们分析,这时候咱们能够用到Filters功能进行会话过滤。Filters三种过滤模式供选择:
若是要设置多个域名,域名之间用分号分开。切记,选好后要点击Actions按钮,而后点击Runfiltersets now让设置生效。若是咱们只想显示百度和CSDN的会话信息,设置过程以下图所示:
Fiddler是一个功能强大的网络抓包工具,本文对如何用Fiddler抓取HTTP、HTTPS、手机APP会话数据报介绍了,另外还补充介绍了数据包过滤的功能。固然,Fiddler的功能远不止这些,不过本文介绍的操做用于通常的网络爬虫数据包分析足以。