Charles Proxy now available on iOS

We are excited to announce that Charles Proxy is now available on iOS!

With the iOS version of Charles you can capture and inspect network requests and responses on your iOS device. You can view metadata, headers and bodies in the app, so you can finally debug your app’s networking issues without a computer.

Charles for iOS currently supports the following features:

  • Capture HTTP and HTTPS network traffic on your device
  • SSL Proxying so you can view your SSL / TLS requests in plain text
  • View requests and responses in the app, or share each request or a whole session to Charles on your desktop

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.

We are thrilled to be able to finally bring Charles to the App Store. If you’d like to know a bit more about the history of Charles, and particularly Charles on iOS, I gave a presentation to try! Swift Tokyo in March 2018 that you can watch on YouTube.

We plan to bring more of the features that you know and love from Charles on the desktop to the iOS version over the coming months, so watch this space for more announcements.

We hope you enjoy using Charles on iOS!

This was posted 6 years ago. It has 10 notes.

Charles 4

At long last, Charles 4 has been released! Charles 1 was released in 2002, nearly 14 years ago. Since then we’ve been through Charles 2 and Charles 3, both big upgrades. But for the past 11 months we’ve been hard at work on the biggest upgrade we’ve ever made to Charles!

Charles 4 includes an upgrade to the latest and greatest HTTP standard, the latest and greatest IP standard, and the biggest UI update ever for Charles. It is also the first paid upgrade in Charles’s long history.


HTTP 2 is all around you. It’s sneaky and you might not have noticed. Both the client and server need to support HTTP 2, otherwise they will downgrade automatically to HTTP 1.1. So with Charles 3 you would just have seen HTTP 1.1 everywhere. No more! With Charles 4 you can now see HTTP 2 working, and you can use all of your familiar tools; Repeat, Breakpoints, and so on. You’ll spot HTTP 2 hosts in Charles as they use a different icon—with a lightning bolt!

IPv6 is also all around you! If you’re lucky enough to have an IPv6 network and ISP you can turn on “Prefer IPv6 addresses when connecting to dual-stack hosts” on the Options tab in the Proxy Settings. Then you’ll see IPv6 addresses being used in Charles. Feel the modern IP networking (first published in 1998) flow through you!


With Charles 4 we’ve also taken the opportunity to spruce up the look of Charles, starting with the familiar, enigmatic and much-loved app icon.

I’ll let that sit by itself for a moment.

Fear not! It’s still the Charles jug, we’re not crazy! It’s just had a big polish, and we think it’s more beautiful than ever! We hope you do too.

image

We’ve also designed a completely new custom set of icons, giving Charles a more unified and refined appearance. Thank you to the wonderful Wolfgang Bartelme for all of his painstaking work on these icons and on our beloved Charles Jug 4.0.

Finally we’ve improved the native platform stylings on Mac OS X (soon to be macOS) and Windows; we’ve reduced border chrome and tweaked most of the dialog layouts in the app so that Charles looks more modern than ever.

On Mac OS X we’re using the brand new VAqua library by the excellent Alan Snyder. VAqua provides better graphical accuracy and higher performance, especially on retina screens. The keenest eyes amongst you may also notice that Charles 4 now uses sub-pixel antialiasing! Zoom in to check it out. And on the latest versions of Mac OS X, Charles 4 uses the new San Francisco typeface. Finally, for my Charlesitans with dark menu bars—there’s a little something for you in Charles 4 too.

On Windows we’re using the latest version of JGoodies, with support for Windows 8 and Windows 10. No more will your menus be odd colours! We’ve also fixed the egregious aliased text that previously appeared whenever you looked at XML responses.


There are lots of other little changes and improvements in Charles 4. We’ll be documenting these and updating the website over the coming weeks. Reach out to us on Twitter @charlesproxy if you have any questions or comments!

Don’t forget to download Charles 4 and check it out!

This was posted 7 years ago. It has 11 notes.

Charles v3.9 released

Charles v3.9 has been released today, it includes a number of new features and bug fixes. You can read the release notes, and I’ll talk about a few of my favourite changes here.

