Comparison of Charles Proxy, Fiddler, Wireshark and Proxyman
Almost every application these days seem to communicate over HTTP/HTTPS protocol. As a developer, we might not need to pay much attention to this low level most of the time, but sometimes a problem might show up that needs us to drop to the level of the network and figure out what is going on. In such situations, using suitable web debugging proxy tools could make our life much easier.
In general, those man-in-the-middle apps can be used by developers in many cases, including:
- Capture and Inspect HTTP/HTTPS traffic in plain text.
- Observing or analyzing HTTP(s) Requests and Responses.
- Sharing HTTP(s) Requests and Responses.
- Able to capture traffic from iOS physical devices (iPhone, iPad, AppleWatch, etc), iOS Simulator, Android physical devices, and Android Emulators.
- Easily Manipulating HTTP(s) Requests and Responses data with built-in tools, such as Map Local, Map Remote, Breakpoint, Scripting,...
There are a number of good options that can fill the role of a debugging proxy, including both highly-matured tools like Wireshark, Charles Proxy or Fiddler … and newly-developed tools like Debookee, or Proxyman.
Each of them has its own advantages/disadvantages so let’s take a quick look into all available options and find out which one that fits your needs.
1. Features and Pricing
Almost all of the above tools offer full features to greatly facilitate debugging procedures
- Intercept and analyze the HTTP(s) network requests/responses.
- Observe HTTP(s) requests/responses on mobile devices/simulators
- Repeat, Compose HTTP(s) requests/responses.
- Export HTTP(s) requests/responses to common files (HAR Format, Log, …)
- Map Local: Map a Response with a local file or local directory.
- Map Remote: Change the request destination to different destinations.
- Breakpoint: Set a breakpoint on matched requests or responses and be able to manipulate the content on-the-fly.
- Allow / Block List: Allow or block certain requests.
- Rewrite / Scripting: Write a script, or define a rule, which is automatically executed at runtime. It's useful for automation work in comparison with the Breakpoint Tool.
- External Proxying: Proxy to the external central server (suitable for big companies has a Proxy server)
- Network Throttling: simulate various types of network connections
- More advanced tools, include Protobuf, GraphQL, Reverse Proxy, etc.
Despite the similarity in features and functionalities, pricing varies a lot depending on the target users of each company. Wireshark used to be a go-to option for both individuals and enterprises as it was the first tool that offer a full set of proxy features in the market.
However, after 15 years released, it seems to start causing inconvenience and developers now shift to more newly developed tools like Charles, Fiddler, Debookee, or Proxyman.
While Fiddler targets Enterprises ($999/ license) or Debookee costs over 300$ to purchase all essential features, Charles and Proxyman seem to be more reasonable for both Individuals and SMEs due to the affordable pricing packages ($69/license).
2. UI, UX and supported OS
Wireshark is a highly credible cross-platform application that has been released since 1998. Although the UI is not quite modern, the current Wireshark version supports all platforms including macOS, Windows, and Linux. Some advanced features of the app are designed with a lot of low-level information to satisfy hard-core developers so it might not be friendly to other users.
Charles Proxy Dashboard
Similar to Wireshark, Charles Proxy is another cross-platform application written in Java language to support all platforms. It is also a highly matured and stable application that facilitates debugging procedures.
Although the app simplifies proxy features to become more assessable to users, the current UI and UX of the app have not been optimized and polished yet.
Proxyman is also designed to observe and manipulate HTTP(s) requests/ responses. However, different from the above tools, it is a native application that is tailored for each platform only.
Since the build Proxyman 2.35.0 (released on 11 Nov 2021), Proxyman has fully supported Apple M1 Chip and macOS Monterey.
That way, the app will be optimized to run with minimum system resource consumption and ensure that both UI/UX are user-friendly. Proxyman also offers comprehensive and powerful debugging features such as Breakpoint, Map Local, Map Remote, or Scripting tools to help developers debug with ease.
With that said, one big disadvantage of the app is that it only supports macOS and iOS platforms (Check out Proxyman for iOS).
According to the team, Proxyman for Windows OS is expected to be released in 2022.
What Proxyman is distinguished from other tools
1. Refine UI/UX and Debugging Tools
Proxyman also refines the UI/UX of all debugging tools to be easier to use and fit with 2020+ design standards.
- Strictly follow the macOS Human Interface Guidelines.
- Exclusively builds for macOS. Fully Supports Apple M1 Chip & macOS Monterey.
- Map Local: Able to directly edit HTTP Response Message (Include Headers, Body, and Status Code).
- Map Remote: Better UI.
- Breakpoint: Manipulate Request/Response on the fly.
- Support Network Throttling, Reverse Proxy.
- Debug GraphQL traffic.
- Capture HTTP/HTTPS, WS/WSS, GRPC traffic with Atlantis framework
- Proxyman for iOS: A native iOS app, which allows developers to directly capture and inspect HTTP/HTTPS Traffic from their iOS devices with ease (Required iOS 14+).
- and more...
Proxyman on macOS Monterey (Light Theme)
2. Comprehensive Certificate Guidelines for iOS, Android, Simulator, and Emulator.
Proxyman provides various guidelines to set up Proxyman with the following devices. Some of them can be done with a single click.
- iOS Physical device
- iOS Simulators
- Android Physic Device
- Android Emulator
- JVM Machine
These guidelines are straightforward and friendly guidance as compared to other applications.
Proxyman offers a scripting feature that the developer could write the JS code to manipulate the Request/Response in a flexible way.
- Implement Map Local / Map Remote / Breakpoint by JS Code. 100x Faster
- Copy&Paste from Proxyman Snippet Code.
- Modify the Request Content, including Domain, Host, Scheme, Port, Path, HTTP Method, HTTP Headers, Query, Body (Encoded-Form, JSON, plain-text)
- Change the Response Content, including HTTP Status Code, HTTP Headers, Body (JSON, Encoded-Form, plain-text, binary...)
- Provide plenty of built-in addons and libraries for common tasks, such as Hashing, Encode/Decode, JSON-Text transformer, Beautify,...
- Able to write your own JS Addons or Libraries
- Designed to replace Rewrite GUI Tool
- Assign and receive shared States between each script or current session with ShareState or Environment Variables
4. Active development
Since we are a small team, so we can omit all unnecessary procedures to move forward at a quick pace, but still, maintain the high quality of the product.
What we've achieved so far:
- We have shipped more than 130+ versions since the first beta version in late 2019.
- Rewrite Proxyman v2 with Apple Swift NIO, which is powered for high performance networking application.
- Bring Proxyman to the iOS native app.
- Support the majority of debugging tools from other apps, such as Breakpoint, Map Local, Scripting, Network Conditioner, etc.
- Resolve 540+ bug, feature request tickets on Proxyman Bug Tracker.
- Starting porting Proxyman to Windows version. Natively built with .NET framework.
Which application is for you?
It is hard to decide whether each application is good or bad as it depends a lot on developers' preferences.
In a nutshell:
If you are a hacker/security developer who needs a full-set proxy tool to dig deep into the network level, Wireshark and Fiddler might be your go-to option.
If you are a developer who needs to use package analyzers on macOS, Windows, or Linux with full debugging features, you might consider using Charles Proxy.
If you are a QA, front-end, iOS, Android developer, security developer who wants a native, high-performance application on macOS with full debugging features and customization (a.k.a a Mac-asses mac app), it is worth trying Proxyman.
Updated at Mar 22, 2020: Improve wording to make the blog is neutral.
Updated at Sep 13, 2020: Update new tools and features.
Updated at Jun 16, 2021: Update new screenshots.
Updated at Nov 24, 2021: Add new features to the latest build.
Proxyman is a high-performance macOS app, which enables developers to capture and inspect HTTP/HTTPS requests from apps and domains on iOS device, iOS Simulator and Android devices.
Get it at https://proxyman.io