Fiddler是一个常见的抓包分析软件,同时我们可以利用它详细地对HTTP请求进行分析,并模拟对应的HTTP请求。

为什么使用Fiddler软件?

网络爬虫是自动爬取网页的程序,在爬取的过程中必然涉及客户端和服务器端之间的通信,自然也需要发送一些HTTP请求,并接收服务器返回的结果。在一些稍复杂的网络请求中,我们直接看网址变化是看不出规律的,此时如果要进行自动化爬取网页,就必须要通过程序构造这些请求,而通过程序构造这些请求,就必须首先分析这些请求的规律。所以此时我们要使用工具截获这些请求,对其分析,这个过程如果使用抓包软件配合进行,则会变得更加轻松。

Fiddler的基本原理

在下图可以看出,如果没有Fiddler,本地应用如果要与服务器进行通信,可以直接向服务器发送Request请求,待服务器处理之后将处理结果返回本地,本地应用接收响应response。

如果有Fiddler,本地应用与服务器之间所有的Request和Response都将经过Fiddler,由Fiddler进行转发,可以看出,此时Fiddler以代理服务器的方式存在。由于所有的网络数据都会经过Fiddler,自然Fiddler能够截获这些数据,实现网路数据的抓包。

Fiddler的基本界面

在下图中,(1)处指位置为Fiddler的菜单栏,(2)处所指位置为Fiddler的工具栏,(3)处所指为Fiddler的会话列表,我们本地应用与互联网通信的会话信息在此显示,(4)处所指位置是Fiddler的QuickExec命令输入窗口,在此我们可以输入一些Fiddler指令来快速实现某项功能。

Fiddler捕获会话功能

安装完Fiddler后,我们就学习如何使用它捕获浏览器与服务器之间的会话信息。在此以Firefox火狐浏览器为例,让火狐浏览器使用Fiddler作为其代理服务器。设置火狐浏览器的方法如下:

首先点击火狐浏览器的设置,在点击高级,在“高级”中将标签切换成“网络”。

随后在“网络”下方看到“连接”字样“,我们单击”连接“右方的设置,单击后选择”手动配置代理“,并将”HTTP代理“设置为”127.0.0.1“,端口设置为”8888“,因为Fiddler监控的地址是127.0.0.1:8888。设置好之后,点击“确定”。

现在的网站有的使用HTTTP协议,有的使用的是HTTPS协议,如果想让Fiddler能够捕获他们,还需要设置下Fiddler。打开Fiddler,然后单击“Tools”,选择“Fiddler Options”,随后在弹出的界面中选择“HTTPS”标签,将下方选项全部勾选上,配置好之后,现在的Fiddler就能捕获火狐浏览器与服务器之间的HTTTP和HTTPS会话信息了。

任意打开一个网址可以看到一下界面,此时的标签是“Statistics”,显示的是一些页面统计信息。

将标签切换为“Inspectors”,显示的是一些嗅探信息,并且该标签下有很多子标签,比如“Headers”,子标签表示的网页是一些头信息。

使用QuickExec命令行

在Fiddler中我们可以使用命令快速完成一些功能。在Fiddler界面中,会话列表下方有一个输入小框,在此介绍一些常见的Fiddler命令。

1. cls

cls是清屏命令,输入该命令可以清空会话列表的所有会话。有时侯,由于传递的数据增多,在Fiddler会话列表中会出现大量的会话信息,此时界面相对来说较为杂乱,所以可以输入该指令清空会话信息列表。

2. select

通过select命令我们可以选择出某一类型HTTP会话功能,比如想选择出所有的html网页类型的HTTP会话,可以输入命令:select html ,输入命令后回车可以发现。会话列表中所有html类型的会话都已被选中。

如果想选出所有图片类型的会话信息,可以输入命令: select image

3. ?

?命令可以查找出网址中包含某些字符的会话信息,比如“?pic”可以查找出网址中包含“pic”字符串的会话信息。

4.  help命令

help命令可以打开Fiddler官方的使用手册。

最新文章

  1. navigationController 去掉背景图片、去掉底部线条
  2. Android之列表索引
  3. [转载]VIM 教程:Learn Vim Progressively
  4. 实体类的枚举属性--原来支持枚举类型这么简单,没有EF5.0也可以
  5. 使用 xtrabackup 进行MySQL数据库物理备份
  6. 使用Visual Studio 2013 调试 MASM 汇编程序!
  7. 强化一下开源库:Synopse
  8. Quartus II 11.0破发点(不同的是低版本号)
  9. Windows中安装jdk,出现javac不是内部或外部命令 也不是可运行的程序
  10. 在java中使用dom4j包对String格式的xm数据l解析
  11. css块级元素和行内元素详细解析
  12. python并发编程之IO阻塞基础知识点
  13. 2017-12-19python全栈9期第四天第二节之列表的增删查改之按索引改和按切片改
  14. iOS WKWebView (NSURLProtocol)拦截js、css,图片资源
  15. python-django的生命周期
  16. HDU - 4118 Holiday's Accommodation
  17. 5290: [Hnoi2018]道路
  18. JavaScript使用数组
  19. Starling开源手势库AcheGesture
  20. 【Selenium专题】 FAQ_对象识别_Compound class names are not supported

热门文章

  1. slf4j NoSuchMethodError 错误 ---- 版本冲突
  2. JDK1.8 HashMap学习
  3. 实验吧Web-中-让我进去(Hash长度扩展攻击、加盐密码及Linux下hashpump的安装使用)
  4. 卷积神经网络应用于tensorflow手写数字识别(第三版)
  5. Maven - 工作原理
  6. EVANYOU尤大个人网站主页CANVAS三角彩带效果分析学习
  7. 18 12 30 服务器 Django 的初步使用 环境变量的调整
  8. ES6 之 Integer数据类型
  9. 题解 P1019 【单词接龙】
  10. windows 10下的python开发环境