For a long time I’ve wondered how to improve the signal to noise ratio in Charles: you’re generally interested in a couple of hosts, but your browser (and system) connects to lots of them. Overtime the signal to noise ratio has become worse and worse. I should note at this point that you should add things like Dropbox and iCloud to the ignore list in Recording Settings because they’re always popping in when they’re not welcome, but generally I wanted to have a way to tell Charles the hosts I’m interested in, but without hiding the others – sometimes part of the issue you’re trying to debug is that an unexpected new host is involved, I don’t want to hide that or fail to capture it…

We’ve solved this in Charles v3.9 with two new features. The first is Focus. You can right-click on any host in the Structure view and choose to focus it. This will keep that host on the top level of the tree, and tuck all the other hosts into a folder. You can focus multiple hosts – just open the folder and choose as many hosts to focus as you’d like. You can see a list of all focussed hosts in the Focussed Hosts option from the View menu. There, you can add and remove hosts, including wildcards using the familiar Charles format, so you can easily focus all of the subdomains for your project.

Combined with focussing is highlighting. Charles now highlights hosts (or path folders) where a new request has been added. This helps you see where things are being recorded. This can get a little noisy, but it helps to identify where requests are going. If the highlighting drives you crazy you can always turn it off in the Preferences.

I’ve found these two new features a pretty significant improvement to the way I use Charles. I hope you do too!

Another thing that people want to do with Charles is to share traces. Charles supports a few different export formats, but often the easiest way to share is to show someone what you can see. So we’ve added a Publish Gist option. You can publish Gists anonymously, or to your GitHub account; we recommend the later, as anonymous Gists can’t be deleted. You can publish one or more requests & responses to the same Gist. We think it’s going to be a pretty useful feature!

Finally, there have been a few improvements on the Mac. We’ve got more retina icons, and fullscreen support. I’m sorry I haven’t got the app completely retina, that’s a work in progress. The Apple Java version is still our preferred version on the Mac; we’ve found OpenJDK to be not quite as stable, but I’m keeping a close eye on it. If you have problems with SSL, such as TLS issues or SNI, then please switch to the OpenJDK version. We’ll get there!

There are a bunch of other changes too. I’m really excited about this update to Charles. We’re continuing to work on improving the app and adding new features. Congratulations to the team on 3.9 and stay tuned!

Download Charles v3.9

This was posted 10 years ago. It has 2 notes.

Charles 3.7 released

The latest version of Charles contains several new features, which I will blog about shortly. But in this post I want to talk about the changes to the way Charles is distributed.

Previously Charles required a Java Runtime Environment (JRE) to be installed on your computer. This was sometimes a problem, but usually not. Particularly on Mac OS X where Java has been preinstalled for ever. However Apple has stopped preinstalling Java, and their Java implementation is soon end-of-life. Furthermore on Windows some strange goings-on have been reported with the Java installer and the side-loading of browser toolbars. And finally the security problems with the Java plugin, which don’t affect Charles, but nonetheless tarnish the requirement of installing Java… All of concern when requiring a Java installation.

Fortunately there is a simple solution. As of version 3.7, Charles now bundles a private JRE on Windows and Mac OS X. This makes the application download larger, but simplifies all of these issues. The private JRE doesn’t impact the rest of your system, whether you have Java installed or not, and it doesn’t include the Java plugin or install anything in your browser so there’s no concerns. I hope that this change makes installing and using Charles easier!

If you were previously concerned about having Java installed because of the Java plugin issues, you no longer require a Java installation for Charles so you are free to uninstall Java from your system. 

On Linux it’s a slightly different story. I could bundle a JRE for Linux, however the Java runtime packages tend to be updated along with other system packages, and bundling software that is available as a separate package is frowned upon. The best way to install Charles on Linux is to use the apt repository, which specifies the Java runtime as a dependency. I welcome feedback on this issue!

Finally in other Mac OS X news, I’m pleased to announce that Charles is signed with a developer certificate from Apple so you can open it without interference from Mountain Lion’s GateKeeper. And Charles also looks more Mac-like on Mountain Lion again, so your eye balls can relax.

This was posted 11 years ago. It has 1 note.
SSLProtocolException: handshake alert: unrecognized_name

