elgigi/har-parser

HAR 文件解析库

v1.1.0 2024-03-22 11:52 UTC

This package is auto-updated.

Last update: 2024-09-22 12:50:15 UTC


README

Latest Version Software license Build Status Quality Grade Total Downloads

解析和生成 HAR 文件格式 的库。

用法

使用 Parser 对象或 Log 实体加载您的 HAR 文件。

使用 Parser

use ElGigi\HarParser\Parser;

$harFile = new Parser();

$log = $harFile->parse('/path/of/my/file.har', contentIsFile: true);
$log = $harFile->parse(['my' => 'har decoded']);

使用 Log 实体类

use ElGigi\HarParser\Entities\Log;

$log = Log::load(json_decode(file_get_contents('/path/of/my/file.har'), true));

实体

HAR 文件由多个实体分布

  • 日志
    • 创建者
    • 浏览器
    • 页面[]
      • 页面时间
    • 条目[]
      • 请求
        • Cookie[]
        • 头部[]
        • 请求数据
      • 响应
        • Cookie[]
        • 头部[]
        • 内容
      • 时间

构建器

有两种构建器可用于从实体构建 HAR 文件

  • Builder: 从其他实体构建 Log 实体
  • BuilderStream: 直接在流中构建 JSON 文件,以防止内存使用

两者都实现了 BuilderInterface

  • BuilderInterface::reset(): void: 重置构建器数据
  • BuilderInterface::setVersion(string $version): void: 定义 HAR 文件版本(默认:1.2)
  • BuilderInterface::setCreator(string $creator): void: 设置创建者实体
  • BuilderInterface::setBrowser(string $browser): void: 设置浏览器实体
  • BuilderInterface::addPage(Page ...$page): void: 添加页面实体(或多个页面)
  • BuilderInterface::addEntry(Entry ...$entry): void: 添加条目实体(或多个条目)
  • BuilderInterface::setComment(?string $comment): void: 定义 HAR 文件注释

对于流构建器,构造函数尝试一个有效的资源(可写和可查找)。

对于标准构建器,构造函数接受一个 HAR 文件,例如,完成现有的 HAR。

匿名化 HAR

在某些情况下,例如单元测试,您可能需要匿名化您的 HAR 文件。

Anonymizer 类就是为此而设计的!

class Anonymizer
{
    /**
     * Add header to redact.
     *
     * @param string ...$regex
     *
     * @return void
     */
    public function addHeaderToRedact(string ...$regex): void;

    /**
     * Add query string to redact.
     *
     * @param string ...$regex
     *
     * @return void
     */
    public function addQueryStringToRedact(string ...$regex): void;

    /**
     * Add post data to redact.
     *
     * @param string ...$regex
     *
     * @return void
     */
    public function addPostDataToRedact(string ...$regex): void;

    /**
     * Add accepted mime.
     *
     * @param string ...$mime
     *
     * @return void
     */
    public function addAcceptedMime(string ...$mime): void;

    /**
     * Add content to redact.
     *
     * @param array $regexes
     *
     * @return void
     */
    public function addContentToRedact(array $regexes): void;

    /**
     * Add callback.
     *
     * @param callable ...$callback
     *
     * @return void
     */
    public function addCallback(callable ...$callback): void;

    /**
     * Anonymize HAR file.
     *
     * @param Log $log
     *
     * @return Log
     * @throws InvalidArgumentException
     */
    public function anonymize(Log $log): Log;
}