通過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.pswp.cn/news/282842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282842.shtml
英文地址,請注明出處:http://en.pswp.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…