I saw this exception from Charles when trying to update the SSL web server on my newly upgraded Ubuntu 12.04 box’s Apache 2.2 server. It turns out to be because the server didn’t specify a ServerName directive.

It’s likely a bug in Java 1.7’s TLS implementation, but in the meantime; just add a ServerName.

This was posted 11 years ago. It has 1 note.

Charles 3.7 beta 2

Charles 3.7 beta 2 is now available for download. This beta changes Charles to use Apple’s new Developer ID SSL certificate for code signing. If you’re on a Mac please download it and try it out, and let me know how it goes! Especially if you’re running Mountain Lion.

This was posted 11 years ago. It has 0 notes.

Charles 3.6.5 released

Charles 3.6.5 was released earlier today. It’s primarily a bug fix release.

  • For Java 1.7 a number of incompatibilities were fixed including a delay during startup and hung network connections.
  • Fixes for a networking regression in 3.6.4 - an improvement to the networking caused an irregular Connection reset (or similar) error to occur when browsing.
  • SSL behaviour improved including better error messages in the browser and fixing a regression in 3.6.4 that caused empty requests to appear.

The next version of Charles will be 3.7 and will include more advanced timing of DNS lookups, TCP connections and SSL handshakes, as well as improved kept-alive connection reporting so you can see when new HTTP connections are established. The first beta of 3.7 is available today. 

This was posted 12 years ago. It has 48 notes.

Charles 3.6.4

Charles 3.6.4 was released this week. It includes a number of bug fixes which are outlined in the version history. If you had trouble with Charles sometimes starting with a blank window, or freezing while using breakpoints, this might be the bug fix release for you. If you are interested in the HAR import/export capabilities, this is definitely the release for you.

I also want to draw attention to the PCAP import. You can capture traffic in a tool, such as Wireshark, and then save that traffic in a .pcap file and then import it into Charles. Charles analyses the HTTP traffic and pieces it back together as if Charles had been there to intercept it. This can be an option for capturing and analysing traffic in Charles when you can’t get an application to directly use Charles. Aside from bug fixes, Charles 3.6.4 also improves the PCAP import - ensuring that keep-alive requests and imported and putting things in the right order.

The other thing I want to highlight is Linux support. Charles has supported Linux since very early on in its life, but it’s never done a particularly good job at installing and running nicely as part of a Linux desktop. This is no doubt my fault as the vast majority of my Linux boxes are command-line only. Charles 3.6.4 features an improved start script for Linux, bigger icons, and most excitingly an APT package for Debian-based Linux distributions. I’ve particularly tested it on Ubuntu: the package installs Charles into your applications menus, and the package makes the process of getting new versions of Charles much easier. If you’re a Linux user who can’t use APT packages, get in touch and we’ll see if we can make other package types!

The next release of Charles is going to include more bug fixes and minor enhancements; I’m particularly focussing on fixing a few issues around Java 1.7 so if you’re having trouble with 1.7 please get in touch and try the latest beta.

This was posted 12 years ago. It has 45 notes.

Charles 3.6.4 and HAR (HTTP Archive)

Charles 3.6.4 is another minor update to the 3.6 release; it features a large number of bug fixes, including several improvements to the HAR import/export implementation. We introduced HAR import/export to Charles 3.6 and it has just gotten better (or really, in the case of the bugs, less broken). Thanks to everyone who has corresponded with me about particular issues (especially Alex Selivanov).

HAR is an archive format for HTTP requests and responses for interoperability between software packages. Adding HAR support to Charles makes it possible to capture requests in another application and import them into Charles for analysis, or to capture in Charles and export.

I’m on the lookout for interesting analysis applications that import HAR files… drop me an email if you have any you use.

This was posted 12 years ago. It has 32 notes.

Charles v3.5.1 released

Happy New Year everyone! A small bug fix release for Charles, tidying up two bugs that were discovered in the 3.5 release. These include a fault in the Repeat Advanced tool, where it would fail after a number of requests, and a fault in the Auto Save tool where it wouldn’t save the “Enable on startup” setting. Download Charles 3.5.1

This was posted 14 years ago. It has 6 notes.