Goとかで外部にリクエストを投げるようなプログラムを書くと、実際にどういうリクエストを投げて、どういうレスポンスを受けているのか一見分かりません。
WebアプリケーションならChromeのDeveloper Toolsを使えば簡単にいい感じに見ることができます。リクエストを投げるプログラムでもChromeのDeveloper Toolsを使って飛ばしているリクエストとレスポンスが見れるととても便利そうです。そんなことが実現できてしまう方法を紹介します。
kdzwinel/betwixt: Web Debugging Proxy based on Chrome DevTools Network panel.
今流行りのElectronアプリです。READMEに貼られているGifアニメを見れば全て察せるでしょう。Releases · kdzwinel/betwixtここからビルド済みのものをダウンロードできるのでインストールをしておきます。
Betwixtをインストールしたら、とりあえず起動します。デフォルトで8008番ポートを使ったプロクシサーバーを起動してくれます。なので本家のREADMEに書いてある方法でOSのネットワーク設定をいじって、localhost:8008をプロクシサーバーに指定することでどういうリクエストを送っているのか手軽に確認できます。
特定のプログラムでどういうリクエストを流しているのか見たい場合も同様です。例えばGoなら以下のようなプログラムを書きます。
proxyURL, _ := url.Parse("http://localhost:8008")
myClient = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyURL),
},
}
http.Get()
のようなDefaultClient
を使う実装にしている場合は以下のようにするとできます。
proxyURL, _ := url.Parse("http://localhost:8008")
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyURL)}
もちろんGo以外でもプロクシサーバーを通す設定にすれば、プログラムがどういうリクエストを飛ばしているのか見ることができます。
めっちゃ便利なのでおすすめです。
ところで『Betwixt』ってなんて読むんですかね。知っている方いたら教えてください!