WebBrowserControlで通信をキャプチャしたい
投稿者 KOZ  (社会人)
投稿日時
2024/11/4 11:20:14
IE で表示できないコンテンツが増えてきたので、nuget で Microsoft.Web.WebView2 を取得し WebView2 を使ったほうがいいと思います。
WebResourceResponseReceived イベントで関連ファイルの URL をキャプチャすることが出来ますし、ファイルの中身を読み込むこともできます。
下の例は、このページに含まれる .js ファイルの中身を表示するプログラムです。
WebResourceResponseReceived イベントで関連ファイルの URL をキャプチャすることが出来ますし、ファイルの中身を読み込むこともできます。
下の例は、このページに含まれる .js ファイルの中身を表示するプログラムです。
Imports System.IO
Imports Microsoft.Web.WebView2.Core
Public Class Form1
Private WithEvents coreWebView As CoreWebView2
Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Await WebView21.EnsureCoreWebView2Async()
coreWebView = WebView21.CoreWebView2
coreWebView.Navigate("https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30992")
End Sub
Private Async Sub CoreWebView_WebResourceResponseReceived(sender As Object,
e As CoreWebView2WebResourceResponseReceivedEventArgs) _
Handles coreWebView.WebResourceResponseReceived
Dim uri = New Uri(e.Request.Uri)
If uri.AbsolutePath.EndsWith(".js", StringComparison.OrdinalIgnoreCase) Then
Dim stream = Await e.Response.GetContentAsync()
Using reader = New StreamReader(stream)
Debug.WriteLine($"{reader.ReadToEnd()}")
End Using
End If
End Sub
End Class
投稿者 まだまだ  (社会人)
投稿日時
2024/11/5 00:47:02
KOZさん、早速ご回答ありがとうございます!
IEベースのWebBrowserControlしか知りませんでしたが、EdgeベースのWebView2なるものがあるのですね、大変勉強になりました。
早速WebView2コンポーネントを入れてみたところ、ご呈示のようなコードで無事ページ関連ファイルのURLをキャプチャすることができました。
ありがとうございました!
IEベースのWebBrowserControlしか知りませんでしたが、EdgeベースのWebView2なるものがあるのですね、大変勉強になりました。
早速WebView2コンポーネントを入れてみたところ、ご呈示のようなコードで無事ページ関連ファイルのURLをキャプチャすることができました。
ありがとうございました!
各ページを表示する際に発生する通信
(例えば、HTMLから呼び出されるimgファイルやjsファイル、JavaScriptによって読み込まれる各種ファイルなど)のURLをキャプチャすることは可能なのでしょうか。
(ChromeやFirefoxなどの開発ツールのネットワークタブから確認できるような内容のイメージです。)
可能であれば、その取得方法をご教授いただけないでしょうか。
どうぞよろしくお願いいたします。