デバッグツールとしてBurp Suiteを使っている

例えば、

  • ファイルのアップロード処理
  • CSVのインポート処理
  • 入力項目の多い登録処理

上記のような処理をE2Eでデバッグ実行しようとすると、ファイルを準備したり値を画面からいっぱい設定したり・・・それを何度も実行しようとするとそこそこ手間だったりします。 さらにテストコードがないようなコードの挙動を調査するときはもう大変。

今まで私はそのようなケースでは、一度chromeのCopy as cURLcurlコマンドを取得してそれを使うようにしていたのですが、 最近では、Burp Suiteを使っています。

Burp Suiteというとセキュリティ診断などで使用するイメージが強いかもしれませんが、 ローカルプロキシツールがメインとなるツール(でいいのかな?)でリクエストの保持・内容の変更などが行なえるので、 これを利用しデバッグをしています。

私がデバッグするときは、このBurp SuiteのRepeater機能を使っています。 インストール方法やRepeater機能の使い方については、以下に丁寧に書かれているので、こちらを見ていただけるとわかるかと思います。

ローカルプロキシツールBurpの使い方 その1 ~ Proxy機能編 ~ | パーソルテクノロジースタッフ株式会社

ローカルプロキシツールBurpの使い方 その2 ~ Repeater機能編~ | パーソルテクノロジースタッフ株式会社

xdebugを併用する

さらに、PHPの場合、xdebugのリモートデバッグを併用するともっと楽にデバッグできます。

以下は、昔書いた Docker + PhpStorm 環境でXdebugのリモートデバッグが使えるようにするための手順

takapi86.hatenablog.com

私がやっているデバッグの一連の流れ

私はよく以下の方法で、デバッグを行っています。

  • ローカルプロキシを設定済みのブラウザを立ち上げる
  • Burp Suiteの[Proxy]タブ->[Intercept]タブで開いた画面からInterceptをoffにしておく
  • デバッグしたいWebアプリケーションの処理を実行する
  • Burp Suiteの[Proxy]タブ->[HTTP history]タブをクリックするとこれまでにリクエストした一覧が出てくるので、デバッグしたいリクエストを[右クリック]->[Send to Repeater]をクリック
  • [Repeater]タブをクリックすると、送ったリクエストの内容が表示されるので、[Send]ボタンを押す
  • そうすると、先程画面から実行したリクエストが再度発行されるので、デバッグしたいタイミングでこの[Send]ボタンを押していく
    • ※ リクエストの内容を変えたい場合は、同画面の[Params]から変更することができます。
  • xdebugで、ブレイクポイントを置いてあげるとそこで止まるので、そこで変数の値をみたり色々しながら、デバッグしていく

といった流れでよく作業をしています。 ※ CSRF対策などでワンタイムトークンを発行している場合など、上手くいかないケースもあるので注意

何かもっと良い方法があれば教えていただけると嬉しいです。

以上、参考までに