先赞后看,是好习惯!
上节课我们已经安装了mitmproxy , 本节课来试一次脚本启动。所谓脚本启动,就是在启动mitm服务的时候,用-s参数来指定一个py3的脚本。而这个脚本的作用就是对抓到的接口进行操作。
里面有个常用的函数,叫request,所有请求从手机发出后,都会先经过这个request的函数洗礼,然后才会继续前进到服务器。
启动命令如下:
脚本如下:
如上图所示,脚本的功能很简单,就是抓到接口后,输出一下接口的url而已。抓到的结果如图:
如上图所示,成功关联脚本后,我们下一个任务就是测试融合到django项目中,是否有什么问题。
说到这,就要迅速的新建一个django项目了,具体新建django的过程这里不过多赘述。
然后-我们新建一个简单的页面,上面只有一个按钮,点击启动可以直接启动mitm服务的。
test.html |
|
urls.py |
|
views.py |
创建好之后,我们再去把mitm的那个自定义脚本粘贴到django根目录下:
然后我们去把按钮点击事件的链路写好:
test.html |
|
urls.py |
|
views.py |
测试一下:
然后就是继续开发真正启动服务的代码了。
这里要来具体思考一下:
首先,这个mitmproxy的服务,应该是一个新的完整独立的进程。
所以代码中我们是一定要去新建一个进程,于是先写成如下代码测试:
启动结果报错:
大致意思就是mitmproxy是需要一个独立的输出控制台,不能这里启动,这个终端控制台目前是被django霸占的。
于是我们换成了寄生控制台命令: mitmdump
并且增加了前后的print输出,还有指定了一个全新的8888端口
再次测试:
如上图所示,卡在这了。这个现象我解释一下:因为新进程mitmdump是阻塞状态,所以原来的这个begin函数是无法继续运行后面的print(启动完成!)
而前端自然也是无限等待,没有弹窗的局面。
所以,我这次把call换成了Popen 非阻塞的。
执行结果如下:
这就达到了我们要的目的了。
此时这个8888的端口,是真的存在这个mitmdump的服务哦~
我们打开手机挂上代理随便请求看看:
如上图所示,可以看到服务成功运行,并且抓到了:.....某个接口。
各种输出也会寄生在当前的django控制台中输出了。
到此,django融合mitm的算是成功了,大家可以在自己公司的服务器部署,并且通过某个django测试平台的一个小按钮进行控制这个抓包服务了,这个抓包服务可以服务全部内网的同事。这样避免了新人安装fiddler 或者 charles的麻烦,还有各种证书安装等麻烦重复的内耗成本问题。
当然,后续还可以增加更多相关功能,提高django和mitm的契合度。比如对每个同事设计的临时专用mitm抓包服务,公司app接口自动识别,在线抓包在线录入一键制作用力等,在线页面控制mock的数据等各种功能,方便还高大上,升职加薪利器。需要具体研究深入的可以关注培训课程:woqurefan.cn (点击阅读原文)
本平台具体大纲:
【 1 】- 教程须知+学习方法+心里建设
【 2 】- 测试基础:需求+原型+st测试计划
【 3 】- 测试基础:st测试方案+st用例设计
【 4 】- 测试基础:等价类+边界值+判定表
【 5 】- 测试基础:正交法+状态迁移法
【 6 】- 测试基础:因果图+流程法
【 7 】- 测试基础:bug等级
【 8 】- 测试基础:接口测试计划+方案+用例设计
【 9 】- django基础+python基础
【 10 】- 前端基础+数据库基础
【 11 】- web开发流程+数据链路打通
【 12 】- 项目列表页面的开发
【 13 】- 登录模块实现
【 14 】- 注册+注销+找回密码实现
【 15 】- 菜单组件+mock单元实现
【 16 】- 项目设置功能+项目数据设计
【 17 】- mock单元设置+抓包知识
【 18 】- mitmproxy脚本+服务启动
【 19 】- mock单元的启用和弃用
【 20 】- windows进程控制
【 21 】- 线程控制服务技术
【 22 】- 拦截模式和返回头/体的设置
【 23 】- 放行模式的动态修改功能实现
【 24 】- 抓包数据读取和更新
【 25 】- 接口记录的过滤和优化
【 26 】- host黑白名单+时间控制
【 27 】- 抓包导入项目具体实现
【 28 】- ci/cd持续集成实战
【 29 】- 相关推广面试用pp