如何在与他人共享之前从 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 值的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HTML 文件生成 HAR 文件?

如何从 HAR 文件中获取总网页响应时间?

如何从 har 文件计算 dom 和 http 负载

如何在java中解析HAR文件

如何通过命令提示符从 HAR 文件生成 Gatling 模拟类

如何确保休眠 5 在与共享主键的一对一关系中保持正确的顺序