<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <link href="../01-bootstrap.min.css" type="text/css" rel="StyleSheet"/> <link href="../02-docstyle.css" type="text/css" rel="StyleSheet"/> <link href="../syntax.css" type="text/css" rel="StyleSheet"/> <title>mitmproxy 0.9 - Android</title></head><body><div class="navbar navbar-fixed-top"> <div class="navbar-inner"> <div class="container"> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="../index.html">mitmproxy 0.9 docs</a> </div><!--/.nav-collapse --> </div> </div> </div> <div class="container"> <div class="row"> <div class="span3"> <div class="well sidebar-nav"> <ul class="nav nav-list"> <li><a href="../index.html">Introduction</a></li> <li><a href="../install.html">Installation</a></li> <li><a href="../howmitmproxy.html">How mitmproxy works</a></li> <li class="nav-header">Tools</li> <li><a href="../mitmproxy.html">mitmproxy</a></li> <li><a href="../mitmdump.html">mitmdump</a></li> <li class="nav-header">Features</li> <li><a href="../features/anticache.html">Anticache</a></li> <li><a href="../features/clientreplay.html">Client-side replay</a></li> <li><a href="../features/filters.html">Filter expressions</a></li> <li><a href="../features/proxyauth.html">Proxy Authentication</a></li> <li><a href="../features/replacements.html">Replacements</a></li> <li><a href="../features/serverreplay.html">Server-side replay</a></li> <li><a href="../features/setheaders.html">Set Headers</a></li> <li><a href="../features/sticky.html">Sticky cookies and auth</a></li> <li><a href="../features/reverseproxy.html">Reverse proxy mode</a></li> <li><a href="../features/upstreamcerts.html">Upstream Certs</a></li> <li class="nav-header">Installing Certificates</li> <li><a href="../ssl.html">Overview</a></li> <li><a href="firefox.html">Firefox</a></li> <li><a href="osx.html">OSX</a></li> <li><a href="windows7.html">Windows 7</a></li> <li><a href="ios.html">IOS</a></li> <li><a href="ios-simulator.html">IOS Simulator</a></li> <li class="active"><a href="android.html">Android</a></li> <li class="nav-header">Transparent Proxying</li> <li><a href="../transparent.html">Overview</a></li> <li><a href="../transparent/linux.html">Linux</a></li> <li><a href="../transparent/osx.html">OSX</a></li> <li class="nav-header">Tutorials</li> <li><a href="../tutorials/30second.html">Client playback: a 30 second example</a></li> <li><a href="../tutorials/gamecenter.html">Setting highscores on Apple's GameCenter</a></li> <li class="nav-header">Scripting mitmproxy</li> <li><a href="../scripting/inlinescripts.html">Inline Scripts</a></li> <li><a href="../scripting/libmproxy.html">libmproxy</a></li> <li class="nav-header">Hacking</li> <li><a href="../dev/testing.html">Testing</a></li> </ul> </div> </div> <div class="span9"> <div class="page-header"> <h1>Android</h1> </div> <p>The proxy situation on Android is <a href="http://code.google.com/p/android/issues/detail?id=1273">an embarrasment</a>. It's scarcely credible, but Android didn't have a global proxy setting at all until quite recently, and it's still not supported on many common Android versions. In the meantime the app ecosystem has grown used to life without this basic necessity, and many apps merrily ignore it even if it's there. This situation is improving, but in many circumstances using <a href="../transparent.html">transparent mode</a> is mandatory for testing Android apps.</p> <p>We used an Asus Transformer Prime TF201 with Android 4.0.3 in the examples below - your device may differ, but the broad process should be similar. </p> <h2>Getting the certificate onto the device</h2> <p>First we need to get the <strong>mitmproxy-ca-cert.cer</strong> file into the <strong>/sdcard/Downloads</strong> folder on the device. There are a number of ways to do this. If you have the Android Developer Tools installed, you can use <a href="http://developer.android.com/tools/help/adb.html"><strong>adb push</strong></a> to accomplish this. Depending on your device, you could also transfer the file using external media like an SD Card. In this example, we're using wget from within a terminal emulator to transfer the certificate from a local HTTP server: </p> <p><img src="android-shellwgetmitmproxyca.png"/></p> <h2>Installing the certificate</h2> <p>Once we have the certificate on the local disk, we need to import it into the list of trusted CAs. Go to Settings -> Security -> Credential Storage, and select "Install from storage":</p> <p><img src="android-settingssecuritymenu.png"/></p> <p>The certificate in /sdcard/Downloads is automatically located and offered for installation. Installing the cert will delete the download file from the local disk:</p> <p><img src="android-settingssecurityinstallca.png"/></p> <p>Afterwards, you should see the certificate listed in the Trusted Credentials store:</p> <p><img src="android-settingssecurityuserinstalledca.png"/></p> </div> </div> <hr> <footer> <p>© mitmproxy project, 2013</p> </footer> </div> </body></html>