返回顶部
首页 > 资讯 > 后端开发 > Python >移动测试开发Mitmproxy用于测试抓包神器详解
  • 705
分享到

移动测试开发Mitmproxy用于测试抓包神器详解

2024-04-02 19:04:59 705人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1.前言2.Mitmproxy 简介3.Mitmproxy 工作原理4.实践应用5.总结1.前言 在移动商业广告的测试的工作中,经常会需要对广告请求进行捕获和分析,常使用的有两个

1.前言

在移动商业广告的测试的工作中,经常会需要对广告请求进行捕获和分析,常使用的有两个测试工具:fiddler,Charles,这两个工具都可以对广告请求进行抓包,断点调试,请求替换,构造请求等,但是这两个工具都有一定的局限性。首先,fiddler 只能在 windows 上运行,charles 虽然可以在 Mac,windows 上运行,但是收费。其次,在商业广告请求中经常会对接口协议进行加密处理,使用 fiddler 和 charles 就不容易解决了。最后,商业广告测试中需要对广告请求协议的各种字段进行校验,但业务涉及到多字段修改的情况下,再利用 fiddler 和 charles 逐一校验判断显然很浪费时间。经过调研和实际应用,我们发现 mitmproxy 这个工具非常灵活,它是基于 python 开发开源工具,提供了 Python api,可以通过载入自定义 python 脚本轻松控制请求和响应。这是其它工具所不能做到的,通过自定义脚本进行二次开发,能够解决商业广告测试过程中所遇到的问题。

2.Mitmproxy 简介

MITM(Man In The Middle Attack)中间人攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的两台通信计算机之间,这台计算机就称为 “中间人”。mitmproxy 就是用于 MITM 的 proxy,用于中间人攻击的代理。首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。

mitmproxy 有两个关联组件。一个是 mitmdump,它是 mitmproxy 的命令行接口,利用它我们可以对接 Python 脚本,用 Python 实现监听后的处理逻辑。另一个是 mitmWEB,它是一个 Web 程序,通过它我们可以清楚观察 mitmproxy 捕获的请求。

3.Mitmproxy 工作原理

