This is awesome! The first thing I discovered was how much network noise crashlytics.com was causing. Used AdBlock's[0] DNS proxy feature to black-hole the offending domain (they even mention blocking crashlytics.com in their FAQ[1]).
Note that both AdBlock and Charlex rely on iOS's VPN feature, and only one can be enabled at a time.
Genuine question here: How is it not absolutely terrifying that an iOS App Store app can man in the middle HTTPS communications made by other apps? Is there some way in which this isn’t poking a hole in exactly the sort of security sandbox that iOS tends to be good at? (And yes there probably is some part of what’s going on that I don’t understand, that’s why I’m asking the question)
Can't say much about the security, but I suspect it's working by pretending to be a VPN provider and then proxying the traffic. It's then able to install a CA root to generate any certs it needs to MITM traffic. Cert pinning will prevent this from working, but that's the only thing that will.
It's your phone. Of course software you installed should be allowed to do anything you want.
The fact that Android has recently made it impossible to MITM apps is really making me consider switching. I don't think I will, because in many other ways Android is still more open, but the analysis is no longer as lopsidedly in Android's favour.
I use the desktop product daily so I picked this up. I frequently proxy my phone through my desktop but I figured this would be fun to play with if nothing else.
I turned it on for literally one second and the first thing it captured was traffic from an app I used briefly several years ago and not since. Cool!
I generally would only be needing to inspect requests when developing at my workstation, so how is this native app providing additional value beyond what the Charles Mac software already provides?
Big fan of Charles over here, I just don't understand the use case for the native app.
"Running Charles on your iOS device means you no longer need to fiddle with WiFi network proxy settings. It also means that you can capture and measure network traffic that goes over the Mobile / Cellular data network.
Measuring networking performance over Mobile data is especially important for your mobile apps (as that is how a lot of users experience your app), and it can reveal large or slow requests, as well as opportunities to increase perceived performance by parallelising network calls."
AFAIK before this you could only inspect traffic over WiFi connections since you had to set the proxy address via WiFi network settings.
You can't use the Mac app to inspect any requests that go over the cellular connection.
Using the Mac app also requires being able to connect to your Mac from your iPhone (in order to use it as a proxy), which is not doable on many setups. For example, at work we use a different wifi network for mobile devices than we do for laptops.
Came here to say the same thing: If you're interested in seeing the traffic caused by your own app (and also making that info accessible to other stakeholders during dev time), netfox is the way to go. Super easy to integrate and provides usually enough info. Also no tinkering with the system settings or third party apps required.
I'm working at a European bank in their iOS team. We use cert pinning for all of our apps, but I have never heard or seen teams using it outside of this project.
I guess it's mostly used if the application is doing something critical like money transactions etc.
Sucks that more and more 3rd party apps are adding pinning to their code so you can't sniff their traffic. This is a great tool for first party debugging though :) Nice work Charles!
Awesome news. Charles has been such a helpful debugging tool over the years. Less so for web stuff in these days of browser dev tools being so advanced, but the ability to inspect traffic system wide is still really useful outside webdev, and sometimes it can be useful to verify something dev tools tell you.
All developers should get this for iOS, it’s bound to be useful and if not it will at least be interesting to see what you’d phone is getting up to online!
I like this a lot, but most of the time I use Charles for more than recording traffic. For example, checking how my apps behaves if I throttle certain endpoints, or rewrite responses. Hoping those features makes it into a future version!
Maybe it is worth mentioning that iOS has the ability to throttle the network itself—it's under "Settings"->"Developer"->"Network Link Conditioner".
There is also a pref pane in Addition tools download for Xcode which allows to do the same on the Mac.
Imagine if the user could compile their own kernels for iOS^W^W [edit] that can control an iPhone. She enables IP forwarding in the kernel configuration. Maybe she can also disable some crucial bits for interacting with the baseband. She only wants wifi to work.
Then she uses this phone with the custom kernel (phone #1) as a gateway for another phone (phone #2). She can easily block ads and other undesired traffic destined for phone #2, using a variety of methods of her choosing (firewalls, dns, proxies, etc.).
She does not use phone #1 for anything other than being a gateway for phone #2. There does not have to be any data of any value to an advertiser generated, sent from, or stored on phone #1 (e.g, logs). It is just a gateway.
Sending all traffic over a VPN to a server of your choosing essentially accomplishes the same thing. It's true that there could be some kind of code in there that overrides this choice, but the implications would be pretty severe.
[+] [-] miles|8 years ago|reply
Note that both AdBlock and Charlex rely on iOS's VPN feature, and only one can be enabled at a time.
[0] https://itunes.apple.com/us/app/adblock/id691121579?mt=8http...
[1] https://www.adblockios.com/privacy/
[+] [-] tzahola|8 years ago|reply
[0] https://www.google.hu/amp/s/www.macrumors.com/2017/07/14/app...
[+] [-] rem1313|8 years ago|reply
[+] [-] yodon|8 years ago|reply
[+] [-] jawngee|8 years ago|reply
- Prompt to allow app to act like VPN
- Having to enter your passcode after said prompt
It's impossible for apps to MITM silently.
[+] [-] simcop2387|8 years ago|reply
[+] [-] zeveb|8 years ago|reply
The fact that Android has recently made it impossible to MITM apps is really making me consider switching. I don't think I will, because in many other ways Android is still more open, but the analysis is no longer as lopsidedly in Android's favour.
[+] [-] evan_|8 years ago|reply
I turned it on for literally one second and the first thing it captured was traffic from an app I used briefly several years ago and not since. Cool!
[+] [-] manmal|8 years ago|reply
Charles could show a list of recommended apps to delete.
[+] [-] robterrell|8 years ago|reply
[+] [-] olliepop|8 years ago|reply
I generally would only be needing to inspect requests when developing at my workstation, so how is this native app providing additional value beyond what the Charles Mac software already provides?
Big fan of Charles over here, I just don't understand the use case for the native app.
[+] [-] trevor-e|8 years ago|reply
"Running Charles on your iOS device means you no longer need to fiddle with WiFi network proxy settings. It also means that you can capture and measure network traffic that goes over the Mobile / Cellular data network.
Measuring networking performance over Mobile data is especially important for your mobile apps (as that is how a lot of users experience your app), and it can reveal large or slow requests, as well as opportunities to increase perceived performance by parallelising network calls."
AFAIK before this you could only inspect traffic over WiFi connections since you had to set the proxy address via WiFi network settings.
[+] [-] dc3k|8 years ago|reply
I can't use Charles to inspect traffic from my device at work because of network restrictions. Now I can.
[+] [-] eridius|8 years ago|reply
Using the Mac app also requires being able to connect to your Mac from your iPhone (in order to use it as a proxy), which is not doable on many setups. For example, at work we use a different wifi network for mobile devices than we do for laptops.
[+] [-] dorian-graph|8 years ago|reply
You can watch his presentation [1] (which is linked to in the announcement page that story links to) for a few of the use cases.
[1] https://www.youtube.com/watch?v=RWotEyTeJhc
[+] [-] dsl|8 years ago|reply
[+] [-] nick873s|8 years ago|reply
[+] [-] derwildemomo|8 years ago|reply
[+] [-] cstuder|8 years ago|reply
[+] [-] illuminati1911|8 years ago|reply
I guess it's mostly used if the application is doing something critical like money transactions etc.
[+] [-] nstj|8 years ago|reply
[+] [-] saagarjha|8 years ago|reply
[+] [-] reagan83|8 years ago|reply
[+] [-] tomduncalf|8 years ago|reply
All developers should get this for iOS, it’s bound to be useful and if not it will at least be interesting to see what you’d phone is getting up to online!
[+] [-] cstrat|8 years ago|reply
Anyone else have this issue? The website isn't giving me much insight :(
edit: I'm on the latest iOS beta. Could that be why? funny that I'm troubleshooting an app which is largely meant for troubleshooting apps...
[+] [-] theothertom|8 years ago|reply
[+] [-] Operyl|8 years ago|reply
[+] [-] evilduck|8 years ago|reply
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] cbrevik|8 years ago|reply
[+] [-] rimliu|8 years ago|reply
[+] [-] joshenders|8 years ago|reply
[+] [-] ReverseCold|8 years ago|reply
[+] [-] chrisweekly|8 years ago|reply
[+] [-] thisacctforreal|8 years ago|reply
[+] [-] joshenders|8 years ago|reply
[+] [-] stef25|8 years ago|reply
[+] [-] verelo|8 years ago|reply
[+] [-] husted|8 years ago|reply
However I'll continue to use wireshark for debugging my network code when at the office.
[+] [-] feelin_googley|8 years ago|reply
Then she uses this phone with the custom kernel (phone #1) as a gateway for another phone (phone #2). She can easily block ads and other undesired traffic destined for phone #2, using a variety of methods of her choosing (firewalls, dns, proxies, etc.).
She does not use phone #1 for anything other than being a gateway for phone #2. There does not have to be any data of any value to an advertiser generated, sent from, or stored on phone #1 (e.g, logs). It is just a gateway.
Cant do this, but imagine if she could.
[+] [-] Mononokay|8 years ago|reply
[+] [-] saagarjha|8 years ago|reply
[+] [-] matthewmacleod|8 years ago|reply
[+] [-] ktta|8 years ago|reply