Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
モバイルアプリ開発者のための mitmproxy 入門
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hiroshi Kurokawa
August 20, 2014
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モバイルアプリ開発者のための mitmproxy 入門
potatotips 第8回で発表した資料です (2014/08/20)
Hiroshi Kurokawa
August 20, 2014
More Decks by Hiroshi Kurokawa
See All by Hiroshi Kurokawa
ART of Q
hkurokawa
3
1.2k
Chasing TransactionTooLargeException in The Wild
hkurokawa
0
530
Code Review as a Collaborative Journey
hkurokawa
3
1.1k
Room 2.1
hkurokawa
2
970
Introduction to Q#
hkurokawa
0
130
Surviving a discontinuous world
hkurokawa
1
3k
Making onActivityResult More Easy
hkurokawa
1
410
RxJava実践入門
hkurokawa
2
690
How to start a podcast
hkurokawa
1
450
Other Decks in Technology
See All in Technology
MCPをつなげて作る組織横断のAIエージェント基盤
tsubakimoto_s
0
130
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
26
12k
テックカンファレンス三大ステークホルダーの文化人類学 ─ 違いを認め合う関係性作り
bash0c7
1
260
穢れた技術選定について
watany
19
6.2k
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
5
470
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
660
AI工学特論: MLOps・継続的評価
asei
7
1.7k
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
530
20260720_クラウド女子会×PyLadiesTokyoコラボ Amazon Bedrock ハンズオン用資料
yuuka51
2
110
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
2
1.1k
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
540
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
290
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
410
GitHub's CSS Performance
jonrohan
1033
470k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
390
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Abbi's Birthday
coloredviolet
3
8.8k
Thoughts on Productivity
jonyablonski
76
5.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
270
Music & Morning Musume
bryan
47
7.3k
How to make the Groovebox
asonas
2
2.3k
Transcript
モバイルアプリ 開発者のための mitmproxy 入門
mitmproxy とは mitm (Man-in-the-Middle) proxy とは、 マンインザミドル型のプロキシである 通常のプロキシができることはだいたいできる 通信の傍受 通信の改竄
リプレイ モバイル向けのサポー トが手厚い Android / iOS / browser ssh 通信もサポー ト Wi-fi 接続時のみ使用可能
セットアップはとても簡単 1. mitmproxy を自分のマシンにインストー ルして起動 2. Android/iPhone のネットワー ク設定を変更してプロキシ に、
ステップ 1. で起動した mitmproxy の情報を指定 3. 端末のブラウザで http://mitm.it にアクセス 4. 対応するアイコンをタップして証明書をインストー ル
mitmproxy で できること
通信の傍受 端末が行っている通信を全部見られる `l' キー でフィルタリング URL だけでなく、 ヘッダやボディも指定可能 `F' キー
でフォワー ディング・ モー ド
通信の改竄 `i' キー で intercept するパター ンを指定できる intercept した通信は、 リクエスト内容やレスポンス内容を
改竄可能 ボディだけでなく、 メソッドやヘッダも編集できる
リプレイ 一度行った通信を編集して、 もう一度通信することができ る 下の図は、mitmproxy のサイトに載っていた、 リプレイで ハイスコアを記録した例 ハイスコアが 2^31
- 1 = 2,147,483,647 になっている
スクリプト 通信内容の改竄などは、 手動でやらなくても、 スクリプト (Python) で自動化できる > mitmproxy -s "path_to_the_script
[arg1] [arg2]..."
便利なスクリプト (1) レスポンス内容の強制置換 # -*- coding: utf-8 -*- def response(context,
flow): path = flow.request.path if path.startswith('/1.0/getRecommendedArticles'): flow.response.replace("艦これ", "HOGEHOGE")
便利なスクリプト (2) 擬似的な不安定なネットワー ク ランダムにリクエストを kill して接続が切断された状態 を再現する # -*-
coding: utf-8 -*- import random def start(ctx, argv): if len(argv) != 3: raise ValueError('Usage: -s "pseudo_unstable_network.py hostname percentage(0-10)"') # You may want to use Python's argparse for more sophisticated argument parsing. ctx.arg1, ctx.arg2 = argv[1], argv[2] def request(context, flow): host = flow.request.host if host.endswith(context.arg1) and random.randint(0, 10) <= int(context.arg2): context.log("Kill the request for %s. Host: %s" % (flow.request.get_url(), host)) flow.kill(context._master) > mitmproxy -s "./pseudo_unstable_network.py api.example.com 8"
mitmproxy を使った開発 通信内容の確認 クライアントとサー バー、 どちらに問題があるか調べる アプリ開発者以外もカジュアルに挙動を確認できる テスト 特定の条件を満たさないと発生しないようなリクエスト のテストをしたい
予期しないレスポンスが返ってきたときにアプリがクラ ッシュしないか調べる 通信が返ってこない、 途中で通信が切れるなどの不安定 な状況でアプリが正常に動作するか確認する
みなさんも mitmproxy で 快適なアプリ開発を!