学会如何抓包,是爬虫的必备技能,甚至可以说,不会抓包就等同于不会爬虫。
那我们怎样抓包呢?如果直接抓取浏览器上的内容,可以直接使用开发者工具进行抓包,但有个局限,只能抓浏览器的,功能也没有多少。还可以使用别的工具,比如 mitmproxy、charles,当然还有今天所说的 Fiddler 。今天要分享的就是如何使用fiddler进行抓包以及它的功能讲解。
1. 下载并安装fiddler
下载地址:https://www.telerik.com/download/fiddler
这里填写下你的下载目的和国家就可以下载了,安装的话这里就不多说了。
2. Fiddler工作原理以及优缺点
如上图,Fiddler 作为一个代理,先是捕捉到客户端的 request 请求,然后再自己转发到服务器端,服务器接收到请求时,会返回一个响应 response ,Fiddler 还是会继续捕捉到服务器的响应请求,再来转发给客户端,简单来说, Fiddler 就是作为一个中间人。
优缺点:
只支持 http、https、ftp、webscoket 数据流等相关协议的捕捉,无法监测或修改其他数据流,如 SMTP、POP3 协议(邮箱相关的协议),无法处理请求和响应超过 2GB 的数据,还有就是只支持 windows 平台,如果想要支持 mac 的话,建议下载 charles ,不过很吃性能,在我机子上运行下那风扇就想起来了。
3. Fiddler 功能详解
3.1 如何进行抓包
1)先勾选允许抓取 https 流量
这个就是允许抓取 https 的流量。如果第一次使用,勾选之后会提示你安装一个证书,这个证书就是用来做中间人进行抓包的, Fiddler使用此证书来解密所捕捉到的包,再加密转发到相对应的服务器端或者客户端。
如果你还没有安装就点击 Yes 安装即可,如果没有弹出此窗口的也可以点击右上角的 actio 按钮的第一个选项也是可以弹出此个窗口的
上面圈出来的是表示抓取哪一部分的流量。
-
from all processes:抓取所有进程的流量
-
from browsers only:只抓取浏览器的流量
-
from non-browsers only:不抓取浏览器的流量
-
from remote clients only:抓取远程的客户端,当需要抓取的是手机端的流量,就需要用到这个
2)接下来设置端口号
一般默认即可,这里我设置成了8889。
下面的那个 Allow remote computers to connect 是允许远程的客户端进行连接,如果抓取手机端的也需要勾选。
3)浏览器设置代理服务器
Fiddler 的设置完了,这时候还需要在你的浏览器上设置代理服务器才能进行抓取。
使用 Chrome 浏览器的可以直接使用 SwitchyOmega 插件进行修改即可,操作简单。
点击新增情景模式
选择代理服务器,随后填写任意名字,这里我填写的是 Fiddler,点击创建即可。
然后填写以上内容,代理服务器为本机,端口号为上面在 Fiddler 设置的端口号,填写完在左下角点应用选项才算设置完毕。
设置完之后再在浏览器插件处点击该插件,然后选择该模式即可开始抓包
设置完之后第一次打开可能是这样的
关闭 Fiddler 再重新打开就可以了
3.2 进行手机端抓包
手机端的抓包也是很容易的,先是设置好 Fiddler 的允许抓取远程客户端。
这时用手机连接wifi,然后长按修改网络(不同安卓手机不一样)
点击代理,然后点击手动
主机名就写你电脑上的 ip 地址,查看 ip 地址可以在控制台上输入 ipconfig 即可
由于我的电脑也是连接 wifi 的,所以 ip 地址对应的是 无线网络的那个,如果你的电脑是使用网线来进行上网的,那 ip 地址就是 以太网的那个。
填完之后还不能抓取,如果直接抓取会显示证书有问题。
我们也是需要安装证书才可以正常抓取的。那接下来安装证书
手机浏览器输入 你的ip地址:端口号 进入网址下载证书,如 192.168.1.2:8888, 端口号还是之前在 Fiddler设置的那个
点击上图箭头的网址进行下载即可,下载完毕之后点击安装即可。
如果你是 miui 系统的机子,就需要进入wifi 设置的界面进行安装
点击 高级设置 --> 安装证书 即可,期间需要密码验证或者设置密码之类的设置即可。
还有一个大坑,就是如果你的机子 是安卓 9 而是 miui 系统(其他系统没测试过)的话,安装了证书也是没用的,在进行抓包的时候还是会提示证书有问题。安卓 8 版本的我没有测试过,不过安卓 7 版本以下的估计都可以。
弄完了以上的东西就可以抓包了,如果设置完了,网络没了,还是那样子,第一次设置完需要重启下 Fiddler 软件就可以抓包了。
3.3 抓包内容的介绍
很明显左边的就是捕捉的请求和响应,右边的就是对应请求的详细信息,比如请求头,表单信息,比如上图下面箭头所指的就是表单信息。,如果这些信息看到的内容很少的话,可以直接点击下面的 View in Notepad 按钮就可以在笔记本中显示出来,非常方便。
左边每列代表的含义为:
左边第一列中每个图片代表的含义为:
3.4 再说几个常用的功能
查找:抓包时,经常会抓到一堆不重要的包,而需要找的包夹杂在里面非常难找,所以就可以用关键字来查找,入口为:
也可以直接点击这个
或者直接按快捷键 Ctrl + F 即可
这里的功能很强大,可以只查找请求或者响应或者两个都查,还可以用正则表达式来查找,就不一 一说了。
映射:也就是重定向,将服务器端的响应内容可以更改为客户端上的文件,功能也是很强大,之前我在爬取网易云评论时也是弄过的,有兴趣的可以看看利用python爬取网易云音乐,并把数据存入mysql。
在这里填写对应的规则和文件即可
还有一个类似于 postman的功能,就是下面这个
就是在这里模拟请求,有什么需要模拟的话可以先在这里模拟一次,成功之后再用编程去敲出来也是不错的,非常强大。
由于篇幅问题,还有一些功能就暂时不介绍了,等以后用到的时候会说哈,比如断点调试之类的,到时记得时刻关注哦!