Sometimes during the development process we have to work with other applications. And, from first sight, these applications are a black box. We do not know what they do. How do they interact with the world? There are tools to help.
1️⃣ mitmproxy
Once, when I was working on integrating the WebView into the iOS app, I needed to see if the WebView called a specific url. Since everything was happening on the phone, it was not trivial.
Luckily, I remembered that I'd heard about
mitmproxy (MITM is man in the middle). mitmproxy is a proxy that you can insert between the thing that makes the request and the thing that it calls. So in my case, I ran it on my local machine, configured my iPhone to use the internet through this proxy and then I was able to see all the requests that my iPhone made to the external resources. This way I tracked, that my WebView calls what I want it to call ✅.
It's also very handy for reverse engineering. Just install it, run any app, and see which requests it makes. You can explore the API or even find a vulnerability.
2️⃣ proxyman
Another tool, which I discovered only recently, is
proxyman. This is a Mac app with a very nice UX, that shows you which calls are done by the software on your machine.⬛️ Proxies may allow us to observe what does the software do without intruding it. What are your use cases?