Setup Proxyman in a physical AppleTV

Raxit Majithiya
4 min readJan 3, 2024

--

I recently picked back up developing for tvOS. To optimize the UX, get a sense of real-life scale, and get the most out of native features such as gestures, haptic feedback, animations, etc., I prefer to develop apps on physical devices rather than simulators. However, developing on physical devices often comes with some roadblocks, especially for devices such as AppleTV or Apple Watch. But I think crossing the bridge is worth the reward of truly developing your app on the hardware that the users will be using.

When working with APIs (or sniffing APIs used by the other apps), I cannot live without setting up my favorite dev environment — MITM SSL Proxy. In this post, I will share my steps to Set up Proxyman in a physical tvOS device.

Prerequisite: Physical AppleTV that’s on the same WiFi network as your Macbook. No ethernet cables are needed, let the Apple TV be plugged into your TV.

Phase 1: Prepare a configuration profile

Usually, when we set up Proxyman on an iPhone, we would do two things: Set up Proxy Settings in the WiFi and install the Proxyman Root Certificate. To do this in an Apple TV, we will use a Profile and install it into the Apple TV.

Prerequisite: Make sure Proxyman is running and open “http://proxy.man/ssl” in the browser. Rename the downloaded certificate to “proxyman-ca.cer” from “proxyman-ca.pem”.

  1. Open the “Apple Configurator” app on your MacBook. Apple Configurator can be downloaded from the App Store.
  2. Click on “File” → “New Profile”
  3. Select “Wi-Fi” from the sidebar → click “Configure” and populate the Wi-Fi settings as you would normally do in an iPhone.
Create a new WiFi Profile

3. Now, select “Certificates” → Click “Configure” → Select the “proxyman-ca.cer” file that you previously downloaded.

4. Now we will save this profile. Select File → Save → Name it “ProxyProfile”. It will be saved as “ProxyProfile.mobileconfig”

This profile now instructs AppleTV to use the provided settings when connecting to the given WiFi network and install the Proxyman Root Certificate.

Phase 2: Install the configuration profile

Now that the profile has been created, it’s time to install this configuration profile into the TV. There are multiple ways to install the profile, but here I will share the easiest one. (Credit: )

  1. Open the terminal app and go to the directory that contains “Certificate.mobileconfig”.
  2. Start an HTTP server in this directory.

Node js:

npx http-server --port 8001

Ruby:

ruby -run -ehttpd . -p8001

Python:

python -m http.server 8001

3. Connect to the same WiFi network on your Apple TV as your computer.

4. Open the Settings app on your Apple TV and navigate to General → Privacy & Security → Share Apple TV Analytics

Settings → General → Privacy & Security → Share Apple TV Analytics

4. From your AppleTV remote, hit the Play/Pause button

Play/Pause button in AppleTV. Image Credit — betaprofiles.dev

6. Select “Add Profile”

5. Since we started the local server at port 8001 earlier, the profile can be downloaded using the local IP address of your computer + port 8001. You can find the IP address in the Proxyman menu.

In my case, the location of the profile is “http://192.168.1.4:8001/Certificate.mobileconfig”.

6. Now enter the above address by either using the on-screen keyboard, dictating, or even better: using the remote from your iPhone (refer to this guide to learn how to set up the Apple TV remote in your iPhone). Once you have entered the address, click Done and Install (it may ask you multiple times with some scary warnings).

We are all set with installing the Certificate and setting up the WiFi with appropriate proxy settings. However, there’s one last thing to do before we are done — Trust the certificate so that we can enable SSL Proxying.

For that, head over to Settings → General → About → Certificate Trust Settings → Click on Proxyman CA → “Continue”.

And that’s it! We should be able to use Proxyman with a physical Apple TV. Hope this was helpful.

Heads up! At the time of writing this guide, I had already set this up but repeated some steps to take screenshots and write the instructions. I may have missed any step or any device restarts. Please let me know through comments or hit me up on Twitter/X at @raxityo if you run into any issues.

--

--