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


往期内容提要:


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(小白也容易上手的Python实用案例)

12-24
原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会  【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例
©️2020 CSDN 皮肤主题: 代码科技 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值