小白Python的学习规划,我只做了5件事!
作者 | sergiojune
责编 | 胡巍巍
学会如何抓包,是爬虫的必备技能,甚至可以说,不会抓包就等同于不会爬虫。
那我们怎样抓包呢?如果直接抓取浏览器上的内容,可以直接使用开发者工具进行抓包,但有个局限,只能抓浏览器的,功能也没有多少。
还可以使用别的工具,比如 mitmproxy、charles,当然还有今天所说的 Fiddler 。今天要分享的就是如何使用fiddler进行抓包以及它的功能讲解。
下载并安装fiddler
下载地址:https://www.telerik.com/download/fiddler
这里填写下你的下载目的和国家就可以下载了,安装的话这里就不多说了。
Fiddler工作原理以及优缺点
图片来自https://blog.csdn.net/DreamTL/article/details/70405368
如上图,Fiddler 作为一个代理,先是捕捉到客户端的 request 请求,然后再自己转发到服务器端,服务器接收到请求时,会返回一个响应 response ,Fiddler 还是会继续捕捉到服务器的响应请求,再来转发给客户端,简单来说, Fiddler 就是作为一个中间人。
优缺点:
只支持 http、https、ftp、webscoket 数据流等相关协议的捕捉,无法监测或修改其他数据流,如 SMTP、POP3 协议(邮箱相关的协议),无法处理请求和响应超过 2GB 的数据,还有就是只支持 windows 平台,如果想要支持 mac 的话,建议下载 charles ,不过很吃性能,在我机子上运行下那风扇就想起来了。
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 即可:
这里的功能很强大,可以只查找请求或者响应或者两个都查,还可以用正则表达式来查找,就不一 一说了。
映射:也就是重定向,将服务器端的响应内容可以更改为客户端上的文件,功能也是很强大,之前我在爬取网易云评论时也是弄过的。
在这里填写对应的规则和文件即可:
还有一个类似于 postman的功能,就是下面这个:
就是在这里模拟请求,有什么需要模拟的话可以先在这里模拟一次,成功之后再用编程去敲出来也是不错的,非常强大。
由于篇幅问题,还有一些功能就暂时不介绍了,等以后用到的时候会说哈,比如断点调试之类的,到时记得时刻关注哦!
【End】
热 文 推 荐
☞ 阿里布局物联网!开源操作系统 AliOS Things 喜提 1 亿芯片出货量
曝光!月薪 5 万的程序员面试题:73% 人都做错,你敢试吗?
System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"
喜欢就点击“在看”吧!
Python 成功上位,为什么逐渐与 Java 拉开差距?