Lyrebird 基于拦截以及模拟 HTTP/HTTPS 网络请求 面向移动应用的插件化测试平台

发布于 2021-07-27 20:34:17 字数 6034 浏览 1872 评论 0

Lyrebird 不止提供UI操作,也可以通过API控制所有功能。

Lyrebird 也可作为服务端接口测试mock工具使用。

Lyrebird (琴鸟) 不但美丽壮观,且能歌善舞。它不但能模仿各种鸟类的鸣叫声,还能学人间的各种声音。如汽车喇叭声、火车喷气声、斧头伐木声、修路碎石机声及领号人的喊叫声等。歌声婉转动听,舞姿轻盈合拍,是澳洲鸟类中最受人喜爱的珍禽之一。

特点

  • 并行测试:通过多个插件并行工作,一次测试后获得多角度数据。
  • 自定义插件:支持快速开发自定义插件,实现定制化的网络数据处理。
  • 轻巧易用:一键安装。自动录制数据。可通过UI或API完全控制。

环境要求

  • macOS
  • Python >= 3.6
# 推荐使用Homebrew(https://brew.sh/#install)安装Python3
brew install python3

安装

# 安装lyrebird
pip3 install lyrebird

启动

lyrebird

连接移动设备

  • 启动Lyrebird后,移动设备需要通过代理的方式将请求数据接入。
  • 将移动设备的代理地址设为当前电脑地址,默认端口为4272(IP地址可查看Lyrebird启动时输出的日志)。
  • 被测设备上用浏览器打开 http://mitm.it, 选择对应操作系统安装证书。

现在,可以开始操作移动设备了。Lyrebird将显示捕获到的HTTP/HTTPS请求。

查看及录制数据

如上图,准备工作完成后,操作手机即可以看到HTTP/HTTPS请求的数据。

上图中按钮栏的按钮依次是:

    1. 录制按钮
    2. 清除inspector数据按钮
    3. 新建mock数据组按钮
    4. 激活mock数据组选择器
    5. 取消激活mock数据按钮

操作图中(1)按钮栏的录制按钮,则可开始数据的录制工作。录制数据要求新建或选中一组mock数据。即操作按钮3或4。

激活mock数据选择器,选择mock数据后。经过Lyrebird的请求会被mock,如果mock数据中没有匹配的数据,则会代理该请求。mock数据可由左边导航栏切换到 DataManager 界面进行编辑管理


基本命令

lyrebird

以缺省参数启动lyrebird

lyrebird -v

以输出详细日志模式启动lyrebird

lyrebird -b

启动lyrebird不默认打开浏览器

lyrebird --mock 9090 --proxy 4272 --data . --config your/config/file

指定参数启动lyrebird

参数:

  --mock 默认9090 , mock服务及前端端口

  --proxy 默认4272, 代理服务端口

  --data 默认./data, mock数据根目录

  --config 默认~/.lyrebird/conf.json, lyrebird启动配置

在代码中使用 Lyrebird

import lyrebird
server = lyrebird.Server()

# 设置服务端口及数据根目录, 不设置可以使用默认值 mock port = 9090, proxy port = 4272, data root dir = ./data
server.mock_port(9090)
server.proxy_port(4272)
server.data_root_dir('./data')  

# 启动服务
server.start()

# 停止服务
server.stop()

开发者指南

配置 Lyrebird 工程

# clone 代码
git clone https://github.com/meituan/lyrebird.git

# 进入工程目录
cd lyrebird

# 初始化开发环境
sh dev.sh

# 使用IDE打开工程(推荐Pycharm或vscode)

# 在IDE中执行debug.py即可开始调试

感谢

本工具中的代理功能使用 mitmproxy 实现。

开发者指南

开发环境

macOS

目前支持macOS系统

Python3

建议使用 brew 安装 python3,可以避免很多问题

brew install python3

配置 Lyrebird 工程

# clone 代码
git clone https://github.com/meituan/lyrebird.git

# 进入工程目录
cd lyrebird

# 初始化开发环境
sh dev.sh

# 使用IDE打开工程(推荐Pycharm或vscode)

# 在IDE中执行debug.py即可开始调试

创建自己插件

通过Lyrebird插件模板创建插件工程

准备环境

# 创建工程目录
mkdir my_plugin_project
cd my_plugin_project
# 创建python虚拟环境
python3 -m venv venv
source venv/bin/activate

安装 lyrebird

pip3 install lyrebird

生成模板工程

lyrebird-plugin build .

使用 Pycharm 等打开此目录即可开始插件开发

请注意修改 setup.py 中的 name、packages、entry_points,尽量避免重名。

FAQ 常见问题

IOS10.3 系统安装 mitmproxy 证书后仍无法抓取 https 接口数据

IOS10.3 升级了ssl证书验证机制。 如果只是安装了证书而没有在关于里添加信任,客户端会主动关闭连接。 (10.2安装了证书,在升级到10.3时,默认是信任的)

解决办法:

在安装了相关证书后,需要到设置 → 通过 → 关于本机 → 证书信任设置,选择对应的证书,启用完全信任。

执行 setup.sh 时,提示 SSL 证书验证失败

在pip安装依赖库的时候提示“There was a problem confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed”

解决办法1:

当前https请求使用了未认证的ssl证书,请检查当前环境是不是在代理环境下,如果是,请关闭代理服务,中心执行setup即可。

解决办法2:

如果仍要在此环境下使用,需在setup.sh中做如下修改:

pip3 install -r ./requirements.txt --trusted-host pypi.python.org

执行setup时报错,没有执行虚拟环境中的pip3

由于本地python3环境中没有pip,创建虚拟环境中不包含pip命令,从而导致虚拟环境变量没有覆盖系统的pip。

解决办法:

重新安装python3

  • 如果使用brew安装的可以使用brew uninstall python3卸载
  • 如果使用其他方式安装的可以直接删除python安装的目录。
  • 然后再使用brew install python3安装python3

注意: 不要误删/System目录下的python2

使用 brew 时提示安装权限问题或安装其他依赖失败

由于macos10.12后进行了安全机制更新,旧版本的brew即使在更新后仍无法正常工作。需要卸载后重新安装即可。

uninstall
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
homebrew doc

执行 setup 报错,pip install PyYAML 失败

错误提示: 使用xcode build 失败。

解决办法:

需要切换 xcode sdk

在 xcode preferences 中选择 8.0 以上的 xcode command line tools,然后重新 build。

提示无法找到 lyrebird 命令

Python 安装到系统 Library 目录下时,没有足够的权限。 可以尝试使用虚拟环境。

python3 -m venv venv
source venv/bin/activate
pip3 install lyrebird

项目地址:https://github.com/meituan/lyrebird

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84959 人气
更多

推荐作者

花开柳相依

文章 0 评论 0

zyhello

文章 0 评论 0

故友

文章 0 评论 0

对风讲故事

文章 0 评论 0

Oo萌小芽oO

文章 0 评论 0

梦明

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文