Javaを用いてブラウザのHTTPヘッダを取得する方法

投稿者: Anonymous

コメントでのご指摘ありがとうございます。曖昧な質問で大変申し訳ありませんでした。
さらに追記を加えようと思いましたが、
質問が見づらいものになってしまったため、質問を編集し、まとめました。


・作成したいApp
ブラウザのパケットをキャプチャするアプリ

・やりたいこと
クライアントがブラウザを起動しており、そこにWebページの内容が表示されている。
この状態で、作成したアプリを起動すると、
ブラウザに表示されているWebページが行っている通信データ(HTTPヘッダ、パケット)を取得し表示したい。
そのため、通信が行われるたびに、アプリで表示している情報を更新する必要がある。

・開発主言語
Java

・動作環境
macOS
GoogleChrome

・試したこと
WebDriverを用いて、ブラウザを操作しようとしましたが、
ブラウザの立ち上げが操作はできるものの、通信データを取得する方法がわかりませんでした。

また、コメントにもございますが、同じようなことを行っているアプリがProxyを用いていることが分かったのですが、Proxyについて知識がなく、調べようとしてもなかなか情報がでてきません。

・伺いたいこと
現在開いているWebページのパケットを取得するJavaライブラリは存在するか?
他にJavaでWebページのパケットを取得する方法はあるか?

また、JavaでのHttpProxyについて学べる資料とかあれば、教えていただけると助かります。

解決

HTTP Proxyを使う方法もありますが、Google Chrome でしたら、remote-debugging-protocolというのを使う方法もあります。
たぶん、それがWebDriverと同じ仕組みと思われます。

https://chromedevtools.github.io/debugger-protocol-viewer/1-1/
これは、WebSocketを使ってChromeに接続するのですが、ChromeでのDevToolでとれる情報と同様の情報がとれます。

基本的には、Chromeをremote-debug付きで起動したあとに、WebSocketでそこに接続すれば取得できます。
Macでのremote-debugを有効にしたChromeの起動方法は以下にあるので、参考にしてください。
http://www.coltware.com/2016/06/13/console_log_to_file/

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *