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

Fiddlerで5000兆を手に入れてみるテスト

前段

○○銀行のアプリで5000兆円手に入れる! とか壮大なことをやってみたかったのですが、コンプライアンス的にも、法的にもマズそうな気がしたので、Fiddlerと弊社のサービス FANSHIP のデモ用アプリを使って5000兆(円とは言っていない)を手に入れてみます。

Fiddlerの紹介

ひとことで言えばプロキシです。通信を覗き見たり、リクエストを操作したり、レスポンスを改ざんしたりできるスグレモノで、アプリのテストには非常に有用なツールです。例えば、預金残高5000兆円のテストデータを作るためには、△△システムの○○を××して…次にこの○○から□□して…などの調整の手間を省くことができます。

.NETで動いているWindowsのソフトウェアです。MacOSでmonoを使ってインストールはできるのですが、 TLS1.1、1.2に対応していない ため、今どきのアプリの試験には利用しづらいのが難点です。

(インストール方法や、モバイル端末での利用方法は、参考情報にまとめたのでそちらを御覧ください)

レスポンスを改ざんしてみる

以下のものを準備しました。

  • Fiddler
  • iPhone端末+FANSHIPのデモ用のアプリ

アプリのイメージ

自分の持っているポイントを、クーポンに交換したりできるよ! というデモ用のアプリです。

まずは通信を見てみる

アプリでポイント残高を表示すると、Fiddlerにずらっと通信の一覧が並びます。この中からポイント残高を返却している通信を探し出して選択します。

2019-12-06 (12).png

レスポンスを保存する

イチからレスポンスヘッダを書くのは面倒なので、レスポンス全体を保存します。通信を選択した状態で、

Save > Response > Entire Response を選ぶと、ファイルに保存できます。

2019-12-06 (24).png

Auto Responder機能を設定する

先程の通信を選んだままの状態で、

右ウィンドウの AutoResponder タブ > Add Rule ポタンを押すと Rule EditorEXACT: [URI文字列] が追加されます。

2019-12-06 (26).png

続いて、条件にマッチした場合の操作を選択します。今回はレスポンスのファイルを指定したいので Find a file を選択してから Save ボタンを押します。
2019-12-06 (27).png

Enable rules にチェックを入れると、AutoResponder機能が有効になります。
なお、隣にある Unmatched requests passthrogh のチェックも忘れずに入れておきましょう。「条件にマッチしていない通信は、通常通りの通信を返却する」という設定です。
2019-12-06_enable.png

レスポンスを書き換える

5000兆ポイントをゲットするため、適当なエディタで、レスポンスのファイルの100ポイントを5000兆ポイントに変更します。 "point":100 という部分があるので、ここを書き換えればポイントが書き換わりそうです。
2019-12-06 (16).png

が、レスポンスBodyを書き換えただけでは、端末上ではエラーになってしまいます。
IMG_1606.PNG

100を5000000000000000に変更したので、コンテンツが13文字増えていますね。ということで、Content-Length の修正も忘れずにやりましょう。

2019-12-06 (22).png

これで5000兆ゲット!

これで5000兆(※ポイント)ゲット! ・・・ん?

IMG_1607.PNG

表示が2行になってしまい、なんだかカッコ悪い感じになってしまいました。
実運用では5000兆ポイントを付与することはありえないので、問題ないということにしましょう。

まとめ

このように簡単に通信を改ざんすることができるので、アプリのテストにおいてFiddlerは非常に有用なツールです。が、くれぐれも悪用はしないように・・・お願いします。

参考情報

HTTP通信のキャプチャをとるツールFiddlerをWindowsにインストールする
https://qiita.com/taketakekaho/items/397bc6e9afa32329edd0

fiddlerでiPhoneの通信を見るためにやったことメモ
https://qiita.com/dolls/items/6ad469c271f88a95a6f9

wataru_kojima
iOS/Androidなどのアプリ開発のPMをやっています。
iridge
O2OやFinTechソリューションの企画・開発・運用をしています。
https://iridge.jp/
Why not register and get more from Qiita?
  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