mitmproxy 有 5 种代理模式,主要包含:正向代理,透明代理,反向代理,上游代理,socks 代理,在实际使用中经常用到正向代理,mitmproxy 作为正向代理是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器取得内容,客户端向 mitmproxy 代理发送一个请求并指定目标 (原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

我们以 https 请求为例介绍一下 mitmproxy 作为正向代理抓包的过程:

①. 客户端连接到 mitmproxy,并发Http 连接请求。

②. mitmproxy 响应建立了一个 200 的连接

③. 客户端认为它正在与远程服务器通信,并启动 SSL 连接。使用 SNI 来指定它连接到的主机名。

④. mitmproxy 使用客户端指定的 SNI 主机名与服务端建立一个 SSL/TLS 连接。

⑤. 服务器使用匹配的证书进行响应,该证书包含生成拦截证书所需的 CN 和 SAN 值。

⑥. mitmproxy 生成拦截证书,并继续跟客户端 SSL/TLS 握手。

⑦. 客户端通过已建立的 SSL/TLS 连接发送请求。

⑧. mitmproxy 通过步骤 ④ 中启动的 SSL/TLS 连接将请求传递到服务器。

4.实践应用

解决多字段校验效率问题:

商业广告测试中有大量的重复性工作在打点校验上,为了节省测试时间和解决易漏测的问题,我们可以利用 mitmproxy 二次开发,自定义业务相关的校验规则,然后通过捕获请求对协议中的各个字段进行自动化校验,这样既可以提高测试效率,又避免了漏测问题。

以所测广告业务为例,首先建立 addons.py 文件,addons 是个列表,每个元素是一个类实例,这些类,称为一个个 addon,这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法。如下图所示为 addons 文件内容,其中 SemiNativeCSJAd 则为 addon。

SemiNativeCSJAd 类中实现了 mitmproxy 提供的 request 和 response 事件,当触发该事件的时候,就会调用对应的方法。

其中将所有类型的广告打点中的公共字段校验抽取成公共方法 semiNativeCSJfieldCheck 调用。如下图所示:

通过以上方式,简单且有效的解决了多个字段校验问题。

解决商业广告中加解密问题:

商业广告有不同的渲染形态,例如:激励视频类,模板类,在实际测试过程中,需要测试人员 mock 不同的广告进行测试,不仅如此,还会遇到需要对广告进行加解密的情况,那么具体应该怎么解决呢?以所测的广告业务为例需要做以下几个步骤:

①. mitmproxy 拦截客户端发起的请求并获取某字段

②. 利用 RSA 算法根据请求的某字段解密获取到秘钥

③. 利用 AES 算法和 ② 步骤的秘钥,对本地广告内容进行加密

④. mitmproxy 将加密的广告返回给客户端

如下图是实现的代码,此 mockMaxFile 函数还可以根据入参传入不同广告文件即可实现不同广告的 mock。

5.总结

以上就是 mitmproxy 的简单介绍和在商业广告测试中的应用,相比传统的抓包工具,mitmproxy 可以通过载入自定义 python 脚本轻松实现各种定制化需求,提升测试效率和质量,不愧为 “抓包神器”。

更多关于移动测试Mitmproxy抓包的资料请关注编程网其它相关文章!

--结束END--

本文标题: 移动测试开发Mitmproxy用于测试抓包神器详解

本文链接: https://lsjlt.com/news/118856.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 移动测试开发Mitmproxy用于测试抓包神器详解
    目录1.前言2.Mitmproxy 简介3.Mitmproxy 工作原理4.实践应用5.总结1.前言 在移动商业广告的测试的工作中,经常会需要对广告请求进行捕获和分析,常使用的有两个...
    99+
    2024-04-02
  • 移动测试开发Mitmproxy工具怎么使用
    本文小编为大家详细介绍“移动测试开发Mitmproxy工具怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“移动测试开发Mitmproxy工具怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.前言在...
    99+
    2023-07-02
  • 【开发神器】自动化测试、用 Apipost!
    文章目录 产品介绍测试用例待测接口搬运麻烦?Apipost一键添加代码不会写?可视化操作免敲代码1.条件控制器:判断一个变量是否满足某个条件,由此决定该控制器下接口是否运行。2.次数控制器:w...
    99+
    2023-09-21
    python 压力测试 单元测试
  • 移动端调试神器vConsole使用详解
    目录介绍功能特性使用方法一:使用 npm(推荐)方法二:使用 CDN 直接插入到 HTML开发环境显示生成环境删除vue案例介绍 平时在web应用开发过程中,我们可以console....
    99+
    2024-04-02
  • 移动开发中自动化测试的示例分析
    小编给大家分享一下移动开发中自动化测试的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、自动化测试的概念自动化测试是把以人为驱动的测试行为转化为机器执行...
    99+
    2023-06-04
  • Python移动测试开发subprocess模块项目实战
    目录一、背景二、subprocess 模块基础1. subprocess.run 方法2. subprocess.Popen 方法3. run 与 Popen 的同步/异步对比实验三...
    99+
    2024-04-02
  • 基于python实现微信收红包自动化测试脚本(测试用例)
    测试用例(1)  测试用例(2) 代码如下(python): # coding=utf-8 from appium import webdriver impor...
    99+
    2024-04-02
  • python自动化测试开发利器ulipa
    介绍UliPad是一个国人开发的python轻量级编辑器,导向和灵活的编程器。它如类浏览器,代码自动完成许多功能,如:HTML查看器,目录浏览器,向导等。下载与安装下载地址:https://pypi.python.org/pypi/UliP...
    99+
    2023-01-31
    利器 测试 python
  • 关于移动互联网测试的发展史的科普
    我国互联网发展史很年轻,总共也就二三十年,而移动互联网的发展历史更加“幼小”,它在中国的存在也就仅仅十几年左右时间,而移动互联网是基于传统互联网而诞生的。如果要说移动互联网与传统互联网的区别,那就在于是否“移动”。现在的“移动”特性体现在“...
    99+
    2023-06-05
  • 移动端网页开发调试神器Eruda怎么用
    这篇文章将为大家详细讲解有关移动端网页开发调试神器Eruda怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Eruda是谁?大家好,给大家介绍一下,这是我的........
    99+
    2024-04-02
  • 使用Django进行测试驱动开发
    目录创建项目配置 app编写测试用例编写代码执行测试最后的话所谓测试驱动开发(TDD),就是先编写测试用例,然后编写代码来满足测试用例,具体包含以下步骤: 编写测试用例。 ...
    99+
    2024-04-02
  • Windows和夜神模拟器上抓包程序mitmproxy的安装使用详解
    目录windows一、介绍说明二、安装以及配置三、mitmdump的使用夜神模拟器一、安装过程1、准备2.安装命令,在.mitmproxy目录下运行cmd3.重命名+推送至手机4.安...
    99+
    2024-04-02
  • Python自动化测试利器selenium详解
    目录1 自动化测试1.1 单元测试1.2 接口测试1.3 UI测试1.3.1 UI自动化测试的优点1.3.2 UI自动化测试的适用对象1.4 自动化测试流程2 selenium3 s...
    99+
    2023-05-18
    Python自动化测试 Python selenium
  • android模拟器开发和测试nfc应用实例详解
    从Android2.3开始支持NFC。不过NFC应用只能在Android手机(或平板电脑)上测试和开发,而且Android手机还必须有NFC芯 片。而且如果测试NFC传输文件时...
    99+
    2022-06-06
    nfc Android
  • Java基于Rest Assured自动化测试接口详解
    目录前言什么是Rest Assured安装Rest AssuredRest Assured结构Show Me Code统一抽象封装结论前言 不知道大家的项目是否都有对接口API进行自...
    99+
    2023-03-21
    Java Rest Assured自动化测试接口 Java Rest Assured Java 自动化测试接口
  • 接口自动化测试用例详解
    phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数...
    99+
    2023-09-02
    自动化 测试用例 php 自动化测试 软件测试
  • 网络安全渗透测试小程序抓包流程步骤详解
    目录小程序测试流程搜索目标小程序小程序主体信息确认小程序包获取PC端windows端获取小程序包流程移动端解包调试抓包小程序测试流程 分为两个方面,解包可以挖掘信息泄露问题、隐藏的接...
    99+
    2024-04-02
  • 如何使用Django进行测试驱动开发
    本篇内容介绍了“如何使用Django进行测试驱动开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!所谓测试驱动开发(TDD),就是先编写测试...
    99+
    2023-06-21
  • 解放双手,Android开发应该尝试的UI自动化测试
    前言 人们懒的走路,才创造了汽车;  人们懒的爬楼,才创造了电梯;  人们懒的扫地,才创造了自动扫地机器人。  人类的进步,离不开这些喜欢偷懒的人,Google希望,当Andr...
    99+
    2022-06-06
    ui自动化测试 android开发 测试 Android
  • 基于Selenium+Python的web自动化测试框架详解
    目录 一、什么是Selenium? 二、自动化测试框架 三、自动化框架的设计和实现 四、需要改进的模块 五、总结 一、什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的we...
    99+
    2023-09-28
    python selenium 前端 pytest 职场和发展 自动化 运维
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作