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/4 00:56:51
WebBrowserConrolを使用してウェブページを表示する際、ウェブページのURLはNavigatingイベントやUrlプロパティなどで容易に取得可能ですが、
各ページを表示する際に発生する通信
(例えば、HTMLから呼び出されるimgファイルやjsファイル、JavaScriptによって読み込まれる各種ファイルなど)のURLをキャプチャすることは可能なのでしょうか。
(ChromeやFirefoxなどの開発ツールのネットワークタブから確認できるような内容のイメージです。)
可能であれば、その取得方法をご教授いただけないでしょうか。
どうぞよろしくお願いいたします。
各ページを表示する際に発生する通信
(例えば、HTMLから呼び出されるimgファイルやjsファイル、JavaScriptによって読み込まれる各種ファイルなど)のURLをキャプチャすることは可能なのでしょうか。
(ChromeやFirefoxなどの開発ツールのネットワークタブから確認できるような内容のイメージです。)
可能であれば、その取得方法をご教授いただけないでしょうか。
どうぞよろしくお願いいたします。
IEベースのWebBrowserControlしか知りませんでしたが、EdgeベースのWebView2なるものがあるのですね、大変勉強になりました。
早速WebView2コンポーネントを入れてみたところ、ご呈示のようなコードで無事ページ関連ファイルのURLをキャプチャすることができました。
ありがとうございました!