Json 解析HAR文件以获取HTTP头值表

Json 解析HAR文件以获取HTTP头值表,json,jq,har,Json,Jq,Har,我正在使用jq解析一个HAR文件(chromedevtools生成)。我的目标是获得一个“表”(或者csv输出也可以),其中包含服务器根据请求URL返回的特定HTTP头的值列表 要获取所有请求URL的列表,我可以执行以下操作: cat har.json | jq '.log.entries[].request.url' 现在,对于每个请求,我希望有一列包含所有URL,下一列包含在response/headers部分中返回的相应内容编码和内容类型HTTP头值 我使用以下命令设法获取HTTP头的值

我正在使用jq解析一个HAR文件(chromedevtools生成)。我的目标是获得一个“表”(或者csv输出也可以),其中包含服务器根据请求URL返回的特定HTTP头的值列表

要获取所有请求URL的列表,我可以执行以下操作:

cat har.json | jq '.log.entries[].request.url'
现在,对于每个请求,我希望有一列包含所有URL,下一列包含在response/headers部分中返回的相应内容编码和内容类型HTTP头值

我使用以下命令设法获取HTTP头的值:

cat har.json | jq '.log.entries[].response.headers[] | select(.name=="Content-Encoding" or .name=="Content-Type") | .value'
现在,我想混合URL和标题值。我该怎么做


这里有一个困难,因为HTTP服务器可能不会以相同的顺序返回标题。

您可以使用如下筛选器:

[ "url", "content-type", "content-encoding" ],
(.log.entries[] | [
    .request.url,
    ((.response.headers[] | select(.name == "Content-Type").value) // ""),
    ((.response.headers[] | select(.name == "Content-Encoding").value) // "")
])
| @csv

这里的关键是,对于内容类型和编码,如果要控制它们的显示顺序,则需要分别对这些标题执行搜索。然后,您只需将其格式化为可以输出为csv的格式。

请包含json外观的示例。太棒了!!我一个人永远也找不到这个。非常感谢你,杰夫。