如何在与他人共享之前从 HAR 文件中删除 Cookie 值
Posted
技术标签:
【中文标题】如何在与他人共享之前从 HAR 文件中删除 Cookie 值【英文标题】:How to remove Cookie value from HAR file before sharing it with another person 【发布时间】:2021-04-27 10:01:36 【问题描述】:使用 HAR 文件诊断 Web 应用程序很常见,尤其是在寻求他人的技术支持时。但是,HAR 文件包含敏感信息,例如请求 cookie。例如,如果关注this guide,如果未清理 HAR 文件,它可以将 cookie 值共享给技术支持。
所以我更喜欢在共享 HAR 文件之前删除请求 cookie。
有什么简单的命令可以做到吗?
【问题讨论】:
我使用cat given.har | jq 'del(.log.entries[].request.headers[] | select(.name == "Cookie"))' | jq 'del(.log.entries[].request.cookies)'
,但期待更好的答案
请尽可能遵循minimal reproducible example 准则。特别是,查看来自 cat given.har
的相关摘录会很有用
@shawnzhu 这个用例似乎合法且实用。既然您要求更好 答案,那么 更好 答案将如何改进您现有的 oneliner?谢谢
@shawnzhu 对于它的价值,有一个由 Google 编写的 HAR sanitizer here,was also dockerized 可在 dockerhub 上找到。它能够剥离cookies, headers and various query string parameters。
@wsdookadr 我目前的方法只是一个快速的想法。我很想得到关于除了 cookie 之外应该清理的任何其他内容的反馈。我喜欢 HAR sanitizer 的答案,并愿意接受它作为答案。
【参考方案1】:
随意删除所有request.cookies:
jq 'del(.. | .request?.cookies?)' www.ibm.com.har
举个例子,给定这个 JSON 文件:
$ jq -M . /tmp/hartest.json
"one":
"foo":
"bar": true,
"baz": 23
,
"two":
"foo":
"bar": "Hello",
"baz": "World"
,
"three":
"fu":
"bar": "gone",
"baz": "forgotten"
我可以用这个命令去掉所有的'bar'键:
jq -M 'del( .. | .bar?)' /tmp/hartest.json
通过diff
运行前后:
$ diff <(jq -M . /tmp/hartest.json) <(jq -M 'del( .. | .bar?)' /tmp/hartest.json )
4d3
< "bar": true,
10d8
< "bar": "Hello",
16d13
< "bar": "gone",
如果我只想摆脱 '.foo.bar',我会使用这个:
jq -M 'del( .. | .foo?.bar?)' /tmp/hartest.json
再一次,贯穿diff
给了我们:
$ diff <(jq -M . /tmp/hartest.json) <(jq -M 'del( .. | .foo?.bar?)' /tmp/hartest.json )
4d3
< "bar": true,
10d8
< "bar": "Hello",
【讨论】:
以上是关于如何在与他人共享之前从 HAR 文件中删除 Cookie 值的主要内容,如果未能解决你的问题,请参考以下文章