Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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』ってなんて読むんですかね。知っている方いたら教えてください!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away