爬虫学习笔记(十四)—— Fiddler抓包工具

Posted 别呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫学习笔记(十四)—— Fiddler抓包工具相关的知识,希望对你有一定的参考价值。

一、HTTP代理

Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。

所谓的HTTP代理,其实就是代理客户机的HTTP访问,主要代理浏览器访问页面。
代理服务器是介于浏览器和web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。


二、Fiddler

2.1、安装

官方网站下载安装即可:https://www.telerik.com/fiddler

基本可以说目前最为全面和强大的抓包工具就是fiddler了,使用也不算麻烦。
Fiddler也在官网上有提供非常详细的文档和教程,如果使用的时候遇到问题,可以直接查阅官网文档。

以下是我从官网的下载步骤:


2.2、设置

2.2.1、HTTPS的证书

抓包工具抓取HTTPS的包的时候跟HTTP的直接转发是不同的。所以我们需要配置

打开后选择HTTPS,勾选上这个选项,然后勾选上下方出现的两个选项。最后再将弹出的窗口都选择yes。


2.2.2、工具栏

  1. 给session添加一个注释
  2. Replay:将目标session再发送一次
  3. 删除session
  4. 将断点的session恢复执行
  5. Decode:将传输的数据解码成容易阅读的格式
  6. Find:查找session
  7. Save:将session保存成本地文件
  8. Clear Cache:清除缓存

2.2.3、Session窗口

  1. #:Session的序号
  2. Result:请求的响应状态码
  3. Protocol:请求的协议类型
  4. Host:域名
  5. URL:请求的url
  6. Body:响应体的大小
  7. Caching:缓存方式
  8. Content-Type:响应的数据类型
  9. Process:发起请求的进程
  10. Comments:注释

同时,每一个session都有不同的颜色,不同的颜色代表不一样的session类型


2.2.4、Inspectors标签页

请求数据窗口

  1. Headers:报头
  2. TextView:查看文本数据
  3. Syntax:根据语法格式查看
  4. WebForms:Web表单
  5. HexView:查看十六进制数据
  6. Cookies:查看请求的Cookies
  7. Json:查看json格式数据

响应数据窗口

  1. Transformer:解压方式
  2. Headers:报头
  3. TextView:查看文本数据
  4. Syntax:根据语法格式查看
  5. ImageView:查看图片
  6. WebView:Web表单
  7. HexView:查看十六进制数据
  8. Cookies:查看响应设置的Cookies
  9. Json:查看json格式数据

2.2.5、Filters选项

我们在抓包的时候常常会遇到非常杂乱的请求,而我们需要去分析的往往只是其中很小的一部分,那么我们就需要从许多请求中过滤出我们需要的那些请求。

  1. 是否使用Filters。
  2. Filters的规则是可以保存和加载的,也就是我们可以把规则保存下来以后再用。
  3. 根据Host域名来进行筛选。
  4. 根据客户端的进程来进行筛选。
  5. 根据请求的Headers来进行筛选。
  6. 断点:Fiddler的断点功能能够让请求在发送后,或者是在返回时暂停,这时候就能够对请求和响应进行相应的修改。
  7. 根据响应的状态码筛选。
  8. 根据响应的类型和大小来进行筛选。
  9. 根据响应的Headers来进行筛选。

2.2.6、Find查找

使用快捷键ctrl+f或者在工具栏中选择find来打开查找窗口,查找窗口可以从所有session中搜索到我们想要的session

  1. 文本输入框。
  2. 可以选择搜索的范围,限定在仅Requests或者response中,也可以选择限定在headers或bodies中。
  3. 是否区分大小写。
  4. 是否用正则表达式来搜索。
  5. 仅仅搜索被选中的session。
  6. 将搜索到的结果高亮,可以选择颜色。

2.2.7、命令行查找

在Fiddler中同样也是可以使用命令行来进行搜索的,在图中的黑框中输入命令即可。

  1. select命令:搜索相应类型的session,也就是content-type。
  2. ?命令:根据URL来进行搜索。
  3. =命令:根据状态码来进行搜索
  4. @ 根据域名来搜索

2.2.8、断点

设置断点是Fiddler最强大的功能之一,在设置好断点后,Fiddler会捕捉所有经过的消息,我们可以任意修改HTTP请求信息,包括Host、Cookies或表单的数据。可以设置断点修改request,也可以设置断点修改response。

断点方式有两种,一种是通过菜单栏设置全局的断点,一种是通过命令行设置指定的断点

全局断点

在菜单栏中选择Rules > Automatic Breakpoints,即可选择断点方式。有两个选择,分别是在请求往服务器发送的时候暂停,和在响应返回到客户端的时候暂停。

