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的使用(代码篇)的更多相关文章

  1. 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)

    好,现在进入高阶代码篇. 目的: 爬取昆明市中学的兴趣点POI. 关键词:中学 已有ak:9s5GSYZsWbMaFU8Ps2V2VWvDlDlqGaaO 昆明市坐标范围: 左下角:24.390894 ...

  2. Python开发【第一篇】:初识Python

    初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  3. [资料分享]Python视频教程(基础篇、进阶篇、项目篇)

    Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度.它可以用来开发各种程序,从简单的脚本任务到复杂的.面向对象的应用程序都有大显身手的地方.Python还被当作一 ...

  4. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. Python开发【第二篇】:初识Python

    Python开发[第二篇]:初识Python   Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...

  6. fw:学好Python必读的几篇文章

    学好Python必读的几篇文章 from:http://blog.csdn.net/hzxhan/article/details/8555602 分类: python2013-01-30 11:52  ...

  7. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...

  8. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  9. Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)

    Python 面向对象(初级篇)   51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

随机推荐

  1. 【Java】手把手理解CAS实现原理

    先来看看概念,[CAS] 全称“CompareAndSwap”,中文翻译即“比较并替换”. 定义:CAS操作包含三个操作数 —— 内存位置(V),期望值(A),和新值(B). 如果内存位置的值与期望值 ...

  2. Java——关键字和保留字

    Java关键字50个 abstract assert boolean break byte case catch char class const continue default do double ...

  3. 转 vue过滤器使用

    简单介绍一下过滤器,顾名思义,过滤就是一个数据经过了这个过滤之后出来另一样东西,可以是从中取得你想要的,或者给那个数据添加点什么装饰,那么过滤器则是过滤的工具.例如,从['abc','abd','ad ...

  4. PHP数组简单操作

    1.数字索引数组 1.1创建一个数组 php中最常用的两个类型是:数组,字符串.数组也分为两种,一种是数字索引,一种是关键是索引,关键字索引有点像python中字典的意思.数字索引类型的数组的创建方法 ...

  5. 1000 千米高空俯瞰 React Native

    一.历史:React Native 从开始到现在 React Native 的定位是通过 React 构建原生 App: A framework for building native apps wi ...

  6. java对数据库性能测试

    package com.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...

  7. [推荐]大量 Blazor 学习资源(二)

    继上一篇<[推荐]大量 Blazor 学习资源(一)>之后,社区反应不错,但因个人原因导致这篇文章姗姗来迟,不过最终还是来了!这篇文章主要收集一些常用组件.书籍和电子书. 资料来源:htt ...

  8. MD5安全吗?

    MD5的破解方法目前分为两类:一类为彩虹表破解:一类为专业的MD5破解站点. 1.彩虹表 彩虹表是一个庞大的.针对各种可能的字母组合预先计算好的哈希值的集合.彩虹表不仅针对MD5算法,主流的算法都有对 ...

  9. html css javascript实现弹弹球

    效果如图: 原创代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  10. Java实现 蓝桥杯VIP 算法训练 开心的金明

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱 ...