分享好友 最新动态首页 最新动态分类 切换频道
App爬虫神器mitmproxy和mitmdump的使用_mitmproxy 只查看图片
2024-12-25 14:00

这里是刚才手机打开百度页面时的所有请求列表,左下角显示的2/38代表一共发生了38个请求,当前箭头所指的是第二个请求。

App爬虫神器mitmproxy和mitmdump的使用_mitmproxy 只查看图片

每个请求开头都有一个GET或POST,这是各个请求的请求方式。紧接的是请求的URL。第二行开头的数字就是请求对应的响应状态码,后面是响应内容的类型,如text/html代表网页文档、image/gif代表图片。再往后是响应体的大小和响应的时间。

当前呈现了所有请求和响应的概览,我们可以通过这个页面观察到所有的请求。

如果想查看某个请求的详情,我们可以敲击回车,进入请求的详情页面,如下图所示。

可以看到Headers的详细信息,如Host、Cookies、User-Agent等。

最上方是一个Request、Response、Detail的列表,当前处在Request这个选项上。这时我们再点击TAB键,即可查看这个请求对应的响应详情,如下图所示。

最上面是响应头的信息,下拉之后我们可以看到响应体的信息。针对当前请求,响应体就是网页的源代码。

这时再敲击TAB键,切换到最后一个选项卡Detail,即可看到当前请求的详细信息,如服务器的IP和端口、HTTP协议版本、客户端的IP和端口等,如下图所示。

mitmproxy还提供了命令行式的编辑功能,我们可以在此页面中重新编辑请求。敲击e键即可进入编辑功能,这时它会询问你要编辑哪部分内容,如Cookies、Query、URL等,每个选项的第一个字母会高亮显示。敲击要编辑内容名称的首字母即可进入该内容的编辑页面,如敲击m即可编辑请求的方式,敲击q即可修改GET请求参数Query。

这时我们敲击q,进入到编辑Query的页面。由于没有任何参数,我们可以敲击a来增加一行,然后就可以输入参数对应的Key和Value,如下图所示。

这里我们输入Key为wd,Value为NBA。

然后再敲击esc键和q键,返回之前的页面,再敲击e和p键修改Path。和上面一样,敲击a增加Path的内容,这时我们将Path修改为s,如下图所示。

再敲击esc和q键返回,这时我们可以看到最上面的请求链接变成了:https://www.baidu.com/s?wd=NBA。访问这个页面,可以看到百度搜索NBA关键词的搜索结果,如下图所示。

敲击a保存修改,敲击r重新发起修改后的请求,即可看到上方请求方式前面多了一个回旋箭头,这说明重新执行了修改后的请求。这时我们再观察响应体内容,即可看到搜索NBA的页面结果的源代码,如下图所示。

以上内容便是mitmproxy的简单用法。利用mitmproxy,我们可以观察到手机上的所有请求,还可以对请求进行修改并重新发起。

Fiddler、Charles也有这个功能,而且它们的图形界面操作更加方便。那么mitmproxy的优势何在

mitmproxy的强大之处体现在它的另一个工具mitmdump,有了它我们可以直接对接Python对请求进行处理。下面我们来看看mitmdump的用法。

六、mitmdump的使用

mitmdump是mitmproxy的命令行接口,同时还可以对接Python对请求进行处理,这是相比Fiddler、Charles等工具更加方便的地方。有了它我们可以不用手动截获和分析HTTP请求和响应,只需写好请求和响应的处理逻辑即可。它还可以实现数据的解析、存储等工作,这些过程都可以通过Python实现。

  1. 实例引入

我们可以使用命令启动mitmproxy,并把截获的数据保存到文件中,命令如下所示

mitmdump -w outfile

其中outfile的名称任意,截获的数据都会被保存到此文件中。

还可以指定一个脚本来处理截获的数据,使用-s参数即可

mitmdump -s script.py

这里指定了当前处理脚本为script.py,它需要放置在当前命令执行的目录下。

我们可以在脚本里写入如下的代码

我们定义了一个request()方法,参数为flow,它其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印输出了请求的请求头,将请求头的User-Agent修改成了MitmProxy。

运行之后我们在手机端访问http://httpbin.org/get,可以看到如下情况发生。

手机端的页面显示如下图所示。

PC端控制台输出如下图所示。

手机端返回结果的Headers实际上就是请求的Headers,User-Agent被修改成了mitmproxy。PC端控制台输出了修改后的Headers内容,其User-Agent的内容正是mitmproxy。

所以,通过这三行代码我们就可以完成对请求的改写。print()方法输出结果可以呈现在PC端控制台上,可以方便地进行调试。

  1. 日志输出

mitmdump提供了专门的日志输出功能,可以设定不同级别以不同颜色输出结果。我们把脚本修改成如下内容

这里调用了ctx模块,它有一个log功能,调用不同的输出方法就可以输出不同颜色的结果,以方便我们做调试。例如,info()方法输出的内容是白色的,warn()方法输出的内容是黄色的,error()方法输出的内容是红色的。运行结果如下图所示。

不同的颜色对应不同级别的输出,我们可以将不同的结果合理划分级别输出,以更直观方便地查看调试信息。

  1. Request

最开始我们实现了request()方法并且对Headers进行了修改。下面我们来看看Request还有哪些常用的功能。我们先用一个实例来感受一下。

