通过PowerShell进行网络分析

好久没有写文章,因为确实工作也比较忙。今天周末,稍微有些时间,在解决一个问题时,用到了一点抓取和处理网络数据的小技巧,摘录分享如下。

问题描述

我有一个需求,就是要研究某个网页加载过程中具体发起了多少个请求(从主请求开始,到所有的资源完成),并且要检查每个响应的一些特性,例如是否 包含了某个header信息等。

解决方案

要完成这个需求,跟把一个大象装进冰箱一样简单,大致需要如下几个步骤:

  1. 记录某个网页加载的请求

  2. 把这些请求保存起来

  3. 分析这些请求

假设我们要分析Outlook.com这个网页

8f698bdd4f4dc2e7950210d798ed1dfd.png

要对其网路网络请求进行抓取,其实很简单,所有主流的浏览器都带有一个开发者工具(通过F12可以唤出),然后有一个网络(Network)的面板,很容易就可以把所有的请求记录下来。

3acb020ce5ed4ace918b4ac1eac66934.png

你可以点击每一个请求去查看具体的信息,但我们这里需要集中处理,所以如何把它们全部保存起来呢。这个也不难,点击下图的按钮即可。

829e228635b12225dac8246190ee2a97.png

这样会保存为一个 HAR 文件(本例而言,outlook.com的主界面,有800多个请求,这是现代网站的特点,有很多本地的功能,浏览器已经越来越强大,相当于是一个富客户端)。你会发现在你的电脑上无法直接打开。但是其实,它就是一个纸老虎,是一个json文件,你可以用记事本,或者VS Code这样的工具轻松打开。

cf6ed5a073d4b36a608f59f62efd55aa.png

那么关键的部分终于来了。如何在这一堆文本中快速分析得到你想要的数据。这个 json 文件可不小,大约几十MB呢。实际上有很多办法实现,我用的是PowerShell。

我也不卖什么关子了,这里直接上最终的代码。

