往期内容提要:

  • [Python爬虫] 一、爬虫原理之HTTP和HTTPS的请求与响应
  • [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式
  • [Python爬虫] 三、数据抓取之Requests HTTP 库

Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP请求。 点此下载 Fiddler

一、HTTP代理神器Fiddler工作原理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888.


二、Fiddler抓取HTTPS设置

(1) 安装并启动Fiddler;
(2) 对Fiddler进行设置:

  • 打开工具栏->Tools->Options->HTTPS选项卡;
  • 选中Capture HTTPS CONNECTs (捕捉HTTPS连接);
  • 选中Decrypt HTTPS traffic(解密HTTPS通信);/li>
  • 另外我们要用Fiddler获取本机所有进程的HTTPS请求,所以中间的下拉菜单中选中...from all processes (从所有进程);
  • 选中下方Ignore server certificate errors(忽略服务器证书错误);

  • 为 Fiddler 配置Windows信任这个根证书解决安全警告:Trust Root Certificate(受信任的根证书);

(3) Fiddler 主菜单 Tools -> Options…-> Connections选项卡
  • 选中Allow remote computers to connect(允许远程连接);
  • Act as system proxy on startup(作为系统启动代理);

(4) 重启Fiddler,使配置生效(很重要)。

三、Fiddler 如何捕获Chrome的会话

设置好后,本机HTTP通信都会经过127.0.0.1:8888代理,会被Fiddler拦截到。因此运行即可捕获,如无法正常捕获:

(1) 安装SwitchyOmega 代理管理 Chrome 浏览器插件
(2) 如图所示,设置代理服务器为127.0.0.1:8888
(3) 通过浏览器插件切换为设置好的代理


四、Fiddler界面


主界面中主要包括四个常用的块:

1.Fiddler的菜单栏,上图绿色部分。包括捕获http请求,停止捕获请求,保存http请求,载入本地session、设置捕获规则等功能。

2.Fiddler的工具栏,上图红色部分。包括Fiddler针对当前view的操作(暂停,清除session,decode模式、清除缓存等)。

3.web Session面板,上图黄色区域,主要是Fiddler抓取到的每条http请求(每一条称为一个session),主要包含了请求的url,协议,状态码,body等信息,详细的字段含义如下图所示:


4.详情和数据统计面板。针对每条http请求的具体统计(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)和数据包分析。

  • 如inspector面板下,提供headers、textview、hexview,Raw等多种方式查看单条http请求的请求报文的信息;其分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。JPG 格式使用 ImageView 就可以看到图片,HTML/JS/CSS 使用 TextView 可以看到响应的内容。Raw标签可以查看原始的符合HTTP标准的请求和响应头。Auth则可以查看授权Proxy-Authorization 和 Authorization的相关信息。Cookies标签可以看到请求的cookie和响应的set-cookie头信息。
  • 而composer面板下,则可以模拟向相应的服务器发送数据的过程,也可以粘贴一次请求的raw http headers,达到模拟请求的目的。
  • Filter标签则可以设置Fiddler的过滤规则,来达到过滤http请求的目的。最简单如:过滤内网http请求而只抓取internet的http请求,或则过滤相应域名的http请求。Fiddler的过滤器非常强大,可以过滤特定http状态码的请求,可以过滤特定请求类型的http请求(如css请求,image请求,js请求等),可以过滤请求报文大于或则小于指定大小(byte)的请求。
  • AutoResponder面板是Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。
请求 (Request) 部分
  1. Headers —— 显示客户端发送到服务器的 HTTP 请求的 header,显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等。
  2. Textview —— 显示 POST 请求的 body 部分为文本。
  3. WebForms —— 显示请求的 GET 参数 和 POST body 内容。
  4. HexView —— 用十六进制数据显示请求。
  5. Auth —— 显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息.
  6. Raw —— 将整个请求显示为纯文本。
  7. JSON - 显示JSON格式文件。
  8. XML —— 如果请求的 body 是 XML 格式,就是用分级的 XML 树来显示它。
响应 (Response) 部分
  1. Transformer —— 显示响应的编码信息。
  2. Headers —— 用分级视图显示响应的 header。
  3. TextView —— 使用文本显示相应的 body。
  4. ImageVies —— 如果请求是图片资源,显示响应的图片。
  5. HexView —— 用十六进制数据显示响应。
  6. WebView —— 响应在 Web 浏览器中的预览效果。
  7. Auth —— 显示响应 header 中的 Proxy-Authorization(代理身份验证) 和 Authorization(授权) 信息。
  8. Caching —— 显示此请求的缓存信息。
  9. Privacy —— 显示此请求的私密 (P3P) 信息。
  10. Raw —— 将整个响应显示为纯文本。
  11. JSON - 显示JSON格式文件。
  12. XML —— 如果响应的 body 是 XML 格式,就是用分级的 XML 树来显示它 。

五、使用Fiddler进行HTTP断点调试

(1)Fiddler可以做到:
  1. 修改HTTP请求头信息。例如修改请求头的UA, Cookie, Referer 信息,通过“伪造”相应信息达到达到相应的目的(调试,模拟用户真实请求等)。

  2. 构造请求数据,突破表单的限制,随意提交数据。避免页面js和表单限制影响相关调试。

  3. 拦截响应数据,修改响应实体。

(2)两种方式设置断点:
  • 方式一:fiddler菜单栏->rules->automatic Breakpoints->选择断点方式,这种方式下设定的断点会对之后的所有HTTP请求有效。

有两个断点位置:

a. before response。也就是发送请求之后,但是Fiddler代理中转之前,这时可以修改请求的数据。

b.after response。也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前。这时可以修改响应的结果。

  • 方式二:命令行下输入。Bpafter xxx或者bpv,bpu,bpm等设置断点(详见后文)。
(3)三种方式终止断点:
  1. 在inspector界面点击“run complete“即会终止本次HTTP请求的断点。

  2. 输入go命令,也会使得当前的请求跳过断点。

  3. 在rules->auto breakpoint中disabled断点即可。


六、Fiddler内置命令

Fiddler提供了一系列内置的函数用于筛选和操作session。输入命令的位置在web session管理面板的下方(通过快捷键alt+q可以focus到命令行)。

命令名称 作用
select 选择所有相应类型(指content-type)为指定类型的HTTP请求
allbut 选择所有响应类型不是给定类型的HTTP请求
?text 选择所有 URL 匹配问号后的字符的全部 session
>size <size 选择响应大小大于某个大小(单位是b)或者小于某个大小的所有HTTP请求
=status 选择响应状态等于给定状态的所有HTTP请求。
@host 选择包含指定 HOST 的全部 HTTP请求。例如:@csdn.net
Bpafter Bps, bpv, bpm, bpu 批量设置断点

特别说明:

(1) select命令

选择所有相应类型(指content-type)为指定类型的HTTP请求,如选择图片,使用命令select image.而select css则可以选择所有相应类型为css的请求,select html则选择所有响应为HTML的请求。

(2) allbut命令

allbut命令用于选择所有响应类型不是给定类型的HTTP请求。如allbut image用于选择所有相应类型不是图片的session(HTTP请求),该命令还有一个别名keeponly.需要注意的是,keeponly和allbut命令是将不是该类型的session删除,留下的都是该类型的响应。因此,如果你执行allbut xxxx(不存在的类型),实际上类似与执行cls命令(删除所有的session, ctrl+x快捷键也是这个作用)。

(3) Bpafter, Bps, bpv, bpm, bpu

这几个命令主要用于批量设置断点:

Bpafter xxx: 中断 URL 包含指定字符的全部 session 响应;

Bps xxx: 中断 HTTP 响应状态为指定字符的全部 session 响应;

Bpv xxx: 中断指定请求方式的全部 session 响应;

Bpm xxx: 中断指定请求方式的全部 session 响应。等同于bpv xxx;

Bpu xxx:与bpafter类似。

当这些命令没有加参数时,会清空所有设置了断点的HTTP请求。


后期内容提要:

  • [Python爬虫] 五、数据提取之正则表达式re模块
  • [Python爬虫] 六、数据提取之XPath与lxml类库
  • [Python爬虫] 七、结构化数据提取之JSON与JsonPATH
  • [Python爬虫] 八、动态HTML处理之Selenium与PhantomJS
  • [Python爬虫] 九、机器视觉与机器图像识别之Tesseract
  • [Python爬虫] 十、Scrapy 框架

如果您有任何疑问或者好的建议,期待你的留言与评论!

[Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler相关推荐

  1. Python爬虫——Ajax数据爬取

    前言 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但使用requests得到的结果并没有.这是因为在requests获得 ...

  2. python爬虫之数据爬取项目实例

    python爬虫之数据爬取项目实例 一.scrapy数据爬取 (一)前期准备 (二)目标: (三)步骤: 1.创建项目: 2.创建爬虫: 3.打开项目: 4.创建启动程序: 5.编写爬虫: 6.启动测 ...

  3. python爬虫四:爬取贴吧数据

    # -*- coding: utf-8 -*- import requests import time from bs4 import BeautifulSoupimport io import sy ...

  4. kali burpsuit抓取不了https的包

    可能有很多老铁都会遇到这问题,废话少说,分享一波(格式啥的就不用在意啦) 先设置一波代理 抓https的包,发现抓取不了 导入证书,注意右边,别看走眼了(方法不唯一,也可以抓包获取证书,麻烦) 保存( ...

  5. python爬虫成长之路(一):抓取证券之星的股票数据

    python爬虫成长之路(一):抓取证券之星的股票数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇 ...

  6. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  7. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...

  8. Python爬虫系列之爬取微信公众号新闻数据

    Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...

  9. Python爬虫系列之爬取某奢侈品小程序店铺商品数据

    Python爬虫系列之爬取某奢侈品小程序店铺商品数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学 ...

最新文章

  1. 2021-2027年中国市医疗电子场投资分析及前景预测报告
  2. 英伟达CEO黄仁勋获芯片行业最高荣誉:他颠覆了计算!
  3. Webpack 4 学习09(打包生成html)
  4. nmap之扫描端口(附加hping3隐藏扫描)
  5. 播放RTMP协议的流媒体的几种选择
  6. 128.Two Sum
  7. java bean 工厂模式_通过annotation(注解)实现BeanFactory工厂模式(三)
  8. Highcharts改Y轴的刻度值
  9. 关于软件测试工程师所应该具备的能力,就业前景还有适合女生从事吗?
  10. 使用js实现鼠标放置时显示下拉列表
  11. 苹果sf字体_字体基础知识
  12. c语言冒泡排序获取最小值,C语言 冒泡排序算法详解及实例
  13. 我的毕业论文————面向对象的软件测试
  14. java软件工程师是做什么的_JAVA软件工程师是做什么的?
  15. 以太网通信协议UDP
  16. 跳跃表(SkipList)
  17. 如何解决电脑C盘不能扩展问题
  18. 神级编程网站,堪称程序员的充电站,我给你找好了不能错过
  19. Android开发高级进阶内涵段子APP项目实战视频教程
  20. 5.brackets 快捷键 有大用

热门文章

  1. 宝宝与父母间的纽带——毛绒玩具
  2. C++开发常用工具“群英会”
  3. 如何判断一个用户是否在O365上还是本地Exchange服务器上
  4. 解决知乎live无法下载的问题
  5. 豆粕止步5连跌关注USDA报告,甲醇认沽大倍,甲醇05-09季节性反套2022.3.31
  6. ORA-01578: ORACLE 数据块损坏 之奇妙处理 DBV
  7. 关于牛客网代码题 数据读取问题的 小白指南
  8. js jquery 实现 排班,轮班,日历,日程。使用fullcalendar 插件
  9. 攻击方法与工业控制系统安全
  10. 亚信安全服务器深度安全防护系统怎么样,亚信安全服务器深度安全防护系统即服务(DSaaS)为云端用户筑起安全壁垒...