Charles Proxy Guide for iOS
Doris Sooläte avatar
Written by Doris Sooläte
Updated over a week ago

What is Charles Proxy?

Charles Proxy sits between your app and the Internet. All networking requests and responses will be passed through Charles Proxy, so you’ll be able to inspect and even change data midstream to test how your app responds.

How Does Charles Proxy Work With Mobile Devices?

1. Installing Charles Proxy / Proxy Setup

a) Download and install Charles Proxy

b) Open Charles Proxy

c) For the purpose of this setup tutorial, you will use Charles Proxy in trial mode.

The only limitation is that you will have to restart Charles Proxy every 30 minutes. Testlio will provide a license once you are fully trained and ready to participate in a test run.

Once you have received the license info from Testlio, you can register Charles Proxy as follows: 

open Help from the Menu Bar and then click on Register Charles. You will need a license key to register. 

Charles Proxy will restart.

d) Turn off Windows/Mac Proxy. 

Menu Bar > Proxy > remove checkmark before Windows Proxy or Mac Proxy

Afterward, please verify that the following checkmarks are removed under Proxy > Proxy Settings > macOS Tab (or Windows if you are using a PC)

This step is very important, otherwise, all traffic on your computer will also be routed through Charles proxy and be included in your log files. 

e) Look up your computer's LAN IP address

Windows, open command prompt and run ipconfig (Video guide)

Mac, open System Preferences, Network, Active Network Adapter

Write down the IP address:     ______ . ______ . ______ . ______

f) On your iOS device open Network Settings

open Settings App
open Wi-Fi
→ tap on the (i) for the active Wi-Fi connection (named qa5 in the following screenshot)

On the next screen scroll down to the very bottom and click on Configure Proxy >

On the next screen tap on Manual

Enter the IP address of your Computer running Charles Proxy noted in Step 1e under Server and 8888 as the Port:

Afterward, click on Save in the top right corner.

g) On your computer, Charles Proxy will show a Connection Attempt Popup Window

(if the request does not show by itself open Safari on your phone and try to open a website)

Click Allow

2. Installing the SSL Certificate on iOS

Open Safari on iPhone (or iPad)

Enter: and press Go

The following prompt is displayed:

Click Allow

Install Profile screen will open:

Click Install and enter your Passcode when asked

A Warning is shown:

Tap Install again, then tap Install in popup:

Afterward, the following screen with a green Verified checkmark should show:

Click Done

Open Settings App
Open About

Scroll down to Certificate Trust Settings:

Click on Certificate Trust Settings >

The following screen is shown:

Turn on the Switch next to Charles Proxy CA (...)

Click Continue on the Root Certificate Prompt

Verify that the Switch is On and has a green background visible.

This completes the iPhone / iPad setup.

3. Configuring Charles Proxy To Capture iOS Logs

a) open Charles Proxy on you Computer and select Proxy > SSL Proxying Settings

d) activate the checkmark for Enable SSL Proxying

e) click on Add to add * as host:

The Port field stays blank.

Charles Proxy is now fully configured and we are ready to collect logs 👏

4. Collecting Logs

a) Clear the current session in Charles by clicking on the Broom Icon

b) if not currently active - Start Recording - by activating the Record icon

If the icon is red, recording is active and calls will be captured. You now know how to record Charles logs. 🙌

Helpful tips

  • Clear previous logs before you start testing new functionality.

  • To install or remove certs in the iOS system, follow iGeeksBlog tutorial.

  • When all else fails, a restart of both PC and mobile device may solve issues, but make sure to Disable the Windows Proxy / MacOS proxy / Mozilla Firefox Proxy again.

  • You should periodically update your certificates as they do expire.

  • Some routers re-assign local IP addresses, so you should verify the IPv4 has not changed.


Did this answer your question?