前段
○○銀行のアプリで5000兆円手に入れる! とか壮大なことをやってみたかったのですが、コンプライアンス的にも、法的にもマズそうな気がしたので、Fiddlerと弊社のサービス FANSHIP
のデモ用アプリを使って5000兆(円とは言っていない)を手に入れてみます。
Fiddlerの紹介
ひとことで言えばプロキシです。通信を覗き見たり、リクエストを操作したり、レスポンスを改ざんしたりできるスグレモノで、アプリのテストには非常に有用なツールです。例えば、預金残高5000兆円のテストデータを作るためには、△△システムの○○を××して…次にこの○○から□□して…などの調整の手間を省くことができます。
.NETで動いているWindowsのソフトウェアです。MacOSでmonoを使ってインストールはできるのですが、 TLS1.1、1.2に対応していない
ため、今どきのアプリの試験には利用しづらいのが難点です。
(インストール方法や、モバイル端末での利用方法は、参考情報にまとめたのでそちらを御覧ください)
レスポンスを改ざんしてみる
以下のものを準備しました。
- Fiddler
- iPhone端末+FANSHIPのデモ用のアプリ
自分の持っているポイントを、クーポンに交換したりできるよ! というデモ用のアプリです。
まずは通信を見てみる
アプリでポイント残高を表示すると、Fiddlerにずらっと通信の一覧が並びます。この中からポイント残高を返却している通信を探し出して選択します。
レスポンスを保存する
イチからレスポンスヘッダを書くのは面倒なので、レスポンス全体を保存します。通信を選択した状態で、
Save
> Response
> Entire Response
を選ぶと、ファイルに保存できます。
Auto Responder機能を設定する
先程の通信を選んだままの状態で、
右ウィンドウの AutoResponder
タブ > Add Rule
ポタンを押すと Rule Editor
に EXACT: [URI文字列]
が追加されます。
続いて、条件にマッチした場合の操作を選択します。今回はレスポンスのファイルを指定したいので Find a file
を選択してから Save
ボタンを押します。
Enable rules
にチェックを入れると、AutoResponder機能が有効になります。
なお、隣にある Unmatched requests passthrogh
のチェックも忘れずに入れておきましょう。「条件にマッチしていない通信は、通常通りの通信を返却する」という設定です。
レスポンスを書き換える
5000兆ポイントをゲットするため、適当なエディタで、レスポンスのファイルの100ポイントを5000兆ポイントに変更します。 "point":100
という部分があるので、ここを書き換えればポイントが書き換わりそうです。
が、レスポンスBodyを書き換えただけでは、端末上ではエラーになってしまいます。
100を5000000000000000に変更したので、コンテンツが13文字増えていますね。ということで、Content-Length
の修正も忘れずにやりましょう。
これで5000兆ゲット!
これで5000兆(※ポイント)ゲット! ・・・ん?
表示が2行になってしまい、なんだかカッコ悪い感じになってしまいました。
実運用では5000兆ポイントを付与することはありえないので、問題ないということにしましょう。
まとめ
このように簡単に通信を改ざんすることができるので、アプリのテストにおいてFiddlerは非常に有用なツールです。が、くれぐれも悪用はしないように・・・お願いします。
参考情報
HTTP通信のキャプチャをとるツールFiddlerをWindowsにインストールする
https://qiita.com/taketakekaho/items/397bc6e9afa32329edd0
fiddlerでiPhoneの通信を見るためにやったことメモ
https://qiita.com/dolls/items/6ad469c271f88a95a6f9