mitmdump+python的使用(代码篇)
mitmproxy+python代码篇
一、上个推文我们介绍了mitmdump的简单操作,下面我们开始学习,mitmdump配合python脚本的使用。第一点先讲日志输出。请看图片
先导入ctx模块:from mitmproxy import ctx。这个模块主要用于日志的输出。日志输出可以控制颜色
ctx.log.info # 日志输出颜色为白色
ctx.log.warn # 日志输出颜色为黄色
ctx.log.error # 日志输出颜色为红色
我们运行脚本看看效果
我们可以看到地址、请求方式、请求体都是白色的。头部信息是黄色的。URL是红色的。这边只是做一个简单的演示,颜色可以自己修改。
我们看到整段代码有两个模块。这两个模块在Python中称之为函数,也可以叫做方法。def request(flow): 在这里面request是函数名,你可以自己设置,但是我们在写mitmdump相关脚本的时候为了更好的辨认,所有我们统一把请求部分的代码命名成request,把响应部分的代码命名为response。括号里(flow)是一个参数。当我们运行mitmdump的时候,每次请求会通过flow传入我们写的函数。这时候我们就可以看到结果啦!
二、学会了日志输出,会发现我们可以拿到好多数据,我们可以把这些数据存储下来进行更多的操作。下面鹏鹏给大家讲讲如何对抓取的数据进行保存。大家看代码:
这边鹏鹏想把抓取到的内容保存到JSON文件里所以这里需要导入一个JSON的包,这段代码需要注意的一个地方就是,在运行这段代码之前一定要新建两个空的JSON文件用来保存请求内容和响应内容。
这时候我们去cmd界面运行后,所抓取的内容都会存入这两个文件夹中。
代码详解:request代码中的d只是一个变量名,可以随便设置。d是一个字典。字典里存着URL,请求方式和请求体。这里可以随着自己的需要去增减。增加办法是“key”:“value”;因为json文件只能存入字符串格式。所以我们需要用json_d = json.dumps(d)来把他转为字符串格式;fp也是一个变量名,你可以随便更改,它主要功能是打开这个路径下的JSON文件,以追加(a+)的方式写入,编码为UTF-8。;fp.write(json_d + '\n')的意思是把抓取到的内容写入json文件,\n是换行的意思,写入一条换一行。
以上是我这次的内容,主要讲了如何输出不同颜色的日志和把抓取到的内容写入JSON文件。下期鹏鹏会讲mitmdump的其他应用。欢迎大家关注公众号“跟着鹏鹏学测试”从此测试不迷路!
扫描二维码
关注我们
微信号 : GZPPXCE
mitmdump+python的使用(代码篇)的更多相关文章
- 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)
好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...
- Python开发【第一篇】:初识Python
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- [资料分享]Python视频教程(基础篇、进阶篇、项目篇)
Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...
- python 面向对象(进阶篇)
上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- fw:学好Python必读的几篇文章
学好Python必读的几篇文章 from:http://blog.csdn.net/hzxhan/article/details/8555602 分类: python2013-01-30 11:52 ...
- 【python自动化第十一篇】
[python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...
- Python 学习 第十篇 CMDB用户权限管理
Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...
- Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)
Python 面向对象(初级篇) 51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...
随机推荐
- 英语四六级模拟考试系统APP
Android studio开发的.eclipse的SSM框架作为服务器后台.Mysql5.6. 我先上几张图吧. 需要源码可以留言给我.另外本人接外包或者有问题也可以问我.留言,我会看的.
- ftp服务器搭建(一)
先安装vsftpd 发现安装yum不行 root命令下也不行 那么可以去 /var/lib/dpkg 把lock文件rm掉 然后在yum install vsftpd 发现可以了 注意:如果发现yum ...
- .Net基础之4——流程控制
(1)异常捕获 我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一点. 在你的代码中应该经常性的使用try-catch来进行异常捕获. 语法: try { 可能会出现异常的代码: } ...
- Element-UI自定义主题
Element-UI自定义主题 1.介绍:我们可以自定义样式去覆盖element-ui的默认样式 // 在项目目录中新建 element-variables.scss 文件 // 上面为修改的变量 $ ...
- Collection接口和list,set子类
Collection接口常用的子接口有:List接口.Set接口List接口常用的子类有:ArrayList类.LinkedList类Set接口常用的子类有:HashSet类.LinkedHashSe ...
- Python一键获取日漫Top100榜单电影信息
最近看到一个 UP 主做的视频,使用可视化动态图,把目前播放量最多的 UP 主一一列出来,结果第一名是哔哩哔哩番剧,第一名的播放量是第二名近 10 倍. B站的番剧数量,也是相对其他平台比较多的,而且 ...
- centOS 6.8下使用Gparted进行分区扩容
centOS 6.8下使用Gparted进行分区扩容 机器环境:windows上运行的VMware虚拟机,系统为centOS 6.8. 由于前期分区分配空间过小,无法满足后续的数据存储预期,所 ...
- vue项目中使用bpmn-番外篇(留言问题总结)
前情提要 “vue项目中使用bpmn-xxxx”系列的七篇文章在上周已经更新完成,发表后,有小伙伴在使用时提出了一些文章中没有讲到的问题,此篇作为番外篇,将大家提出的共性问题解答一下,欢迎大家支持原创 ...
- Java:成员变量、局部变量和静态变量
梳理一下: 根据定义变量位置的不同,可以将变量分成两大类:成员变量和局部变量. 成员变量(俗称全局变量):在类里定义的变量.又分为实例变量和类变量(也成为静态变量). 实例变量:不以static修饰, ...
- Java IO(一)概述
Java IO(一)概述 一.IO概述 (一).介绍 在Java中,所有的数据都是通过流读写的,Java提供了IO来处理设备之间的数据传输,Java程序中,对于数据的输入/输出操作 都是以“流”的方式 ...