介绍 Flashback,一个互联网模拟工具(2)

为了录制场景,你必须向目的地址发出真实的外部请求,然后 HTTPS 请求和响应将使用你指定的匹配规则存储在场景中。在录制时,Flashback 的行为与典型的 MITM(中间人)代理完全相同 - 只有在重放模式下,连接流和数据流仅限于客户端和代理之间。

要实际看下 Flashback,让我们创建一个场景,通过执行以下操作捕获与 example.org 的交互:

1、 取回 Flashback 的源码:

gitclone https://github.com/linkedin/flashback.git

2、 启动 Flashback 管理服务器:

./startAdminServer.sh -port 1234

3、 注意上面的 Flashback 将在本地端口 5555 上启动录制模式。匹配规则需要完全匹配(匹配 HTTP 正文、标题和 URL)。场景将存储在 /tmp/test1 下。

4、 Flashback 现在可以记录了,所以用它来代理对 example.org 的请求:

curl http://www.example.org -x localhost:5555 -X GET

5、 Flashback 可以(可选)在一个记录中记录多个请求。要完成录制,关闭 Flashback

6、 要验证已记录的内容,我们可以在输出目录(/tmp/test1)中查看场景的内容。它应该包含以下内容

在 Java 代码中使用 Flashback也很容易。

如何重放 HTTP 事务

要重放先前存储的场景,请使用与录制时使用的相同的基本设置。唯一的区别是将“场景模式”设置为上述步骤 3 中的“播放”

验证响应来自场景而不是外部源的一种方法,是在你执行步骤 1 到 6 时临时禁用 Internet 连接。另一种方法是修改场景文件,看看响应是否与文件中的相同。

这是 Java 中的一个例子

如何记录并重播 HTTPS 事务

使用 Flashback 记录并重放 HTTPS 事务的过程非常类似于 HTTP 事务的过程。但是,需要特别注意用于 HTTPS SSL 组件的安全证书。为了使 Flashback 作为 MITM 代理,必须创建证书颁发机构(CA)证书。在客户端和 Flashback 之间创建安全通道时将使用此证书,并允许 Flashback 检查其代理的 HTTPS 请求中的数据。然后将此证书存储为受信任的源,以便客户端在进行调用时能够对 Flashback 进行身份验证。有关如何创建证书的说明,有很多类似这样的资源是非常有帮助的。大多数公司都有自己的管理和获取证书的内部策略 - 请务必用你们自己的方法。

这里值得一提的是,Flashback 仅用于测试目的。你可以随时随地将 Flashback 与你的服务集成在一起,但需要注意的是,Flashback 的记录功能将需要存储所有的数据,然后在重放模式下使用它。我们建议你特别注意确保不会无意中记录或存储敏感成员数据。任何可能违反贵公司数据保护或隐私政策的行为都是你的责任。

一旦涉及安全证书,HTTP 和 HTTPS 之间在记录设置方面的唯一区别是添加了一些其他参数。

RootCertificateInputStream: 表示 CA 证书文件路径或流。

RootCertificatePassphrase: 为 CA 证书创建的密码。

CertificateAuthority: CA 证书的属性

查看 Flashback 中用于记录 HTTPS 事务的代码,它包括上述条目。

用 Flashback 重放 HTTPS 事务的过程与录制相同。唯一的区别是场景模式设置为“播放”。这在此代码中演示。

支持动态修改

为了测试灵活性,Flashback 允许你动态地更改场景和匹配规则。动态更改场景允许使用不同的响应(如 success、time_out、rate_limit 等)测试相同的请求。场景更改仅适用于我们已经 POST 更新外部资源的场景。以下图为例。

Scenarios where we have POSTed data to update the external resource.

Scenarios where we have POSTed data to update the external resource.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/13317.html