LoginSignup
17
17

More than 5 years have passed since last update.

Goのプログラムでどういうリクエストを飛ばしているのか見たい

Last updated at Posted at 2016-03-21

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なら以下のようなプログラムを書きます。

main.go
proxyURL, _ := url.Parse("http://localhost:8008")
myClient = &http.Client{
    Transport: &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    },
}

http.Get()のようなDefaultClientを使う実装にしている場合は以下のようにするとできます。

main.go
proxyURL, _ := url.Parse("http://localhost:8008")
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyURL)}

もちろんGo以外でもプロクシサーバーを通す設定にすれば、プログラムがどういうリクエストを飛ばしているのか見ることができます。

めっちゃ便利なのでおすすめです。

ところで『Betwixt』ってなんて読むんですかね。知っている方いたら教えてください!

17
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17