指定断点

指定断点需要输入指定的命令来进行断点:

  1. bpu:在指定网页发起请求后暂停。如:bpu www.baidu.com 取消断点 bpu+空
  2. bpafter:在指定网页返回响应时暂停。 取消断点 bpafter+空
  3. bpm:中断指定请求方式的请求。如:bpm get 取消断点 bpm+空
  4. bps:中断指定状态码的session。如:bps 200 取消断点 bps+空

三、app抓包

3.1、详细步骤

1、安装fiddler,并且进行配置:

Tools >> options >> connections >> 勾选 allow remote computers to connect

2、查看本机ip地址:

在cmd窗口中,输入 ipconfig,可以看到	
IPv4 地址...............:192.168.0.4 (仅供参考)
这个192.168.*.***(192.168.0.4) 就是你的本机IP

(这里我连接的是WiFi)

3、确保手机连接了wifi,并且和电脑是在同一个局域网

在手机中,打开浏览器,访问	http://192.168.0.4:8888
IP:是第二步查看到的ip地址,替换成你自己的IP
port:8888是你在fiddler中配置的
注意:有些浏览器会显示打不开,更换其他浏览器就可以了
访问成功,点击FiddlerRoot certificate 下载证书

4、安装 证书(不同的手机不同的方式)

(这里我以夜神模拟器为例)
1 部分手机可以直接点击安装
2 部分手机需要 设置 >> wifi(或WLAN) >> 高级设置 >> 安装证书 >>
        选中刚刚下载的 证书文件 FiddlerRoot.cer >> 确定
3 安装证书, 为证书命名, 输入自己喜欢的名字,譬如 fiddler_ca,确定,显示 证书安装完成
4 安装完成后,可以在在 设置(Settings) >> 安全 >> 信任的凭证 >>系统和用户2个tab页 >> 用户 >> 可以查看到 DO_NOT_RUST_FiddlerRoot

PS: 不安装证书,抓取http的数据是没问题的,但是抓取不了https的数据

安装证书流程(夜神模拟器):

查看证书流程(夜神模拟器):

5、手机设置代理(不同的手机不一样)

手机设置 >> wifi(或WLAN) >>  修改网络 >> 代理 >> 手动
主机名:192.168.0.4   自己电脑IP
端口  :8888   fiddler配置的端口
不使用网址: 这个不用理会
修改完成后,确认

流程:

6、打开 fiddler 的抓包,然后在手机端运行要抓包的app,会查看到fiddler中已经可以抓到app的数据了

注意:
1、大部分app都可以直接抓包
2、少部分app没办法直接获取,需要 wireshark、反编译、脱壳 等方式去查找加密算法
3、app抓包一般都是抓取到服务器返回的json数据包

3.2、总结

  1. 手机,电脑同一局域网,设置fiddler
  2. 设置代理
  3. 安装证书

3.3、小案例:火山极速版视频简单抓取

1、打开火山急速版,刷新视频;在fiddler里找js中Body大的,caching为空

2、右侧"相应数据窗口"->“JSON”->“data”->第一个"{}"->“data”->“video”->“url_list”

3、创建一个py,通过链接爬取我们要的视频

import requests

url = 'http://v9-default.ixigua.com/c165e2231abbaa8169c8db40a022e680/60f99d0a/video/tos/cn/tos-cn-ve-51/d36a13b4106147ebb3b206bc48e15d91/?a=1350&br=1866&bt=1866&cd=0%7C0%7C0&ch=0&cr=0&cs=0&cv=1&dr=3&ds=3&er=&ft=StTF_hhe6U9y~m_bkaPb~d5NVgQ&l=20210722232932010151073224363E23F8&lr=&mime_type=video_mp4&net=0&pl=0&qs=0&rc=anZndzY6ZnM2NjMzNDYzM0ApNGc8ZTRkaWQ2NzM1NzVkPGcvLTZgcjQwc3BgLS1kMC9zc2NeLWIwMTFhNi82YGM0Xi06Yw%3D%3D&vl=&vr='
res = requests.get(url)

with open('video.mp4','wb') as f:
    f.write(res.content)

结果:

以上是关于爬虫学习笔记(十四)—— Fiddler抓包工具的主要内容,如果未能解决你的问题,请参考以下文章

爬虫必备抓包工具——Fiddler认识&使用

爬虫必备抓包工具——Fiddler认识&使用

爬虫之Fiddler抓包腾讯视频

用python爬虫教你通过 Fiddler 进行手机抓包

手机爬虫汇总

如何通过抓包工具fiddler获取java程序的http请求