2015-09-30 26 views
0

我正在使用jq解析HAR文件(生成chrome devtools)。我的目標是獲得一個「表」(或csv輸出也可以很好),並根據請求URL返回服務器返回的特定HTTP頭的值列表。解析HAR文件以獲取HTTP標頭值表

要獲得所有請求的URL列表,我可以這樣做:

cat har.json | jq '.log.entries[].request.url' 

現在我想,對於每個請求,所有的網址,並與相應的內容編碼下一列列內容類型HTTP標頭值在響應/頭部分中返回。

我設法用下面的命令來獲取HTTP標頭值:

cat har.json | jq '.log.entries[].response.headers[] | select(.name=="Content-Encoding" or .name=="Content-Type") | .value' 

現在我想混URL和標題值。我怎樣才能做到這一點?

這裏有一個困難,因爲HTTP服務器可能不會以相同的順序返回標頭。

+0

請包括json的樣子。 –

回答

1

你可以使用像這樣的過濾器:

[ "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的格式。

+0

太棒了!我本可以永遠不會發現這一點。非常感謝傑夫。 – pmaugeri