我们修改脚本,然后在手机上打开百度,即可看到PC端控制台输出了一系列的请求,在这里我们找到第一个请求。控制台打印输出了Request的一些常见属性,如URL、Headers、Cookies、Host、Method、Scheme等。输出结果如下图所示。

结果中分别输出了请求链接、请求头、请求Cookies、请求Host、请求方法、请求端口、请求协议这些内容。

同时我们还可以对任意属性进行修改,就像最初修改Headers一样,直接赋值即可。例如,这里将请求的URL修改一下,脚本修改如下所示

手机端得到如下结果,如下图所示。

比较有意思的是,浏览器最上方还是呈现百度的URL,但是页面已经变成了httpbin.org的页面了。另外,Cookies明显还是百度的Cookies。我们只是用简单的脚本就成功把请求修改为其他的站点。通过这种方式修改和伪造请求就变得轻而易举。

通过这个实例我们知道,有时候URL虽然是正确的,但是内容并非是正确的。我们需要进一步提高自己的安全防范意识。

Request还有很多属性,在此不再一一列举。更多属性可以参考:http://docs.mitmproxy.org/en/latest/scripting/api.html。

只要我们了解了基本用法,会很容易地获取和修改Reqeust的任意内容,比如可以用修改Cookies、添加代理等方式来规避反爬。

  1. Response

对于爬虫来说,我们更加关心的其实是Response的内容,因为Response Body才是爬取的结果。对于Response来说,mitmdump也提供了对应的处理接口,就是response()方法。下面我们用一个实例感受一下。

将脚本修改为如上内容,然后手机访问:http://httpbin.org/get。

这里打印输出了Response的status_code、headers、cookies、text这几个属性,其中最主要的text属性就是网页的源代码。

PC端控制台输出如下图所示。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

六、面试宝典

最新文章
微信小程序转为App并上架应用市场
先说说背景吧,笔者开发了一款微信工具类小程序,刚开始,小程序的日访问量和用户数都还可以,但后面慢慢的发现,受限于微信小程序平台规则,很难对用户进行更深入的运营,用户流失问题也将逐渐
全域推广,正在成为电商营销第一选择
作者 | 星志编辑 | 花道抖音提出“全域兴趣电商”概念已有两年,品牌对全域电商的关注已是不争的事实,也都在追求统筹平台内的全域流量,打通种草-拔草环节,让转化链路更完整。到今年,越来越多的品牌已经意识到,广告投放的终局,是一步
qq浏览器网页版
QQ浏览器网页版是由腾讯公司开发的一款功能强大的网页浏览器,适用于安卓、苹果、电脑等多种平台。它以其快速、安全、便捷的特点赢得了广大用户的喜爱。QQ浏览器网页版旨在为用户提供高效、流畅的网页浏览体验。通过采用优化的内核和数据压
翡翠电商平台十大排名:权威榜单揭晓!
抖音翡翠电商平台十大排名,依据翡翠市场的选购特点和消费者的参考需求,以下是我对抖音翡翠电商平台的咸鱼排名及其特点的如今介绍。1. 祥云翡翠祥云翡翠是一家历史悠久的出现翡翠,专注于翡翠的对设计、制作和销售。其在抖音上有较高的已
如何报名参加小程序制作课程:我的学习经验分享
在如今这个数字化时代,小程序已成为许多企业和个人展示自我的重要工具。制作小程序并非难事,报名参与相关课程或培训是一个不错的起点。我曾经也是从零开始,经历了小程序制作的学习过程,今天想和大家分享一下如何报名参与小程序制作的课
如何做网站?/百度竞价推广流程
博客来源:http://blog.csdn.net/zyl910/article/details/8100744 现在很多编译器支持intrinsic函数,这给编写SSE等SIMD代码带来了方便。但是各个编译器略有差异,于是我编写了zintrin.h,智能引入intrinsic函数。
简单图库PRO安卓手机版APPv6.27.1最新版
简单图库PRO安卓手机版APP是一款功能强大的图片管理软件,为您提供丰富的图片资源和便捷的管理方式。通过简单图库Pro,您可以轻松地浏览、整理、编辑和分享您的图片,让您的视觉体验更加丰富多样,免费下载安装吧!1.海量图片资源:简单图
影响阿里巴巴店铺排名权重的因素
我们都知道一个店铺最重要的是权重,那么除了点击率、转化率、回头率之外其他有哪些是我们不知道的呢?那么我们又如何从多个角度去提升权重呢?平台一直不变的就是一直在变,只有紧随规则才可以知道哪里加权了,哪里权重又降低了?以下我总
ScrapeBox是什么,如何助力谷歌SEO链接构建?
在数字营销领域,SEO(搜索引擎优化)无疑是提升网站流量和知名度的关键手段。而在这条充满挑战的道路上,ScrapeBox作为一款强大的SEO工具,无疑为我们提供了诸多便利和可能性。作为一名在SEO领域摸爬滚打多年的从业者,我深知一款好的工具
Office三剑客之办公达人成长之路
课程背景:微软的office软件自从问世以来,在我们的职场工作中就再也离不开他们。PPT、Excel和Word这3大组件更是扮演者非常重要的角色,熟练掌握他们可以给我们的工作带来极大的高效率和便利。本次课程的设置,通过循序渐进的学习方式,使
相关文章
推荐文章
发表评论
0评