(Get-Content .\outlook.live.com.har | `ConvertFrom-Json).log.entries `| Where-Object {($_.response.headers `|where-object {$_.name -eq "xxxx"}).length -gt 0} `| Select-Object @{Name='URL';Expression={$_.request.url}}

这一行代码(没错,其实只有一行,只不过为了看起来直观换行了而已)即可得到我需要的结果

42fe94f787acd7ce392703911e766eec.png

这一行代码的意思是

  1. 读取outlook.live.com.har 这个文件

  2. 将文件内容转换为json对象,并读取log属性的entries对象集合

  3. 针对entries集合进行筛选,查找那些response的headers中,包含了name=xxxx 这个值的entry

  4. 如果找到的,则返回该entry的request对象的url属性

  5. 将所有找到的,用一个列表返回

预告一下,年内会有一本关于企业元宇宙的新书上市,我参与编写了其中的低代码的部分,费了一个月的脑筋,写下两万余言,希望对大家有所帮助吧。

但正如我在那本书中的结论一样,有代码和无代码本质上并无差别。写代码使我快乐,所以才会有这个分享。6b3cb8692d9d85729f71c957c39348ac.png

651f9b1be24430863c341db358c3b0b8.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jvm监控调优常用命令

jvm监控调优常用命令 转载于:https://www.cnblogs.com/likun10579/p/6403324.html

【BZOJ】1013 球形空间产生器

【解析】代数变形高斯消元 [分析] 依据题目以下的提示。设x[i][j]表示第i个点在第j维的坐标。r[j]为圆心在第j维的坐标 能够知道: dis根号(∑(x[i][j]-r[j])^2)。 因为平方的非负性。所以能够推出 dis^2∑(x[i][j]-r[j])^2。 依据平方和公式,(x[i][j]-r[…

c语言不规则窗口,C语言不规则数组和指针

不规则数组是每一行的列数不一样的二维数组,其原理如下图所示,图中的数组有3行,每行有不同的列数。在了解如何创建不规则数组之前,让我们先看一下用复合字面量创建的二维数组。复合字面量是一种C构造,前面看起来像类型…

php spl_autoload_register() 函数

spl_autoload_register()的用法: 其中$this表示当前类,autoload()是我注册的自动加载函数,当然这个只是一个函数名,只要不与php的关键字重复,符合一般函数名的命名规范即可。 使用自动加载之后,当我们在一个…

C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return。结果发现返回的结果依旧是正确的。经过半小时的反汇编调试。证明了我…

C# 为什么说CM+Fody+HC是WPF开发的最强组合?

01—名词解析CM:Caliburn.Micro(简称CM)一经推出便备受推崇,作为一款MVVM开发模式的经典框架,越来越多的受到wpf开发者的青睐.我们看一下官方的描述:Caliburn是一个为Xaml平台设计的小型但功能强大的框架。Micro实现了各种UI模式&…

c语言逻辑运算符两侧运算对象,逻辑运算符两侧运算对象的数据类型是什么?...

逻辑运算符两侧运算对象的数据类型:可以是任何合法的类型数据;因为逻辑运算符两边的运算对象,最终都被转换成bool值(逻辑值)操作。0、null转换为false,而所有非零、非false、非null值转换为true;然后进行运算。逻辑运算…

python-list:列表-元组-字符串

列表 “列表”是一个值,它包含多个字构成的序列。术语“列表值”指的是列表本身(它作为一个值,可以保存在变量中、传递给函数)--:按下标取值、切片、for循环、用于len()以及in not in等 list [aa,bb,cc,dd]是一个简单的…

创建相似对象,就交给『工厂模式』吧

源码&#xff1a; 源代码C# 系列导航&#xff1a; 目录 定义&#xff08;Factory Pattern&#xff09;&#xff1a; 用来创建目标对象的类&#xff0c;将相似对象的创建工作统一到一个类来完成。 一、简单工厂模式&#xff1a; 代码&#xff1a; /// <summary>/// 产品枚…

《ASP.NET Core 6框架揭秘》实例演示[26]:跟踪应用接收的每一次请求

很多人可能对ASP.NET Core框架自身记录的诊断日志并不关心&#xff0c;其实这些日志对纠错排错和性能监控提供了很有用的信息。如果需要创建一个APM&#xff08;Application Performance Management&#xff09;系统来监控ASP.NET Core应用处理请求的性能及出现的异常&#xff…

C语言循环为1404的循环,考试,求大神帮忙,C语言,小弟感激不尽

若有定义语句&#xff1a;int a10; double b3.14;&#xff0c;则表达式Aab值的类型是___________。  (1)A).char B)int C) double D)float(2)若有定义语句&#xff1a;int x12,y8,z;&#xff0c;在其后执行语句z0.9x/y;&#xff0c;则z的值为___________。A)1.9 B)1 C)2 D)2.…

js题集19

1.实现斐波那契数列。达到题目中的效果。不知道斐波那契数列是啥的请自行百度。 function fibonacci(){ } var ffibonacci(); for(var i0;i<10;i){ console.log(f()); } //output:按顺序输出斐波那契数列的数字。 eg&#xff1a; 1 2 3 5 8 13 21 34 55 89转载于:https://ww…

阿里云Maven镜像配置

2019独角兽企业重金招聘Python工程师标准>>> <mirror><id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> …

c语言中有12个球,数学老师做不出来的一道逻辑推理题

同志们 那个球不一定轻啊正确的是平分三份 取两分称if(平)。。。。。。在未称过的4球中取两个放左边 和标准的球称(称过的球一定标准)。。。。。。if(平)。。。。。。。。。。。。在两次都未称过的球中取一个 和标准的称。。。。。。。。。。。。if(平)。。。。。。。。。。。。…

WPF 实现弹幕效果

WPF 实现弹幕效果控件名&#xff1a;BarrageExample作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff1b;此篇代码目的只…

js题集23

1.实现函数--defaultArguments 功能如下&#xff1a; function add(a,b) { return ab;}; var add_ defaultArguments(add,{b:9}); add_(10); // returns 19 add_(10,7); // returns 17 add_(); // returns NaN add_ defaultArguments(add_,{b:3, a:2}); add_(10); // returns…

iteritems()与items()

iteritems&#xff1a;以迭代器对象返回字典键值对 item:以列表形式返回字典键值对 >>> dic {a:3,c:1,b:2} >>> print dic.iteritems() <dictionary-itemiterator object at 0x7fa381599628> >>> print dic.items() [(a, 3), (c, 1), (b, 2)…

WPF效果第一百九十八篇之模块对比

前面效果中分享了彩色马蹄图的效果和范围内拖拽;这不大假期的时间反正没啥事就在家撸代码;今天又是LisBox实现的效果,看最终效果:1、刚开始一朋友说用DataGrid来实现.首先把行对象转换成列对象,至于控制列的话,就后台重新赋值对象来控制前台.我是觉得太费劲直接放弃了;还是首选…

android 与后台通信,Android后台线程和UI线程通讯实例

本节向你展示如何在任务中发送数据给UI线程里的对象&#xff0c;这个特性允许你在后台线程工作&#xff0c;完了在UI线程展示结果。在UI线程定义一个HandlerHandler是Android系统线程管理框架里的一部分。一个Handler对象接收消息&#xff0c;并且运行代码来处理消息。正常情况…

saltstack的状态文件

saltstack状态文件设定&#xff1a;编辑/etc/salt/master&#xff0c;修改其中关于“设置文件的目录”的设置&#xff1a;说明&#xff1a;注意语法格式&#xff0c;顶格/冒号/两个空格state_top: top.sls # The state system uses a "top" file to tell the minions…