質問: --- コメントでのご指摘ありがとうございます。曖昧な質問で大変申し訳ありませんでした。 さらに追記を加えようと思いましたが、 質問が見づらいものになってしまったため、質問を編集し、まとめました。 --- ・作成したいApp ブラウザのパケットをキャプチャするアプリ ・やりたいこと クライアントがブラウザを起動しており、そこにWebページの内容が表示されている。 この状態で、作成したアプリを起動すると、 ブラウザに表示されているWebページが行っている通信データ(HTTPヘッダ、パケット)を取得し表示したい。 そのため、通信が行われるたびに、アプリで表示している情報を更新する必要がある。 ・開発主言語 Java ・動作環境 macOS GoogleChrome ・試したこと WebDriverを用いて、ブラウザを操作しようとしましたが、 ブラウザの立ち上げが操作はできるものの、通信データを取得する方法がわかりませんでした。 また、コメントにもございますが、同じようなことを行っているアプリがProxyを用いていることが分かったのですが、Proxyについて知識がなく、調べようとしてもなかなか情報がでてきません。 ・伺いたいこと 現在開いているWebページのパケットを取得するJavaライブラリは存在するか? 他にJavaでWebページのパケットを取得する方法はあるか? また、JavaでのHttpProxyについて学べる資料とかあれば、教えていただけると助かります。
回答: HTTP Proxyを使う方法もありますが、Google Chrome でしたら、remote-debugging-protocolというのを使う方法もあります。 たぶん、それがWebDriverと同じ仕組みと思われます。 これは、WebSocketを使ってChromeに接続するのですが、ChromeでのDevToolでとれる情報と同様の情報がとれます。 基本的には、Chromeをremote-debug付きで起動したあとに、WebSocketでそこに接続すれば取得できます。 Macでのremote-debugを有効にしたChromeの起動方法は以下にあるので、参考にしてください。