# Table of Contents - [Overview | Proxyman](#overview-proxyman) - [Proxyman for iOS | Proxyman](#proxyman-for-ios-proxyman) - [Changelog | Proxyman](#changelog-proxyman) - [License | Proxyman](#license-proxyman) - [Command-line | Proxyman](#command-line-proxyman) - [License Manager | Proxyman](#license-manager-proxyman) - [Breakpoint for iOS | Proxyman](#breakpoint-for-ios-proxyman) - [Map Local for iOS | Proxyman](#map-local-for-ios-proxyman) - [Raycast | Proxyman](#raycast-proxyman) - [Security Compliance | Proxyman](#security-compliance-proxyman) - [Tutorial for iOS | Proxyman](#tutorial-for-ios-proxyman) - [Map Local for iOS Tutorial | Proxyman](#map-local-for-ios-tutorial-proxyman) - [Breakpoint for iOS Tutorial | Proxyman](#breakpoint-for-ios-tutorial-proxyman) - [Sample Android Project | Proxyman](#sample-android-project-proxyman) - [iOS Simulator | Proxyman](#ios-simulator-proxyman) - [Java VMs | Proxyman](#java-vms-proxyman) - [Firefox | Proxyman](#firefox-proxyman) - [tvOS & watchOS | Proxyman](#tvos-watchos-proxyman) - [Automatic Script for Android Emulator | Proxyman](#automatic-script-for-android-emulator-proxyman) - [Android Device & Emulator | Proxyman](#android-device-emulator-proxyman) - [Python | Proxyman](#python-proxyman) - [Ruby | Proxyman](#ruby-proxyman) - [NodeJS | Proxyman](#nodejs-proxyman) - [Rust | Proxyman](#rust-proxyman) - [macOS | Proxyman](#macos-proxyman) - [iOS Device | Proxyman](#ios-device-proxyman) - [Golang | Proxyman](#golang-proxyman) - [React Native | Proxyman](#react-native-proxyman) - [HTTP Clients | Proxyman](#http-clients-proxyman) - [Flutter | Proxyman](#flutter-proxyman) - [Docker | Proxyman](#docker-proxyman) - [ElectronJS | Proxyman](#electronjs-proxyman) - [NextJS (fetch) | Proxyman](#nextjs-fetch-proxyman) - [Email Protection | Cloudflare](#email-protection-cloudflare) - [Demo iOS & Android | Proxyman](#demo-ios-android-proxyman) - [Manual Setup | Proxyman](#manual-setup-proxyman) - [Automatic Setup | Proxyman](#automatic-setup-proxyman) - [Troubleshooting | Proxyman](#troubleshooting-proxyman) - [Atlantis for iOS | Proxyman](#atlantis-for-ios-proxyman) - [Multiple Tabs | Proxyman](#multiple-tabs-proxyman) - [Import / Export | Proxyman](#import-export-proxyman) - [SSL Proxying | Proxyman](#ssl-proxying-proxyman) - [Proxyman Proxy Helper Tool | Proxyman](#proxyman-proxy-helper-tool-proxyman) - [Bypass Proxy List | Proxyman](#bypass-proxy-list-proxyman) - [Horizontal/Vertical/Window Layout | Proxyman](#horizontal-vertical-window-layout-proxyman) - [Copy as | Proxyman](#copy-as-proxyman) - [Filter JSON Response | Proxyman](#filter-json-response-proxyman) - [Content Filter | Proxyman](#content-filter-proxyman) - [Request / Response Previewer | Proxyman](#request-response-previewer-proxyman) - [Custom Previewer Tab | Proxyman](#custom-previewer-tab-proxyman) - [Multipart Form-Data Previewer | Proxyman](#multipart-form-data-previewer-proxyman) - [JQ | Proxyman](#jq-proxyman) - [Highlight by Color and Add Comment | Proxyman](#highlight-by-color-and-add-comment-proxyman) - [Localization | Proxyman](#localization-proxyman) - [Quick Preview | Proxyman](#quick-preview-proxyman) - [Regex (Regular Expression) | Proxyman](#regex-regular-expression-proxyman) - [Custom Header Column | Proxyman](#custom-header-column-proxyman) - [Import / Export Settings | Proxyman](#import-export-settings-proxyman) - [Command Palette | Proxyman](#command-palette-proxyman) - [Map Local (File) | Proxyman](#map-local-file-proxyman) - [Customize Toolbar | Proxyman](#customize-toolbar-proxyman) - [Breakpoint | Proxyman](#breakpoint-proxyman) - [Save Session | Proxyman](#save-session-proxyman) - [Compose new Request | Proxyman](#compose-new-request-proxyman) - [Edit & Repeat | Proxyman](#edit-repeat-proxyman) - [JSONPath | Proxyman](#jsonpath-proxyman) - [TLS Key Logging | Proxyman](#tls-key-logging-proxyman) - [Breakpoint Templates | Proxyman](#breakpoint-templates-proxyman) - [No Caching | Proxyman](#no-caching-proxyman) - [Block List | Proxyman](#block-list-proxyman) - [Multiple Filters | Proxyman](#multiple-filters-proxyman) - [Publish to Gist | Proxyman](#publish-to-gist-proxyman) - [Clear Session | Proxyman](#clear-session-proxyman) - [Reverse Proxy | Proxyman](#reverse-proxy-proxyman) - [Repeat | Proxyman](#repeat-proxyman) - [Map Local (Directory) | Proxyman](#map-local-directory-proxyman) - [Charles Proxy Converter | Proxyman](#charles-proxy-converter-proxyman) - [Protobuf | Proxyman](#protobuf-proxyman) - [Code Generator | Proxyman](#code-generator-proxyman) - [Network Conditions | Proxyman](#network-conditions-proxyman) - [DNS Spoofing | Proxyman](#dns-spoofing-proxyman) - [Diff | Proxyman](#diff-proxyman) - [External Proxy | Proxyman](#external-proxy-proxyman) - [Swagger OpenAPI | Proxyman](#swagger-openapi-proxyman) - [SOCKS Proxy | Proxyman](#socks-proxy-proxyman) - [*.local requests do not appear on Proxyman | Proxyman](#-local-requests-do-not-appear-on-proxyman-proxyman) - [Custom Filters | Proxyman](#custom-filters-proxyman) - [Lost data after updating Proxyman app? | Proxyman](#lost-data-after-updating-proxyman-app-proxyman) - [Could not change Proxyman App Icons | Proxyman](#could-not-change-proxyman-app-icons-proxyman) - [Install Certificate | Proxyman](#install-certificate-proxyman) - [Proxyman consumes too much RAM & unresponsive | Proxyman](#proxyman-consumes-too-much-ram-unresponsive-proxyman) - [Write your own Addons | Proxyman](#write-your-own-addons-proxyman) - [Allow List | Proxyman](#allow-list-proxyman) - [I could not see any HTTP traffic from my NodeJS, Python, or Ruby scripts | Proxyman](#i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts-proxyman) - [[Breakpoint] Modify Request/Response by Raw Message | Proxyman](#-breakpoint-modify-request-response-by-raw-message-proxyman) - [WSL | Proxyman](#wsl-proxyman) - [Custom Certificates | Proxyman](#custom-certificates-proxyman) - [async/await Request | Proxyman](#async-await-request-proxyman) - [I couldn't see any traffics on Proxyman | Proxyman](#i-couldn-t-see-any-traffics-on-proxyman-proxyman) - [My Remote Devices (iOS/Android) could not connect to Proxyman? | Proxyman](#my-remote-devices-ios-android-could-not-connect-to-proxyman-proxyman) - [Built-in JS Libraries | Proxyman](#built-in-js-libraries-proxyman) - [Access Control | Proxyman](#access-control-proxyman) - [SSL Error from HTTPS Request/Response | Proxyman](#ssl-error-from-https-request-response-proxyman) - [Map Remote | Proxyman](#map-remote-proxyman) - [iOS 16 and iOS 17 issues | Proxyman](#ios-16-and-ios-17-issues-proxyman) - [WebSocket | Proxyman](#websocket-proxyman) - [GraphQL | Proxyman](#graphql-proxyman) - [I could not see any requests from my localhost server | Proxyman](#i-could-not-see-any-requests-from-my-localhost-server-proxyman) - [Addons | Proxyman](#addons-proxyman) - [Scripting | Proxyman](#scripting-proxyman) - [Proxyman does not work with VPN apps | Proxyman](#proxyman-does-not-work-with-vpn-apps-proxyman) - [I couldn't see any requests from 3rd-party network libraries | Proxyman](#i-couldn-t-see-any-requests-from-3rd-party-network-libraries-proxyman) - [Environment Variables | Proxyman](#environment-variables-proxyman) - [Snippet Code | Proxyman](#snippet-code-proxyman) --- # Overview | Proxyman [](https://docs.proxyman.com/#id-1.-proxyman) 1\. Proxyman --------------------------------------------------------------- Proxyman is a high-performance macOS app that enables developers to view HTTP/HTTPS requests from apps and domains, including iOS devices, iOS Simulators, and Android devices. ![Proxyman dashboard for macOS 26](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FUc6cygtl1lgELnAz8pXy%252Fnew_dashboard_macOS_26.jpg%3Falt%3Dmedia%26token%3D5827a834-698f-40ce-a550-5cbed8f36da8&width=768&dpr=4&quality=100&sign=3ac6fb3e&sv=2) Proxyman Dashboard for macOS 26 ### [](https://docs.proxyman.com/#id-2.-features) 2\. Features * ✅ Intercept HTTP/HTTPS (SSL) requests from your MacBook, iOS Simulators, iOS devices, and Android devices 📱. * Built for Apple Silicon Chip and macOS 26 Tahoe * ✅ 100% written by Apple Swift NIO for high-performance * 🦋 Modern and intuitive UI. * 🍸 Liquid Glass UI for macOS 26 * ⭐️ Exclusively native built for macOS. ElectronJS-based for Windows & Linux * 👑 Comprehensive debugging tools: Compose, Repeat, ... * 🛠 Advanced Tools: Map Local, Map Remote, Breakpoint, Allow List, Block List, External Proxying, No Caching, Clear Cache, Protobuf, Scripting (Rewrite), and Diff. * 👨‍💻 Customizable workspace. * 🖥 Support macOS 12 or later [](https://docs.proxyman.com/#id-3.-download) 3\. Download --------------------------------------------------------------- * Download the latest [macOS app](https://proxyman.io/release/osx/Proxyman_latest.dmg) * Download the latest [Windows app](https://proxyman.io/release/windows/Proxyman_latest.dmg) * Download the latest [Linux app](https://proxyman.com/release/linux/proxyman_latest) * Download the latest [iOS app](https://apps.apple.com/us/app/proxyman/id1551292695) * Download via Cask [](https://docs.proxyman.com/#id-4.-github) 4\. Github ----------------------------------------------------------- [Proxyman's Repo Github](https://github.com/ProxymanApp/Proxyman) is where you can create tickets for feature requests, discussions, or report bugs and catch up with Proxyman's team quickly and efficiently. We welcome all bug reports and feature requests 😍 If you'd notify all Proxyman's release. Please watch the repo [](https://docs.proxyman.com/#id-4.-milestone) 4\. Milestone ----------------------------------------------------------------- You can check the current [Milestone](https://github.com/ProxymanApp/Proxyman/milestones) in the GitHub repo. [NextChangelog](https://docs.proxyman.com/changelog) Last updated 1 month ago * [1\. Proxyman](https://docs.proxyman.com/#id-1.-proxyman) * [2\. Features](https://docs.proxyman.com/#id-2.-features) * [3\. Download](https://docs.proxyman.com/#id-3.-download) * [4\. Github](https://docs.proxyman.com/#id-4.-github) * [4\. Milestone](https://docs.proxyman.com/#id-4.-milestone) Copy $ brew install --cask proxyman --- # Proxyman for iOS | Proxyman [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-1.-proxyman-for-ios) 1\. Proxyman for iOS ------------------------------------------------------------------------------------------------------------------------ ### [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#features) Features * ✅ Capture all network traffic (HTTP/HTTPS) from your iOS Devices (No Macbook required). * Proxyman for iOS is a **standalone** app and works **independently** with Proxyman for macOS. * View HTTP/HTTPS Requests and Responses in plain text. * FaceID and Passcode to protect your sensitive data. * Share logs to Proxyman for macOS. * Split View (Two Side Panel) for iPad. * Debugging Tool: Map Local, Breakpoint, Block List, SSL Proxying List, No Caching. * and more... ### [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#download) Download * AppStore: [https://apps.apple.com/us/app/proxyman/id1551292695](https://apps.apple.com/us/app/proxyman/id1551292695) * Requires iOS 15+ ### [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#screenshots) Screenshots ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FBAtNZVxLaZ9RIjOYtQxS%252FScreenshot%25202023-06-01%2520at%252015.28.38.jpeg%3Falt%3Dmedia%26token%3Df08ac6bf-723c-4043-92bd-319643265d32&width=768&dpr=4&quality=100&sign=6367f0e2&sv=2) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F48eBMi75DxDraPiZozJS%252FScreenshot%25202023-06-01%2520at%252015.28.42.jpeg%3Falt%3Dmedia%26token%3D965254ef-a776-498a-8ff8-e1cd11746250&width=768&dpr=4&quality=100&sign=3507b38d&sv=2) [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-2.-proxyman-vpn) 2\. Proxyman VPN ---------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#how-does-it-work) How does it work? Proxyman for iOS creates a local VPN on your devices, then proxying all traffic from your iOS devices to a local Man-In-The-Middle Server. ### [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#what-data-does-proxyman-use) What data does Proxyman use? 1. **HTTP/HTTPS Request and Response data** Proxyman captures and decrypts HTTP/HTTPS data (Including Headers, Body, URL, Host, etc )to display them in plain text 2\. **Device Name** To generate a self-signed Root Certificate. Proxyman does not use pre-generated or shared certificates. Proxyman records the request/response data and stores it on the l**ocal SQLite database** in your iOS Devices. Proxyman **does not send** your data to any remote servers or third parties. Your data always remains **private** to you. [](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-3.-activate-premium-proxyman-for-ios) 3\. Activate Premium Proxyman for iOS ---------------------------------------------------------------------------------------------------------------------------------------------------------- If you have a valid macOS License, you can unlock Premium Proxyman for iOS. 1 seat can redeem for 2 iOS Devices. To activate, please Download Proxyman for iOS (AppStore) -> Open More Tab (on the Right-Bottom TabBar) -> FaceID & Passcode -> Unlock -> Enter your license key. [PreviousSecurity Compliance](https://docs.proxyman.com/security-compliance) [NextMap Local for iOS](https://docs.proxyman.com/proxyman-ios/map-local-for-ios) Last updated 1 year ago * [1\. Proxyman for iOS](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-1.-proxyman-for-ios) * [Features](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#features) * [Download](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#download) * [Screenshots](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#screenshots) * [2\. Proxyman VPN](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-2.-proxyman-vpn) * [How does it work?](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#how-does-it-work) * [What data does Proxyman use?](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#what-data-does-proxyman-use) * [3\. Activate Premium Proxyman for iOS](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate#id-3.-activate-premium-proxyman-for-ios) --- # Changelog | Proxyman You can see the changelog and download an old version at: * Proxyman for macOS Changelog: [https://proxyman.com/changelog](https://proxyman.com/changelog) * Proxyman for Windows Changelog: [https://proxyman.com/changelog-windows](https://proxyman.com/changelog-windows) * Github Release Page: [https://github.com/ProxymanApp/Proxyman/releases](https://github.com/ProxymanApp/Proxyman/releases) We recommend using the latest Proxyman version since it includes more features, bugs fix, and better performance. [PreviousOverview](https://docs.proxyman.com/) [NextLicense](https://docs.proxyman.com/license) Last updated 1 month ago --- # License | Proxyman [](https://docs.proxyman.com/license#proxyman-pro) Proxyman Pro -------------------------------------------------------------------- You can try all debugging tools with the Trial version, which is limited to 2 pinned domains, 2 rules for each debugging tool, and no new tabs. The **Pro version** comes with: * A year’s worth of macOS, Windows, and Linux updates * 1 Mac device per seat * Premium [Proxyman for iOS](https://proxyman.io/ios) (2 devices per seat) * Multiple Tabs * Unlimited Pinned Domains / Apps * Unlimited rules for all Advanced Debugging Tools (e.g., [SSL Proxying List](https://docs.proxyman.io/basic-features/ssl-proxying) , [Map Local](https://docs.proxyman.io/advanced-features/map-local) , [Map Remote](https://docs.proxyman.io/advanced-features/map-remote) , [Breakpoint](https://docs.proxyman.io/advanced-features/breakpoint) , [Allow/Block List](https://docs.proxyman.io/advanced-features/blacklist) , [Protobuf](https://docs.proxyman.io/advanced-features/protobuf) , [Scripting](https://docs.proxyman.io/scripting/script) , [Network Conditions](https://docs.proxyman.io/advanced-features/network-throttling) , [Multiple Filters](https://docs.proxyman.io/advanced-features/multiple-filters) , [Reverse Proxy](https://docs.proxyman.io/advanced-features/reverse-proxy) , [Request/Response Diff](https://docs.proxyman.io/advanced-features/diff) , etc). [](https://docs.proxyman.com/license#trial-evaluation-duration) Trial Evaluation Duration ---------------------------------------------------------------------------------------------- * Personal Purpose: No time limit. * Business Purpose: It's for 2 weeks. After that, please consider purchasing the license. [](https://docs.proxyman.com/license#demo-key) Demo Key ------------------------------------------------------------ If you're a team/company, you can request a 2-week demo key, then please contact [\[email protected\]](https://docs.proxyman.com/cdn-cgi/l/email-protection) . [](https://docs.proxyman.com/license#buy-proxyman-license) Buy Proxyman License ------------------------------------------------------------------------------------ Please navigate to the [Pricing page](https://proxyman.io/pricing) for purchasing Proxyman Licenses. [](https://docs.proxyman.com/license#manage-proxyman-license) Manage Proxyman License ------------------------------------------------------------------------------------------ If you're the owner of the Proxyman license key, you can manage your devices by using the [License Manager](https://docs.proxyman.com/license-manager) . [](https://docs.proxyman.com/license#active-license) Active License ------------------------------------------------------------------------ ### [](https://docs.proxyman.com/license#macos-windows-linux-app) macOS/Windows/Linux app 1. After purchasing the Proxyman License, you will receive a license key in your mailbox. 2. To activate, please open the Proxyman app (macOS/Windows/Linux) -> Proxyman Menu -> Buy Proxyman Pro. 3. Click on the "Activate License" button and enter your license key ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FmEVEggLP5ERnkjYaf691%252FScreenshot%25202024-02-18%2520at%252009.20.49.png%3Falt%3Dmedia%26token%3D99272b6f-4dbe-4945-8f52-a0f37a21ece7&width=768&dpr=4&quality=100&sign=f8761be8&sv=2) Activate License Key on macOS/Windows/Linux app ### [](https://docs.proxyman.com/license#activate-the-license-key-with-your-corporate-proxy) Activate the License key with your Corporate proxy * Available from Proxyman macOS 5.5.0 or later * Some companies have a Corporate Proxy, so can't activate the license key. To make it work, please follow the guide below: 1. Open Tools -> Proxy Setting -> External Proxy 2. Check "Enable External Proxy Tool" 3. Check the HTTP and HTTPS checkboxes 4. For each HTTP and HTTPS: Enter your Proxy Host and Port. 5. If your corporate proxy has the authentication, please enter it. 6. Done ✅ 7. Try to activate the License Key again. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FpBtSt61aJytpsLfFKSqG%252FCleanShot%25202024-06-03%2520at%252015.05.31%25402x.jpg%3Falt%3Dmedia%26token%3D1452ab4a-7990-4000-83c7-0a60b8cd389c&width=768&dpr=4&quality=100&sign=4b7781f3&sv=2) How to use External Proxy to Activate Proxyman License key ### [](https://docs.proxyman.com/license#ios-app) iOS app Proxyman license key comes with the Proxyman iOS app. 1 seat can be activated on 2 iOS devices. 1. Download the iOS app at App Store: [https://apps.apple.com/us/app/proxyman-network-debug-tool/id1551292695](https://apps.apple.com/us/app/proxyman-network-debug-tool/id1551292695) 2. Open the More Tab (on the Right-Bottom TabBar) -> FaceID & Passcode -> Unlock -> Enter your license key. 3. Done [](https://docs.proxyman.com/license#activate-license-by-cli-macos-only) Activate License by CLI (macOS Only) ------------------------------------------------------------------------------------------------------------------ If you have a huge number of licenses, you would like to have an automatic way to activate a license. You can do it too. 1. Download the Proxyman app and copy it to the `/Applications` folder 2. **Open and close the app at least.** It's necessary to set up some configurations. 3. Open Terminal and execute the following cmd: To **Activate**: To **Unlink** device: ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mgdp1dMRwpP2wX_ZYK0%252F-MgdpIilgkRX37KnFBtu%252F128307433-8887f444-5c94-42bb-8ec6-f30bce271f50.png%3Falt%3Dmedia%26token%3Df36c27bc-1d8b-4c67-9577-580203cc2d84&width=768&dpr=4&quality=100&sign=a2065b0e&sv=2) ### [](https://docs.proxyman.com/license#activate-by-url) Activate by URL You can also activate a Proxyman license by the URL: 1. Download and open Proxyman at least 1 time. 2. Open the URL in Safari or Google Chrome. `proxyman://activate?key=` ### [](https://docs.proxyman.com/license#remove-license) Remove License You can remove your license from your devices and then activate it on your new devices as long as you have enough available seats. #### [](https://docs.proxyman.com/license#from-your-current-devices) From your current devices Open Proxyman app -> Proxyman Menu -> License -> Click on the "Unlink this device" button. #### [](https://docs.proxyman.com/license#with-license-manager) With License Manager 1. Open the [License Manager](https://proxyman.io/license-manager/access-link) 2. Enter the email address that you've used to purchase a license 3. Open the access link from your email. 4. Click on the device to remove it. ### [](https://docs.proxyman.com/license#activate-license-with-cooperated-proxy-server) Activate License with Cooperated Proxy Server From Proxyman 4.12.0 or later, you can ask Proxyman to use Cooperated Proxy in a Tools Menu -> Proxy Setting -> External Proxy -> Set HTTP / HTTPS Proxy setting. [PreviousChangelog](https://docs.proxyman.com/changelog) [NextLicense Manager](https://docs.proxyman.com/license-manager) Last updated 1 month ago * [Proxyman Pro](https://docs.proxyman.com/license#proxyman-pro) * [Trial Evaluation Duration](https://docs.proxyman.com/license#trial-evaluation-duration) * [Demo Key](https://docs.proxyman.com/license#demo-key) * [Buy Proxyman License](https://docs.proxyman.com/license#buy-proxyman-license) * [Manage Proxyman License](https://docs.proxyman.com/license#manage-proxyman-license) * [Active License](https://docs.proxyman.com/license#active-license) * [macOS/Windows/Linux app](https://docs.proxyman.com/license#macos-windows-linux-app) * [Activate the License key with your Corporate proxy](https://docs.proxyman.com/license#activate-the-license-key-with-your-corporate-proxy) * [iOS app](https://docs.proxyman.com/license#ios-app) * [Activate License by CLI (macOS Only)](https://docs.proxyman.com/license#activate-license-by-cli-macos-only) * [Activate by URL](https://docs.proxyman.com/license#activate-by-url) * [Remove License](https://docs.proxyman.com/license#remove-license) * [Activate License with Cooperated Proxy Server](https://docs.proxyman.com/license#activate-license-with-cooperated-proxy-server) Copy $ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli activate Copy $ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli unlink --- # Command-line | Proxyman Proxyman provides a useful command-line tool to enhance your onboarding experience ✅. You can access the tool at `/Applications/Proxyman.app/Contents/MacOS/proxyman-cli` [](https://docs.proxyman.com/command-line#id-1.-export-proxyman-config) 1\. Export Proxyman config ------------------------------------------------------------------------------------------------------- Export all debugging tools rules, such as SSL Proxying List, Breakpoint, Map Local, Scripting, Block List, Allow List, Reverse Proxy, and Network Conditions. Copy $ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -h OVERVIEW: Export all debugging tools rules (Breakpoint, SSL Pinning, Map Local, Map Remote, Scripting, etc). USAGE: proxyman-cli export [--mode ] --output OPTIONS: -m, --mode Export Mode (all = "All debugging tools's rules", enabledRules = "Only enabled rules"). (default: all) -o, --output A Output file to save the config to. --version Show the version. -h, --help Show help information. By default, the `export` command will export all rules. To exclude particular rules, please uncheck the "Enabled" column in each debugging tool and use the `-m enabledRules` #### [](https://docs.proxyman.com/command-line#for-example) For example: * Export all debugging tool rules: `$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -o ~/Desktop/data.json` * Only export enabled rules: `$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -m enabledRules -o ~/Desktop/data.json` [](https://docs.proxyman.com/command-line#id-2.-import-proxyman-config) 2\. Import Proxyman config ------------------------------------------------------------------------------------------------------- Import Proxyman debugging tools rules that you have exported by the export command. By default, new imported rules will be appended to the existing debugging rules. To override all rules, let use `-m override` #### [](https://docs.proxyman.com/command-line#for-example-1) For example: * Import all debugging rules by appending them: * Import, but override all my existing rules: [](https://docs.proxyman.com/command-line#id-3.-activate-unlink-license) 3\. Activate/Unlink License --------------------------------------------------------------------------------------------------------- Please check out the command for activating and unlinking a license. [License](https://docs.proxyman.com/license) [](https://docs.proxyman.com/command-line#id-4.-toggle-http-system-proxy) 4\. Toggle HTTP System Proxy ----------------------------------------------------------------------------------------------------------- From Proxyman 4.8.0 and later, we can toggle the Proxy System by command line. It's useful for Raycast Extension Reference: [https://github.com/ProxymanApp/Proxyman/issues/1626#issuecomment-1545862020](https://github.com/ProxymanApp/Proxyman/issues/1626#issuecomment-1545862020) [](https://docs.proxyman.com/command-line#id-5.-clear-session) 5\. Clear Session ------------------------------------------------------------------------------------- * We can clear the current Session from the command line. Available for Proxyman 4.12.0 and later. [](https://docs.proxyman.com/command-line#id-6.-toggle-debugging-tools) 6\. Toggle Debugging Tools ------------------------------------------------------------------------------------------------------- * Toggle Breakpoint, Map Local, and Scripting Tool by command line. Available for Proxyman 4.12.0 and later. [](https://docs.proxyman.com/command-line#id-7.-install-the-proxy-helper-tool-by-command-line) 7\. Install the Proxy Helper Tool by command line ----------------------------------------------------------------------------------------------------------------------------------------------------- From macOS 4.12.0 or later, you can install the Helper Tool without GUI. [](https://docs.proxyman.com/command-line#id-8.-export-proxyman-log) 8\. Export Proxyman Log ------------------------------------------------------------------------------------------------- **Proxyman macOS v5.11.0+ now supports:** * Export all (ProxymanSession Format) * Export certain domains (Only Host, no scheme, no port, no paths, and no Query) **From Proxyman macOS 5.20.0+, we can export with Raw or HAR format.** * Export All - RAW Request/Response Format * Export All - HAR Format * Export certain domains - RAW Request/Response Format * Export certain domains - HAR Format **From macOS 6.2.0+, we can export with a flag** `**--since **` **to only export from this flow ID.** [](https://docs.proxyman.com/command-line#id-9.-import-custom-root-certificate) 9\. Import Custom Root Certificate ----------------------------------------------------------------------------------------------------------------------- * ✅ Import Custom p12 Root Certificate to Proxyman * Automatically Trust the certificate in System Keychain (sudo required) * Available from Proxyman macOS 5.15.0 or later #### [](https://docs.proxyman.com/command-line#install-and-trust) Install and trust #### [](https://docs.proxyman.com/command-line#install-but-not-trust-you-might-need-to-trust-it-manually-in-the-keychain) Install but not trust (you might need to trust it manually in the Keychain) [PreviousRaycast](https://docs.proxyman.com/raycast) [NextSecurity Compliance](https://docs.proxyman.com/security-compliance) Last updated 25 days ago * [1\. Export Proxyman config](https://docs.proxyman.com/command-line#id-1.-export-proxyman-config) * [2\. Import Proxyman config](https://docs.proxyman.com/command-line#id-2.-import-proxyman-config) * [3\. Activate/Unlink License](https://docs.proxyman.com/command-line#id-3.-activate-unlink-license) * [4\. Toggle HTTP System Proxy](https://docs.proxyman.com/command-line#id-4.-toggle-http-system-proxy) * [5\. Clear Session](https://docs.proxyman.com/command-line#id-5.-clear-session) * [6\. Toggle Debugging Tools](https://docs.proxyman.com/command-line#id-6.-toggle-debugging-tools) * [7\. Install the Proxy Helper Tool by command line](https://docs.proxyman.com/command-line#id-7.-install-the-proxy-helper-tool-by-command-line) * [8\. Export Proxyman Log](https://docs.proxyman.com/command-line#id-8.-export-proxyman-log) * [9\. Import Custom Root Certificate](https://docs.proxyman.com/command-line#id-9.-import-custom-root-certificate) Copy $ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -h OVERVIEW: Import config to Proxyman. USAGE: proxyman-cli import [--mode ] --input OPTIONS: -m, --mode Import Mode (append = "Append to the existing rules"), override = "Import and Replace all existing rules". (default: append) -i, --input A input file to import. --version Show the version. -h, --help Show help information. Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -i ~/Desktop/data.json Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -m override -i ~/Desktop/data.json Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy on /Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy off Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli clear-session Copy # Scripting /Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting on /Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting off # Map Local /Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal on /Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal off # Breakpoint /Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint on /Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint off Copy sudo /Applications/Proxyman.app/Contents/MacOS/proxyman --install-privileged-components Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format raw Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format har Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format raw Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format raw Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert --password --trust Copy /Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert --password --- # License Manager | Proxyman License Manager is an easier way to manage your license, which allows you to: * Display License status (Purchase date, Expiry date, Number of Mac / iOS Seats) * See a list of devices, which activated by your license key * Renew / Extend your license key * Remove Mac or iOS devices ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FvdaVyomfECUnSQAdADNH%252FProxyman_License_Manager.png%3Falt%3Dmedia%26token%3D673f5de0-27ff-4beb-b7dd-96900948c9d5&width=768&dpr=4&quality=100&sign=e42c5793&sv=2) License Manager [](https://docs.proxyman.com/license-manager#how-to-use-it) How to use it? ------------------------------------------------------------------------------- 1. Open the [License Manage](https://proxyman.io/license-manager/access-link) 2. Enter your email, which you purchase a license key. 3. You will receive a `Access Link` from your mailbox. 4. Open it to access the License Manager. If you don't remember which email you purchase Proxyman License, please contact us at [\[email protected\]](https://docs.proxyman.com/cdn-cgi/l/email-protection) [PreviousLicense](https://docs.proxyman.com/license) [NextRaycast](https://docs.proxyman.com/raycast) Last updated 1 year ago --- # Breakpoint for iOS | Proxyman [](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------ Breakpoint is a tool to help developers: * Modify the Request Content: URL, Method, Header, and the Body * Modify the Response Content: Status Code, Headers, and the Body on the fly, without depending on Proxyman for macOS. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FddIVvK37RyQOQatOEx7Z%252F1.png%3Falt%3Dmedia%26token%3D8bb1ae30-4909-4a70-89c2-b7149313f708&width=768&dpr=4&quality=100&sign=e91813bb&sv=2) [](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios#id-2.-tutorial) 2\. Tutorial ---------------------------------------------------------------------------------------------- Please checkout the Breakpoint for iOS Tutorial. [Breakpoint for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial) [PreviousMap Local for iOS](https://docs.proxyman.com/proxyman-ios/map-local-for-ios) [NextTutorial for iOS](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios#id-1.-whats-it) * [2\. Tutorial](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios#id-2.-tutorial) --- # Map Local for iOS | Proxyman [](https://docs.proxyman.com/proxyman-ios/map-local-for-ios#whats-it) What's it? ------------------------------------------------------------------------------------- Map Local is a tool to help iOS developers to: * Map the URL with any pre-defined Response. It allows you to quickly test out with new Response without waiting for the real Endpoint from your Backend Server. * You can modify the Status Code, Headers, and Body. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FL8DWGalWnBlQYrD15OBF%252Fimage.png%3Falt%3Dmedia%26token%3D22d84080-d47c-460f-8bbc-69f91af794c5&width=768&dpr=4&quality=100&sign=7adbba9a&sv=2) Map Local on iOS [](https://docs.proxyman.com/proxyman-ios/map-local-for-ios#tutorial) Tutorial ----------------------------------------------------------------------------------- Please check out the Map Local for iOS Tutorial: [Map Local for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial) [PreviousProxyman for iOS](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate) [NextBreakpoint for iOS](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios) Last updated 1 year ago * [What's it?](https://docs.proxyman.com/proxyman-ios/map-local-for-ios#whats-it) * [Tutorial](https://docs.proxyman.com/proxyman-ios/map-local-for-ios#tutorial) --- # Raycast | Proxyman [](https://docs.proxyman.com/raycast#raycast-store) Raycast Store ---------------------------------------------------------------------- Proxyman macOS 5.10.0 supports Raycast Command to quickly control Proxyman. * Toggle System Proxy * Toggle Map Local Tool * Toggle Breakpoint * Toggle Blocklist * Toggle Allowlist * Toggle Map Remote * Toggle Scripting * Toggle External Proxy * Toggle SOCKS Proxy * Toggle Network Condition * Toggle SSL Proxying List * Toggle Record Traffic * Clear Session ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FwoTyinELLHdECSUzzHqA%252Fraycast_and_proxyman.jpeg%3Falt%3Dmedia%26token%3D17c54307-9a83-47e2-a35c-6f0a898a3dba&width=768&dpr=4&quality=100&sign=ed5f7a27&sv=2) Proxyman and Raycast [](https://docs.proxyman.com/raycast#download) Download ------------------------------------------------------------ * Store: [https://www.raycast.com/noah\_tran/proxyman](https://www.raycast.com/noah_tran/proxyman) * Click on the below button 👇 [![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2Fwww.raycast.com%2Fnoah_tran%2Fproxyman%2Finstall_button%402x.png%3Fv%3D1.1&width=300&dpr=4&quality=100&sign=b7ed7c97&sv=2)](https://www.raycast.com/noah_tran/proxyman) [PreviousLicense Manager](https://docs.proxyman.com/license-manager) [NextCommand-line](https://docs.proxyman.com/command-line) Last updated 1 year ago * [Raycast Store](https://docs.proxyman.com/raycast#raycast-store) * [Download](https://docs.proxyman.com/raycast#download) --- # Security Compliance | Proxyman ### [](https://docs.proxyman.com/security-compliance#exciting-news-proxyman-achieves-soc-2-type-2-compliance) Exciting News: Proxyman Achieves SOC 2 Type 2 Compliance! ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FHPEnIvKEiaU20KquIGkU%252FFrame%25208.jpg%3Falt%3Dmedia%26token%3Dacd187c8-36c9-46e7-9653-470db4a0eb49&width=768&dpr=4&quality=100&sign=cc630e6e&sv=2) Proxyman is now SOC 2 Compliant [](https://docs.proxyman.com/security-compliance#what-is-soc-2-type-2-compliance) What is SOC 2 Type 2 Compliance? ----------------------------------------------------------------------------------------------------------------------- SOC 2 is a stringent audit by the AICPA. A Type 1 report confirms our security controls are well-designed at a specific time, evaluating five key criteria: * **Security**: Protects against unauthorized access. * **Availability**: Ensures system availability for use. * **Processing Integrity**: Guarantees complete and accurate processing. * **Confidentiality**: Safeguards confidential information. * **Privacy**: Handles personal data per our privacy policy. [](https://docs.proxyman.com/security-compliance#why-soc-2-type-2-compliance-matters) Why SOC 2 Type 2 Compliance Matters ------------------------------------------------------------------------------------------------------------------------------ In today's digital world, strong security is essential. For a debugging proxy tool managing sensitive data, SOC 2 compliance: * Validates security controls. * Shows commitment to data protection. * Offers independent verification. * Demonstrates adherence to industry standards. [](https://docs.proxyman.com/security-compliance#what-does-this-mean-for-you) What Does This Mean for You? --------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/security-compliance#as-a-customer) **As a Customer** * **Enhanced Security**: Your data enjoys robust protection. * **Privacy Assurance**: Your information is handled responsibly. * **Transparency**: Security practices are verified. * **Trust**: Confidently use Proxyman in enterprises. ### [](https://docs.proxyman.com/security-compliance#as-a-reseller) **As a Reseller** * **Credibility**: Assure customers of our security. * **Enterprise-Ready**: Easily recommended to security-focused organizations. * **Compliance**: Meet vendor assessment needs. * **Documentation**: Access for sales support. [](https://docs.proxyman.com/security-compliance#privacy-statement) Privacy Statement ------------------------------------------------------------------------------------------ #### [](https://docs.proxyman.com/security-compliance#you-can-find-our-privacy-policy) You can find our [Privacy Policy](https://proxyman.io/privacy) [](https://docs.proxyman.com/security-compliance#whats-next) What's Next? ------------------------------------------------------------------------------ This milestone is the first step. Our focus includes: * Maintain SOC 2 Type 2 compliance. * Conducting regular audits. * Continuously enhancing security practices. For more about our security and privacy policies, visit our Privacy Policy, Terms of Service, and SDLC Policy. Questions? Reach us at [\[email protected\]](https://docs.proxyman.com/cdn-cgi/l/email-protection) [PreviousCommand-line](https://docs.proxyman.com/command-line) [NextProxyman for iOS](https://docs.proxyman.com/proxyman-ios/vpn-and-proxyman-certificate) Last updated 1 month ago * [Exciting News: Proxyman Achieves SOC 2 Type 2 Compliance!](https://docs.proxyman.com/security-compliance#exciting-news-proxyman-achieves-soc-2-type-2-compliance) * [What is SOC 2 Type 2 Compliance?](https://docs.proxyman.com/security-compliance#what-is-soc-2-type-2-compliance) * [Why SOC 2 Type 2 Compliance Matters](https://docs.proxyman.com/security-compliance#why-soc-2-type-2-compliance-matters) * [What Does This Mean for You?](https://docs.proxyman.com/security-compliance#what-does-this-mean-for-you) * [As a Customer](https://docs.proxyman.com/security-compliance#as-a-customer) * [As a Reseller](https://docs.proxyman.com/security-compliance#as-a-reseller) * [Privacy Statement](https://docs.proxyman.com/security-compliance#privacy-statement) * [What's Next?](https://docs.proxyman.com/security-compliance#whats-next) --- # Tutorial for iOS | Proxyman [Map Local for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial) [Breakpoint for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial) [PreviousBreakpoint for iOS](https://docs.proxyman.com/proxyman-ios/breakpoint-for-ios) [NextMap Local for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial) Last updated 1 year ago --- # Map Local for iOS Tutorial | Proxyman [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#manipulate-http-s-response-on-iphone-using-proxyman-map-local-tool) M**anipulate HTTP(s) response on iPhone using Proxyman Map Local Tool** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Since version 2.0.0, Proxyman has introduced Map Local Tool which enables developers to use the content of local files as a response to your requests, as they match with your rules. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F6ZkLy5DOt15zfy8h9Rzf%252Fimage.png%3Falt%3Dmedia%26token%3Dd07770db-26f5-4cb4-bfdc-a75947157a81&width=768&dpr=4&quality=100&sign=39dfa7aa&sv=2) Map Local Tool could significantly boost your speed development and provide the capability to rapidly test on several edge-cased without explicitly updating the data in your server. It’s also the must-have tool for QAs or Developers if you would like to test the app’s behavior with various responses. Some of the testing scenarios: * Define a Response and use it as a Response for matched Requests * Quickly try new parameters in responses. * Test the app’s behaviors with different parameters in the responses. * Test the UI layout with unusual content. * Quickly reproduce the bug with specific parameters in responses. * Mock Fake API with a local File: It's useful for developers would try out the testing APIs which are not in production. [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#prerequisites) Prerequisites ----------------------------------------------------------------------------------------------------------------------- * Already downloaded the latest version of Proxyman on AppStore: [https://apps.apple.com/us/app/proxyman/id1551292695](https://apps.apple.com/us/app/proxyman/id1551292695) * Already installed and trusted Proxyman Certificate on iOS device (If you’re new to Proxyman, please follow [this tutorial](https://proxyman.io/posts/2021-10-17-Getting-Started-With-Proxyman-For-iOS) on how to start intercepting HTTP traffic on your iPhone). [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#create-map-local-rules) Create Map Local Rules ----------------------------------------------------------------------------------------------------------------------------------------- There are 2 ways that we can define a Breakpoint rule: 1. From Setting screen * Go to Setting → map Local → Tap on + button. * From here we will need to manually fill in all required fields for the Rule, including Title, Method, Matching URL, and include Subpaths or not. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FqBB6jjw5emTe4sQ5BYXT%252Fimage.png%3Falt%3Dmedia%26token%3D34ae2ba7-78a7-4aa5-962e-8f3f29f24aa5&width=768&dpr=4&quality=100&sign=a61953d6&sv=2) 1. From the Menu context * Long tap on the Request → Add to Map Local List. * It will automatically fill in all fields to define the Rule based on the selected Request. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FP4m6fwmDFFajCiM7XFor%252Fimage.png%3Falt%3Dmedia%26token%3D778aced2-f42f-4733-af3f-bbff9d6e0b40&width=768&dpr=4&quality=100&sign=6ec04f1&sv=2) #### [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#modify-header-status-code-and-body) Modify Header, Status Code and Body From the Map Local Editor screen, we can freely manipulate the Headers, Status Code and Body data. If we alternate the Body with the new data type, Proxyman will auto-detect the Content-Type and update Headers for us. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FKpKjXE8Lb8rKElzA1VbI%252Fimage.png%3Falt%3Dmedia%26token%3Dda5cfafe-853b-47f0-bdfb-220ca74a7946&width=768&dpr=4&quality=100&sign=12aea40&sv=2) [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#manipulate-response-with-map-local-tool) Manipulate Response with Map Local Tool --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FUOsK4RcZW2hkNf12zj39%252Fimage.png%3Falt%3Dmedia%26token%3D59fc799c-5ea7-4ac8-b811-fc0c8be49096&width=768&dpr=4&quality=100&sign=9820ddb4&sv=2) And you’re all set, it’s time to make another request to see how it works. If the URL of incoming requests are matching with the **pre-defined matching Rule**, and the Local file is valid => The body response of those matching requests is automatically replaced with the content of the local file. If the requests are not matching any rules, the entire Response's content remains on the server. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEc0h4lMACaiTWXE5nfc4%252Fimage.png%3Falt%3Dmedia%26token%3Dbf9e5161-be5a-4438-a184-6018415bab7e&width=768&dpr=4&quality=100&sign=329c0ac4&sv=2) Nicely done! If you look into the flow list, you will find a small blue icon to indicate that this flow has been modified. As you can see, both the Response content has been updated with the local file. [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#whats-next) What’s next ------------------------------------------------------------------------------------------------------------------ Map Local tool allows you to try various types of responses to test the layout or content from your devices, thus boosting your debugging productivity, but limited by the capability of modifying Response content only. If you'd like to modify the Request content, you might want to check out our [Breakpoint tutorial](https://docs.proxyman.io/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial) that enables us to manipulate both the Request and Response on the fly without changing any logic from your client. [PreviousTutorial for iOS](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios) [NextBreakpoint for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial) Last updated 2 years ago * [Manipulate HTTP(s) response on iPhone using Proxyman Map Local Tool](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#manipulate-http-s-response-on-iphone-using-proxyman-map-local-tool) * [Prerequisites](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#prerequisites) * [Create Map Local Rules](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#create-map-local-rules) * [Manipulate Response with Map Local Tool](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#manipulate-response-with-map-local-tool) * [What’s next](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial#whats-next) --- # Breakpoint for iOS Tutorial | Proxyman [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-http-s-request-and-response-on-your-iphone-with-proxyman-breakpoint-tool) M**odify HTTP(s) Request & Response on your iPhone with Proxyman Breakpoint Tool** --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Since version 2.0.0, Proxyman has introduced a new feature that enables developers to manipulate the Request & Response data on the fly without changing any logic from your client. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FBIZoWcR4stO85CRcpmxs%252F1.png%3Falt%3Dmedia%26token%3D6c91591e-bb3b-4c14-88cc-2dbd9ec5861b&width=768&dpr=4&quality=100&sign=a770a8b6&sv=2) This mini tutorial demonstrates how we can modify HTTP(s) Requests/Responses on iOS devices with Proxyman Breakpoint Tool, for example: * Modify the Request URL (including the Scheme, Host, Path, Port) and HTTP Method * Modify HTTP Headers of Request/Response * Modify Query from Requests * Modify HTTP Body of Request/Response * Modify Response HTTP Status Code [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#prerequisites) Prerequisites ------------------------------------------------------------------------------------------------------------------------ * Already downloaded the latest version of Proxyman on AppStore: [https://apps.apple.com/us/app/proxyman/id1551292695](https://apps.apple.com/us/app/proxyman/id1551292695) * Already installed and trusted Proxyman Certificate on iOS device (If you’re new to Proxyman, please follow [this tutorial](https://proxyman.io/posts/2021-10-17-Getting-Started-With-Proxyman-For-iOS) on how to start intercepting HTTP traffic on your iPhone). [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#create-breakpoint-rules) Create Breakpoint Rules -------------------------------------------------------------------------------------------------------------------------------------------- There are 3 ways that we can define a Breakpoint rule: 1. From Setting screen * Go to Setting → Breakpoint → Tap on the + button. * From here we will need to manually fill in all required fields for the Rule, including Title, Method, Matching URL, and include Subpaths or not. * We are also able to select if this rule is applied for upcoming Requests, Responses or both. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F5S4NyNWNB3xFvEJc08zr%252Fimage.png%3Falt%3Dmedia%26token%3Dd4210feb-66b7-45ce-84c4-f05003d088f5&width=768&dpr=4&quality=100&sign=793d65b1&sv=2) 1. From "Waiting Breakpoint" screen * Tap on Waiting Breakpoint icon → Create Breakpoint Rule. * Then we will need to manually create the Rule (similar to the previous option). ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FxlSs0vWcERciw078gyrF%252Fimage.png%3Falt%3Dmedia%26token%3Dee2968a9-c897-4304-9b21-6a7fb4473266&width=768&dpr=4&quality=100&sign=aca6b8ce&sv=2) 1. From the Menu context * Long tap on the Request → Add to Breakpoint List. * It will automatically fill in all fields to define the Rule based on the selected Request. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FQNBr7U0CDx115BSJ2zs6%252Fimage.png%3Falt%3Dmedia%26token%3Dc435835e-625d-4002-8dfa-d6006b032af8&width=768&dpr=4&quality=100&sign=83e6f8bb&sv=2) In this example, the Breakpoint Rule will apply to both upcoming Requests/ Responses. Let’s make a Request to see how it works. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEpsjclwDCDZQ7hjGg6Q0%252Fimage.png%3Falt%3Dmedia%26token%3D33dbcbe4-98a7-487c-bd8e-957f662ede49&width=768&dpr=4&quality=100&sign=7c7303e4&sv=2) [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-http-s-requests) Modify HTTP(s) Requests ------------------------------------------------------------------------------------------------------------------------------------------- Once we make a Request with the matching URL, Proxyman will stop it and notify us that there are waiting breakpoints. From the Home screen, we can tap the small icon to see the waiting Breakpoint list and select a Breakpoint to start modifying the Request Content. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FJJC63T0lDdXd092MbXPw%252Fimage.png%3Falt%3Dmedia%26token%3D8b68af10-38b6-4e84-93f6-b7d2656d0bba&width=768&dpr=4&quality=100&sign=e0aef556&sv=2) #### [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-url--method) Modify URL + Method We can freely manipulate the HTTP Method, URL, and Query,. The URL will be auto-updated as the queries change and vice versa. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F9mVthwRmJf5DWqU1l756%252Fimage.png%3Falt%3Dmedia%26token%3Dd9ba8a2f-9156-4ede-a6b0-e40916a9893a&width=768&dpr=4&quality=100&sign=1964cd3c&sv=2) #### [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-body) Modify Body If we alternate the Body with a new data type, Proxyman will auto-detect the Content-Type and update Headers for us. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F7GfNV7zNrQfhmjn7DwRo%252Fimage.png%3Falt%3Dmedia%26token%3D80159dd2-ac02-4759-aa84-7b1ff5511858&width=768&dpr=4&quality=100&sign=f15d386b&sv=2) [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#execute-abort-continue-breakpoint) Execute, abort, continue Breakpoint ------------------------------------------------------------------------------------------------------------------------------------------------------------------ When you're happy with the change, you can execute the Request/ Response by selecting the option from the top right menu. To keep the original Request, you can use the Continue button or cancel it with the Abort option. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEvLV3vQCd1maOUfvAXXZ%252Fimage.png%3Falt%3Dmedia%26token%3D64c6a7c9-0237-4b82-8357-4043ff119d29&width=768&dpr=4&quality=100&sign=4d2eb1&sv=2) Since our Breakpoint rule is applied for both Request and Response, you will find the Response added to waiting breakpoints list once you hit the “Execute” button. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FfyYSzntonxkmLbpD7TFj%252Fimage.png%3Falt%3Dmedia%26token%3D92c65c2a-8be6-4d60-9d52-fcbedfb5fa16&width=768&dpr=4&quality=100&sign=8f135ca4&sv=2) Now you can change the HTTP Status Code, update Headers or alternate the Body with new content for Response (similar to modifying Request Breakpoint) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F6HJlMZouZ9Rf4Biq7XOK%252Fimage.png%3Falt%3Dmedia%26token%3D61f4963f-e9a2-415b-bfc4-090e9574acd4&width=768&dpr=4&quality=100&sign=43974d97&sv=2) Nicely done! If you look into the flow list, you will find a small blue icon to indicate that this flow has been modified. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FAuspFYIailtEHGC27hVe%252Fimage.png%3Falt%3Dmedia%26token%3Da35c9593-caa4-44b5-8d11-b9da9beec27c&width=768&dpr=4&quality=100&sign=7963374a&sv=2) As you can see, both the Request and Response content has been updated as expected. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fcl0SHf0RIWtAuJnScERy%252Fimage.png%3Falt%3Dmedia%26token%3Dcf18c528-9673-4802-8459-d667eece41ff&width=768&dpr=4&quality=100&sign=4292ccf5&sv=2) **NOTES**: * When you create a new rule, both Breakpoint Tool and Rule will be enabled by default (you can switch it ON/OFF as needed). * Make sure to check the VPN status (1), the Breakpoint Tool status (2), and the Breakpoint Rule status (3) are all ENABLED so that the Breakpoint Tool can work. * If the first rule matches the Requests/ Responses, other rules will not be applied. * As you’re editing the Request, the Response tab will be disabled. As you’re editing the Response, the Request tab will be displayed in read-only mode. [](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#whats-next) What’s next ------------------------------------------------------------------------------------------------------------------- Breakpoint allows you to modify the Request/Response on the fly, but it requires a lot of manual works. If you'd like to make it automated, you might check out our [Map Local tool](https://docs.proxyman.io/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial) tutorial to automatically map a local file as a Response. [PreviousMap Local for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/map-local-for-ios-tutorial) [NextmacOS](https://docs.proxyman.com/debug-devices/macos) Last updated 2 years ago * [Modify HTTP(s) Request & Response on your iPhone with Proxyman Breakpoint Tool](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-http-s-request-and-response-on-your-iphone-with-proxyman-breakpoint-tool) * [Prerequisites](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#prerequisites) * [Create Breakpoint Rules](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#create-breakpoint-rules) * [Modify HTTP(s) Requests](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#modify-http-s-requests) * [Execute, abort, continue Breakpoint](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#execute-abort-continue-breakpoint) * [What’s next](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial#whats-next) --- # Sample Android Project | Proxyman [](https://docs.proxyman.com/debug-devices/android-device/sample-android-project#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------------------------------- Sample Kotlin Android Project to demonstrate how Proxyman can capture & decrypt HTTPS data from OKHTTP library ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FYUJTdlDcvMbE7oM9TZek%252FCapture_HTTPS_Android_Emulator_proxyman.jpg%3Falt%3Dmedia%26token%3D3f8587d7-9d7c-4846-bb71-4469ecdf3c47&width=768&dpr=4&quality=100&sign=f118e650&sv=2) Capture and decrypt HTTPS traffic from Android [](https://docs.proxyman.com/debug-devices/android-device/sample-android-project#id-2.-download) 2\. Download ------------------------------------------------------------------------------------------------------------------ Download at [https://github.com/ProxymanApp/OKHTTP-Android-Sample](https://github.com/ProxymanApp/OKHTTP-Android-Sample) [PreviousAutomatic Script for Android Emulator](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) [NextFirefox](https://docs.proxyman.com/debug-devices/firefox) Last updated 10 months ago * [1\. What's it?](https://docs.proxyman.com/debug-devices/android-device/sample-android-project#id-1.-whats-it) * [2\. Download](https://docs.proxyman.com/debug-devices/android-device/sample-android-project#id-2.-download) --- # iOS Simulator | Proxyman In order to capture the HTTP/HTTPS message from your iOS Simulator devices, please navigate to: * **Certificate** **Menu** -> **Install Certificate on iOS -> Simulators** [](https://docs.proxyman.com/debug-devices/ios-simulator#id-1.-ios-simulator-setup-guide) 1\. iOS Simulator Setup Guide ---------------------------------------------------------------------------------------------------------------------------- ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FOTHyl34jcJKoxLlftmAv%252FScreen%2520Shot%25202022-07-11%2520at%252008.15.26.png%3Falt%3Dmedia%26token%3D6c20e89e-e37c-4bc0-a115-bf12ca60c25b&width=768&dpr=4&quality=100&sign=c75fd201&sv=2) Automatically install the Certificate to iOS Simulators It works for iOS, iPadOS, tvOS and watchOS. The following photo describes three steps: 1. Install **Root Proxyman Certificate** on your machine: You can follow the [macOS Guide](https://docs.proxyman.com/debug-devices/macos) . 2. Install Proxyman Certificate to all available simulators, which you have opened at least one time. 3. **Reset the Simulator**: Proxyman tries to reset all simulators, so it will load the new Certificate. From Proxyman 2.19.0+, Proxyman uses the [simctl](https://nshipster.com/simctl/) command line to perform tasks. **simctl** is built-in on your installed Xcode, which is more modern and reliable than the legacy approach (Use Python custom scripts). This step only installs on Simulators, which you have open at least one time For instance, if you would like to debug on iPhone X Simulator, please make sure to **open** the iPhone X Simulator first, then **install** the Certificate in Step 2 ### [](https://docs.proxyman.com/debug-devices/ios-simulator#xcode-preview-swiftui) Xcode Preview (SwiftUI) If you're using Xcode Preview for SwiftUI, you can install the certificate into the Xcode Preview Simulator by following: 1. Open Xcode with Previewer Mode (SwiftUI). 2. Open Proxyman -> Certificate Menu -> Install for iOS -> Simulator 3. Click on the Advanced button -> Install for Xcode Preview You can read more at: [https://github.com/ProxymanApp/Proxyman/issues/1568#issue-1610877870](https://github.com/ProxymanApp/Proxyman/issues/1568#issue-1610877870) ### [](https://docs.proxyman.com/debug-devices/ios-simulator#manually-install) Manually Install In Proxyman v4.16.0 or later, you can manually install the certificate to your iOS Simulator in case the Automatic Solution doesn't work. 1. Certificate Menu -> Install Certificates for iOS -> Simulators 2. In Step 2, click on the ↓ button (Next to the Prepare Simulators button) -> Install Manually… ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FwyIzDnapd10ppD45YJEj%252FScreenshot%25202024-11-01%2520at%252020.14.39.jpg%3Falt%3Dmedia%26token%3D2de174a8-18aa-4c4a-9af6-042b997ac05f&width=768&dpr=4&quality=100&sign=e5242bde&sv=2) Install certificate manually 1. Drag and drop the certificate to your iOS Simulator ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FLG9nNR54513dcoCfEK4k%252FScreenshot%25202024-01-07%2520at%252014.43.13.png%3Falt%3Dmedia%26token%3D28aee8d4-f520-42c2-9943-12c9609758eb&width=768&dpr=4&quality=100&sign=a9fefc94&sv=2) Manually Install the certificate 1. Open your iOS Simulator -> Setting app -> General -> About -> Certificate Trust Setting -> Find Proxyman CA Certificate and switch it ON 2. Done [](https://docs.proxyman.com/debug-devices/ios-simulator#id-2.-troubleshooting) 2\. Troubleshooting -------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/ios-simulator#id-1.-unable-to-install-the-certificate) 1\. Unable to install the Certificate If you get errors when clicking on Step 2, please open Xcode -> Preferences -> Location tabs -> Select your Xcode in the Command Line Tools. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fur9sOsIVGGJmQiPFslqK%252FScreen_Shot_2022-07-11_at_08_12_33.png%3Falt%3Dmedia%26token%3Dc42927bd-bc3f-4518-b03f-6751ae4943ee&width=768&dpr=4&quality=100&sign=17b159cf&sv=2) Make sure you have the Xcode Command Line ### [](https://docs.proxyman.com/debug-devices/ios-simulator#id-2.-get-ssl-error-from-https-response) 2\. Get SSL Error from HTTPS Response * Opening the Setting app -> General -> About -> Certificate Trust Settings and verifying that Proxyman Certificate is installed and trusted. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MV039NT2Fefr24GMsvz%252F-MV04a_0MtTevA03M6fq%252FScreen%2520Shot%25202021-03-05%2520at%252013.32.25.png%3Falt%3Dmedia%26token%3D35fc01cc-2a36-425f-aa80-e83b8ce9fea2&width=768&dpr=4&quality=100&sign=a9d8568&sv=2) Proxyman Certificate is installed and trusted properly If it's not installed: * Open the iOS Simulator Setup (Certificate Menu -> Install Certificate on iOS -> Simulator) and click on the 2nd button. * Or Try the following step to manually install the Certificate. ### [](https://docs.proxyman.com/debug-devices/ios-simulator#id-3.-some-http-https-requests-are-missing-from-proxyman) 3\. Some HTTP/HTTPS Requests are missing from Proxyman Alamofire or URLSession might use the cached response for your request. As a result, the actual request doesn't hit the server. Thus, Proxyman could not capture and display it on the app. Solution: * Disable the cache mechanism on URLSession or Alamofre. * Use the [No Caching Tool](https://docs.proxyman.com/advanced-features/no-caching) (⌥⌘N) [](https://docs.proxyman.com/debug-devices/ios-simulator#manually-install-the-certificate-by-exporting-the-certificate) Manually Install the Certificate by exporting the certificate ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ If you cannot install the certificate, you can **manually** do it: 1. Open Proxyman -> Certificate Menu -> Export -> Root Certificate as DER -> Save to Desktop Folder 2. Open the Simulator **drag the certificate and drop it** on the Simulator screen 3. Open Setting app (on the Simulator) -> General -> Device Management -> Select the Certificate -> Install 4. Setting app -> General -> About -> Certificate Trust Settings and verifying that Proxyman Certificate is installed and trusted. 5. Done ✅ ### [](https://docs.proxyman.com/debug-devices/ios-simulator#tutorial) Tutorial See detailed steps to [debug an application on iOS Simulator](https://proxyman.io/blog/2019/07/Debugging-on-iOS-Simulator-with-Proxyman.html) with Proxyman [PreviousiOS Device](https://docs.proxyman.com/debug-devices/ios-device) [NexttvOS & watchOS](https://docs.proxyman.com/debug-devices/tvos-and-watchos) Last updated 1 year ago * [1\. iOS Simulator Setup Guide](https://docs.proxyman.com/debug-devices/ios-simulator#id-1.-ios-simulator-setup-guide) * [Xcode Preview (SwiftUI)](https://docs.proxyman.com/debug-devices/ios-simulator#xcode-preview-swiftui) * [Manually Install](https://docs.proxyman.com/debug-devices/ios-simulator#manually-install) * [2\. Troubleshooting](https://docs.proxyman.com/debug-devices/ios-simulator#id-2.-troubleshooting) * [1\. Unable to install the Certificate](https://docs.proxyman.com/debug-devices/ios-simulator#id-1.-unable-to-install-the-certificate) * [2\. Get SSL Error from HTTPS Response](https://docs.proxyman.com/debug-devices/ios-simulator#id-2.-get-ssl-error-from-https-response) * [3\. Some HTTP/HTTPS Requests are missing from Proxyman](https://docs.proxyman.com/debug-devices/ios-simulator#id-3.-some-http-https-requests-are-missing-from-proxyman) * [Manually Install the Certificate by exporting the certificate](https://docs.proxyman.com/debug-devices/ios-simulator#manually-install-the-certificate-by-exporting-the-certificate) * [Tutorial](https://docs.proxyman.com/debug-devices/ios-simulator#tutorial) --- # Java VMs | Proxyman In order to intercept HTTPS traffic from Java apps, extra steps are required to install the Proxyman CA Certificate into the Java Key Store. * Intercept Traffic from Unit Test (written by Java or Kotlin) * Intercept Traffic from Java app or CLI [](https://docs.proxyman.com/debug-devices/java#id-1.-benefit) 1\. Benefit ------------------------------------------------------------------------------- * Proxyman provides a script to help developers automatically install Root Certificate to Java KeyStore with 1 click ✅ * Support `$JAVA_HOME` * Support `SDKMAN` * Support `/usr/libexec/java_home` [](https://docs.proxyman.com/debug-devices/java#id-2.-how-to-use) 2\. How to use? -------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/java#id-1.-install-proxyman-ca-on-your-mac) 1\. Install Proxyman CA on your Mac Before installing Proxyman CA on Java VMs, we have to install it properly on your current Mac machine. Check out the macOS Guideline: [macOS](https://docs.proxyman.com/debug-devices/macos) You can skip and start the next step if you've done this step. [](https://docs.proxyman.com/debug-devices/java#id-2.-install-proxyman-ca-to-all-java-key-stores) 2\. Install Proxyman CA to all Java Key Stores ----------------------------------------------------------------------------------------------------------------------------------------------------- * Certificate Menu -> Install Certificate on Java VMs -> Run Scripts ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FGRgqua059Qa4O3GwRCBl%252FScreen_Shot_2022-04-08_at_15_12_49.jpg%3Falt%3Dmedia%26token%3D2a8584e2-9e78-4cb2-8a15-ebec4f988a92&width=768&dpr=4&quality=100&sign=d2dbe75a&sv=2) Run Java script * The script will attempt to find the Key Store location from **JAVA\_HOME, SDKHOME,** or from **$(/usr/libexec/java\_home)** environment and install the CA Certificate if possible ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FFGnSsCF3yPNokQln4Fgz%252FScreenshot%25202025-02-15%2520at%252014.20.51.jpg%3Falt%3Dmedia%26token%3Da34d3dac-b820-4e59-9789-5282fcd3e131&width=768&dpr=4&quality=100&sign=71b12c27&sv=2) Proxyman install the certificate to all Java Trust Store if possible You can find the script at /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Versions/A/Resources/install-certificates-java.sh The script might require permission for EventKit because Proxyman triggers the script by [Apple Script](https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html) in order to install it under admin permission. ### [](https://docs.proxyman.com/debug-devices/java#alternative-solution) Alternative solution * Check out @[**yauheniprakapenka**](https://github.com/yauheniprakapenka) solution: [https://github.com/ProxymanApp/Proxyman/issues/569#issuecomment-723588490](https://github.com/ProxymanApp/Proxyman/issues/569#issuecomment-723588490) if you get the following error `sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target` [PreviousFirefox](https://docs.proxyman.com/debug-devices/firefox) [NextPython](https://docs.proxyman.com/debug-devices/python) Last updated 10 months ago * [1\. Benefit](https://docs.proxyman.com/debug-devices/java#id-1.-benefit) * [2\. How to use?](https://docs.proxyman.com/debug-devices/java#id-2.-how-to-use) * [1\. Install Proxyman CA on your Mac](https://docs.proxyman.com/debug-devices/java#id-1.-install-proxyman-ca-on-your-mac) * [2\. Install Proxyman CA to all Java Key Stores](https://docs.proxyman.com/debug-devices/java#id-2.-install-proxyman-ca-to-all-java-key-stores) * [Alternative solution](https://docs.proxyman.com/debug-devices/java#alternative-solution) --- # Firefox | Proxyman [](https://docs.proxyman.com/debug-devices/firefox#new-solution-proxyman-v5.19.0-or-later-recommended) ✅ New Solution (Proxyman v5.19.0 or later - recommended) -------------------------------------------------------------------------------------------------------------------------------------------------------------------- With Proxyman v5.19.0+, Proxyman can capture HTTPS Requests/Responses from Firefox with 1-click setup. 1. Go to Setup Menu -> Automatic Setup 2. On the Web Browser Section -> Click the ⬇️ Arrow Button -> Select Firefox ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fs9CEz0ITuJFFEjMWYjLG%252FScreenshot%25202025-04-28%2520at%252009.53.27.jpg%3Falt%3Dmedia%26token%3D87bc7291-2ecf-418f-9bc5-f58bcbf0c02f&width=768&dpr=4&quality=100&sign=6cc15097&sv=2) How to capture HTTPS Reqyests/Responses from Firefox Browser with Proxyman 1. New Firefox instance will open 2. ✅ Done. All traffic from Firefox will be captured by Proxyman This setup will make Firefox or Google Chrome: * Auto set Proxyman to Proxyman * Auto install & trust Proxyman Certificate Works with Google Chrome and Firefox [](https://docs.proxyman.com/debug-devices/firefox#old-solution-proxyman-v5.18.0-or-ealier) ❌ Old Solution (Proxyman v5.18.0 or ealier) -------------------------------------------------------------------------------------------------------------------------------------------- In order to intercept HTTPS traffic from Firefox, it requires extra steps to install Proxyman CA into Firefox's Trust Store. ### [](https://docs.proxyman.com/debug-devices/firefox#id-1.-install-proxyman-ca-on-macos-machine) 1\. Install Proxyman CA on macOS machine Before installing Proxyman CA on Java VMs, we have to install it properly on your current machine. Check out macOS Guidelines: [macOS](https://docs.proxyman.com/debug-devices/macos) If you've done this step, you can skip to the next step. ### [](https://docs.proxyman.com/debug-devices/firefox#id-2.-set-proxy-on-firefox) 2\. Set Proxy on Firefox * Open Firefox's Preferences panel (CMD+,) * Search Proxy and open the Proxy Settings * Select Auto Use System Proxy or manually hardcode the Proxy IP and Port ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MH_Go0N5xZXL5IXWXr0%252F-MH_Hi8ciXNj2TC6323L%252FScreen_Shot_2020-09-19_at_14_33_17.png%3Falt%3Dmedia%26token%3D893e85c2-2e4a-451b-b4b0-eccfa1446280&width=768&dpr=4&quality=100&sign=9127de2f&sv=2) ### [](https://docs.proxyman.com/debug-devices/firefox#id-3.-install-proxyman-ca-to-firefox) 3\. Install Proxyman CA to Firefox 1. Open `http://proxy.man/ssl` on Firefox and download the certificate to your Download folder http://proxy.man/ssl is a local HTTP Server for strengthening the security. Please make sure the Proxyman app is open when accessing this domain. 2\. Open Firefox's Preferences (CMD+,) and openthe View Certificate window ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MAUFPily_DmIzAplEmx%252F-MAUH9ID3Ks0R5MuU0L6%252FScreen_Shot_2020-06-23_at_10_27_27.png%3Falt%3Dmedia%26token%3Dc82c8345-0dae-4fed-bcac-2b9da5ec2f50&width=768&dpr=4&quality=100&sign=144251a8&sv=2) 3\. Open the Authorities Tab and select the Import button ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MAUFPily_DmIzAplEmx%252F-MAUHITJp-gj9-hSheNW%252FScreen_Shot_2020-06-23_at_10_27_35.png%3Falt%3Dmedia%26token%3Defc6c514-3041-4499-a3a5-8a071b1fc261&width=768&dpr=4&quality=100&sign=2a64afed&sv=2) 4\. Select Proxyman CA, which you've downloaded and Trust all. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MAUFPily_DmIzAplEmx%252F-MAUHTWo97fQnsijXTbu%252FScreen_Shot_2020-06-23_at_10_37_52.png%3Falt%3Dmedia%26token%3Da88b32e7-e8bf-40b9-a571-7aee82663b28&width=768&dpr=4&quality=100&sign=31003df3&sv=2) 5\. Reload the page that you need to intercept. Enjoy! [PreviousSample Android Project](https://docs.proxyman.com/debug-devices/android-device/sample-android-project) [NextJava VMs](https://docs.proxyman.com/debug-devices/java) Last updated 8 months ago * [✅ New Solution (Proxyman v5.19.0 or later - recommended)](https://docs.proxyman.com/debug-devices/firefox#new-solution-proxyman-v5.19.0-or-later-recommended) * [❌ Old Solution (Proxyman v5.18.0 or ealier)](https://docs.proxyman.com/debug-devices/firefox#old-solution-proxyman-v5.18.0-or-ealier) * [1\. Install Proxyman CA on macOS machine](https://docs.proxyman.com/debug-devices/firefox#id-1.-install-proxyman-ca-on-macos-machine) * [2\. Set Proxy on Firefox](https://docs.proxyman.com/debug-devices/firefox#id-2.-set-proxy-on-firefox) * [3\. Install Proxyman CA to Firefox](https://docs.proxyman.com/debug-devices/firefox#id-3.-install-proxyman-ca-to-firefox) --- # tvOS & watchOS | Proxyman Proxyman can capture and intercept HTTP/HTTPS traffic from tvOS and watchOS. [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#id-1.-watchos) 1\. watchOS ------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#simulator) Simulator It's straightforward by following the [Proxyman iOS Simulator Guideline.](https://docs.proxyman.com/debug-devices/ios-simulator#ios-simulator-setup-guide) ### [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#watchos-physical-device) watchOS Physical Device Follow the [iOS devices guideline](https://docs.proxyman.com/debug-devices/ios-device) to set HTTP Proxy and install the certificate to your host device. #### [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#tutorial) Tutorial: [![Logo](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2Fproxyman.com%2Ffavicon%2Fapple-touch-icon.png%3Fv%3D4&width=20&dpr=4&quality=100&sign=8607a8ca&sv=2)Intercept HTTPS Network Traffic from WatchOS 26 Simulator (Update for 2025) · ProxymanProxyman](https://proxyman.io/posts/2021-09-02-intercept-https-traffic-from-watch-os-simulator) [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#id-2.-tvos) 2\. tvOS ------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#simulator-1) Simulator Fortunately, it's easy to capture traffic from the tvOS simulator. All you have to do is follow the [iOS Simulator Guideline](https://docs.proxyman.com/debug-devices/ios-simulator) . ### [](https://docs.proxyman.com/debug-devices/tvos-and-watchos#tvos-devices) tvOS Devices It's quite tricky to use Proxyman on a real device. ✅ New Setup Guide (2024) * Follow this Medium article (from Raxit Majithiya): **Setup Proxyman in a physical AppleTV** [https://medium.com/@rax/setup-proxyman-in-a-physical-appletv-bf6df86d3a28](https://medium.com/@rax/setup-proxyman-in-a-physical-appletv-bf6df86d3a28) ⚠️ Old Setup Guide 1. Follow this tutorial: [https://www.willowtreeapps.com/craft/a-how-to-guide-for-apple-tv-setup-with-charles-proxy](https://www.willowtreeapps.com/craft/a-how-to-guide-for-apple-tv-setup-with-charles-proxy) 2. Instead of using Charles Proxy, you can use Proxyman. * Please note that Proxyman port is 9090 (default) * Export Proxyman Certificate in the Certificate Menu -> Export * Make sure you install & trust the Proxyman Certificate before intercepting HTTPS Traffic. If you can't set up Proxyman with watchOS or tvOS, please contact us at [\[email protected\]](https://docs.proxyman.com/cdn-cgi/l/email-protection) [PreviousiOS Simulator](https://docs.proxyman.com/debug-devices/ios-simulator) [NextAndroid Device & Emulator](https://docs.proxyman.com/debug-devices/android-device) Last updated 1 year ago * [1\. watchOS](https://docs.proxyman.com/debug-devices/tvos-and-watchos#id-1.-watchos) * [Simulator](https://docs.proxyman.com/debug-devices/tvos-and-watchos#simulator) * [watchOS Physical Device](https://docs.proxyman.com/debug-devices/tvos-and-watchos#watchos-physical-device) * [2\. tvOS](https://docs.proxyman.com/debug-devices/tvos-and-watchos#id-2.-tvos) * [Simulator](https://docs.proxyman.com/debug-devices/tvos-and-watchos#simulator-1) * [tvOS Devices](https://docs.proxyman.com/debug-devices/tvos-and-watchos#tvos-devices) --- # Automatic Script for Android Emulator | Proxyman [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-1.-whats-it) 1\. What's it? ----------------------------------------------------------------------------------------------------------------------------------- It's too complicated and error-prone if we manually override the HTTP Proxy, Install, and Trust Proxyman Certificate from your Android Emulator. Thus, Proxyman provides a built-in script to automatically perform it in a second. You can access it from **Certificate Menu -> Install Certificate on Android -> Emulator.** From Proxyman 5.14.0 or earlier, this Script only installs the User Certificate to the User Certificate Store, not the System Certificate Store. If you'd like to install the certificate into the System Certificate, please follow this [tutorial](https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/) . From Proxyman 5.15.0 or later, Proxyman can now install Proxyman certificate into the system-level Store. Make it possible to decrypt all HTTPS from Android Emulators. [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-2.-benefit) 2\. Benefit? -------------------------------------------------------------------------------------------------------------------------------- **1 Click to:** * **✅ Auto** Override / Revert HTTP Proxy * **✅ Automatically** download, install, and trust the Proxyman Certificate at the system-level store. Can decrypt all HTTPS from your Emulators. (Available on Proxyman 5.16.0 or later) * No need **network\_security\_config.xml** * **✅** Less error-prone and finishes in a few clicks Work with Android Emulator and Android Physical Devices via \`adb\` (Only for Proxyman v5.19.0+) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FYUJTdlDcvMbE7oM9TZek%252FCapture_HTTPS_Android_Emulator_proxyman.jpg%3Falt%3Dmedia%26token%3D3f8587d7-9d7c-4846-bb71-4469ecdf3c47&width=768&dpr=4&quality=100&sign=f118e650&sv=2) Capture and decrypt HTTPS from Android Emulators with Proxyman * Install Proxyman Certificate to the system-level Store. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fc1qcfN9TMK2DnivWh8gl%252FScreenshot%25202025-02-10%2520at%252015.12.07.jpg%3Falt%3Dmedia%26token%3Dd05bde13-305d-449a-8579-22056b93e40d&width=768&dpr=4&quality=100&sign=971f681c&sv=2) Install Proxyman Certificate to the system-level Store. [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-3.-how-to-use-it) 3\. How to use it? -------------------------------------------------------------------------------------------------------------------------------------------- 1. Make sure the adb command is installed. If not, please install it 1. Open your Android app with Android Studio 2. Create a new Emulator in Android Virtual Device Manager. **Make sure it's not the Play Store. Must be a Google Play API** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MJzb_a8r96FpiHq_Yo9%252F-MJzcil8BjBKKzfatnn9%252FScreen_Shot_2020-10-19_at_13_50_31.png%3Falt%3Dmedia%26token%3Df9d6c925-e500-4ec7-93e5-b32e8b248936&width=768&dpr=4&quality=100&sign=8d073f6b&sv=2) Create new Google APIs Android Emulators ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MJzb_a8r96FpiHq_Yo9%252F-MJzcnRTL09sMj7o_p8d%252FScreen_Shot_2020-10-19_at_13_50_48.png%3Falt%3Dmedia%26token%3Dffdc73bb-7f5d-4404-99b1-e6e0e8f41b1f&width=768&dpr=4&quality=100&sign=5d2a6f90&sv=2) Create a new Emulator (Google APIs) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FQdOCpbOsA2DREmFdJUKs%252FScreenshot%25202025-09-19%2520at%252020.01.37.jpg%3Falt%3Dmedia%26token%3D0758e3db-8c09-4f9f-b4fa-d433b1a731e2&width=768&dpr=4&quality=100&sign=f2dc7719&sv=2) 1. Open Proxyman -> Certificate Menu -> Install Certificate on Android -> Emulators -> Click on the Override All Emulators button ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FM3UP3bdIeoflOJDeq8WA%252FScreenshot%25202025-02-10%2520at%252014.54.51.jpg%3Falt%3Dmedia%26token%3D3084ac09-8fe4-4c83-8f5e-01dfc720ece9&width=768&dpr=4&quality=100&sign=43455aad&sv=2) capture all HTTPS from Emulators with 1 click 1. Wait until the Terminal completes ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FJm2lRgrHDLoZA1mb5NKA%252FScreenshot%25202025-02-10%2520at%252015.02.06.png%3Falt%3Dmedia%26token%3Dbc131b8c-97a9-4294-99f4-7131eed81904&width=768&dpr=4&quality=100&sign=5803ea66&sv=2) 1. Relaunch your Android app on Android Studio 2. Proxyman will capture all HTTPS data ✅ If you close Proxyman, make sure to click on the Revert All Changes button. Otherwise, your Android Emulator could not access the Internet. [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.-proxyman-5.15.0-or-earlier) 4\. ⚠️ Proxyman 5.15.0 or earlier ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ * Proxyman 5.15.0 or earlier is only able to install Proxyman Certificate to the User level. * It means: We have to complete the next step: * In your source code: * Add res/xml/network\_security\_config.xml * Add to AndroidManifest.xml [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-5.-advance-run-the-script-manually) 5\. Advance: Run the script manually -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- It's possible to execute the script manually in your Terminal app without granting the Automation Permission in Security & Privacy. ### [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#script-path) **Script path**: * For Proxyman 51.9.0 or later ### [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#prepare-the-certificate) Prepare the certificate 1. Open the Proxyman app 2. Find the current IP in the Main Toolbar 3. Certificate menu -> Export -> Root Certificate as PEM -> Save to Desktop folder ### [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.1-override-http-proxy-and-install-the-certificate-to-system-level-store) 4.1 Override HTTP Proxy and Install the Certificate to system-level Store * Proxyman v5.19.0 or later (NEW) * Proxyman v5.18.0 or earlier ### [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.2-only-override-http-proxy) 4.2 Only Override HTTP Proxy * Proxyman v5.19.0 or later (NEW) * Proxyman v5.18.0 or earlier ### [](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.3-revert-http-proxy) 4.3 Revert HTTP Proxy * Proxyman v5.19.0 or later (NEW) * Proxyman v5.18.0 or earlier [PreviousAndroid Device & Emulator](https://docs.proxyman.com/debug-devices/android-device) [NextSample Android Project](https://docs.proxyman.com/debug-devices/android-device/sample-android-project) Last updated 3 months ago * [1\. What's it?](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-1.-whats-it) * [2\. Benefit?](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-2.-benefit) * [3\. How to use it?](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-3.-how-to-use-it) * [4\. ⚠️ Proxyman 5.15.0 or earlier](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.-proxyman-5.15.0-or-earlier) * [5\. Advance: Run the script manually](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-5.-advance-run-the-script-manually) * [Script path:](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#script-path) * [Prepare the certificate](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#prepare-the-certificate) * [4.1 Override HTTP Proxy and Install the Certificate to system-level Store](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.1-override-http-proxy-and-install-the-certificate-to-system-level-store) * [4.2 Only Override HTTP Proxy](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.2-only-override-http-proxy) * [4.3 Revert HTTP Proxy](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#id-4.3-revert-http-proxy) Copy brew install android-platform-tools Copy Copy Copy /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh Copy Usage: /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh -m [options] Modes: all Set proxy and install certificate proxy Set proxy only revertProxy Revert proxy settings only certificate Install certificate only Required Options based on Mode: -m, --mode : Operation mode (all, proxy, revertProxy, certificate) -i, --ip : IP address (required for all, proxy, certificate) -p, --port : Port number (required for all, proxy, certificate) -c, --cert : Path to Proxyman certificate (required for all, certificate) Optional Options: --include-physical : Include physical devices (default: only emulators) -h, --help : Show this help message Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh --mode all --ip --port --cert Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh all Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh --mode proxy --ip --port Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh proxy Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh --mode revertProxy Copy bash /Applications/Proxyman.app/Contents/Frameworks/ProxymanCore.framework/Resources/install_certificate_android_emulator.sh revertProxy --- # Android Device & Emulator | Proxyman In order to capture and decrypt HTTP/HTTPS request/response from your physical Android Devices or Android Emulators, please navigate to: * **Certificate** **Menu** -> **Install Certificate on Android -> Device** * **Certificate Menu -> Install Certificate on Android -> Emulator** Check out the [Mini Tutorial on how to set up Android devices & emulators](https://docs.proxyman.com/debug-devices/android-device/sample-android-project) For the **Android Emulator**, let's check out the [Automatic Script for Android Emulator](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#1-whats-it) [](https://docs.proxyman.com/debug-devices/android-device#id-1.-android-setup-guide) 1\. Android Setup Guide ----------------------------------------------------------------------------------------------------------------- If you want to capture & decrypt HTTP/HTTPS Traffic from your Physical or Emulator Android Device, please follow all steps in the setup guide: ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FVwAFBJZNuUTKb6GTalBU%252FScreenshot%25202023-08-26%2520at%252009.50.35.png%3Falt%3Dmedia%26token%3Dc968cf5d-37c3-4628-b4ec-1675c5594c43&width=768&dpr=4&quality=100&sign=c92f783&sv=2) Setup Guide for Android Devices 1. Certificate Menu -> Install Certificate on Android -> **Device** 2. Install **Root Proxyman Certificate** on your machine: You can follow the [macOS Guide](https://docs.proxyman.com/debug-devices/macos) . 3. Get your Android Device or Emulator -> Open Setting app -> Wifi -> Select the current Wifi -> Config the HTTP Proxy by following the next tables. Name Value Server IP Your current IP Network Port The current port of Proxyman: 9090 is the default Authentication No Some Samsung devices couldn't access the Internet after setting the HTTP Proxy. Please try to forget your current network and connect again. If **you're using any VPN app**, please make sure to close it, since some VPN apps conflict with HTTP/HTTPS Proxy configs. 3\. Open [http://proxy.man/ssl](http://proxy.man/ssl) or http://cert.proxyman.io from the native web browser on your Android Devices in order to install the Proxyman Certificate. ### [](https://docs.proxyman.com/debug-devices/android-device#android-11-android-12-or-later) **Android 11, Android 12 or later:** * Visit http://proxy.man/ssl from the Google Chrome app to download the certificate. * From Android 11 or later, you have to manually install the certificate in the Setting app. * Settings app -> Security -> Encryption & Credentials -> Install a Certificate -> Selec "CA Certificate" -> Select Proxyman CA Certificate in your storage. ### [](https://docs.proxyman.com/debug-devices/android-device#android-10-and-below) **Android 10 and below:** * As soon as you visit http://proxy.man/ssl, your Android devices will download and install it automatically. Make sure you select the **VPN and App Section**. **On Android 12+**, If you encounter this warning "Can't install the Certificate: This file can't be used as a VPN & app user certificate", please try to select "CA Certificate" instead. Ref: [https://stackoverflow.com/a/70261393/3127477](https://stackoverflow.com/a/70261393/3127477) **http://proxy.man/ssl** is a local website, which serves from the local Proxyman's HTTP server. If you can't open it, please forget the wifi, re-connect, and make sure the Proxyman app is opening. 4\. On Android 11 and Android 12. Let's verify by opening the Trusted Credentials -> User Tab. Make sure you can see the **Proxyman CA** Certificate like the below screenshot. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MjXnFtH_cj7gTTJ3jbh%252F-MjXnM9qmJjcjN218uLz%252FScreen_Shot_2020-09-29_at_9_00_46_PM.png%3Falt%3Dmedia%26token%3D0b90520f-2eb7-4845-ad58-78f0560dc553&width=768&dpr=4&quality=100&sign=3a01eb67&sv=2) Verify that Proxyman CA Certificate is installed properly 5\. Open your app Source Code: Adding the two following `xml` files. * Add **res/xml/network\_security\_config.xml** * Add to **AndroidManifest.xml** Find more information at [Network Security Configuration](https://developer.android.com/training/articles/security-config.html) Make sure that you **remove those configs in the Release build**. If not, your HTTP/HTTPS requests can be intercepted and leak your sensitive data in the Production build. 6\. If it's Android Emulator, please restart the emulator 7\. Done ✅ [](https://docs.proxyman.com/debug-devices/android-device#id-2.-troubleshooting) **2\. Troubleshooting** ------------------------------------------------------------------------------------------------------------- Please check out this [troubleshooting section.](https://docs.proxyman.com/debug-devices/android-device/sample-android-project#4-troubleshooting) [](https://docs.proxyman.com/debug-devices/android-device#id-3.-sample-android-project) 3\. Sample Android Project ----------------------------------------------------------------------------------------------------------------------- If you've struggled to config XML settings, let's check out this simple project that we've configured: Github Link: [https://github.com/ProxymanApp/OKHTTP-Android-Sample](https://github.com/ProxymanApp/OKHTTP-Android-Sample) [Sample Android Project](https://docs.proxyman.com/debug-devices/android-device/sample-android-project) [](https://docs.proxyman.com/debug-devices/android-device#id-4.-react-native-android-app) 4\. React Native Android app --------------------------------------------------------------------------------------------------------------------------- If you're using React Native for the Android app, please check out the [React Native Page](https://docs.proxyman.com/debug-devices/react-native) . [](https://docs.proxyman.com/debug-devices/android-device#id-5.-intercept-traffic-from-embedding-webview) 5\. Intercept Traffic from embedding WebView ----------------------------------------------------------------------------------------------------------------------------------------------------------- Some Android apps have embedded WebView that requires extra steps in order to intercept HTTPS traffic. 1. Make sure you're able to see other HTTPS traffic from your Android app. It means that you've set up the certificate properly 2. Inject the following code to your WebView 3\. Open a new Chrome tab on your computer and navigate to `chrome://inspect` 4\. When you open the WebView, the view will appear in your Chrome tab, then you can simply click `inspect` to start using the remote debugger. [](https://docs.proxyman.com/debug-devices/android-device#id-6.-ssl-proxying-using-root-device) 6\. SSL Proxying using Root Device --------------------------------------------------------------------------------------------------------------------------------------- > Credit for [Shirshak](https://github.com/shirshak55) If your Android version is below 7 you don't need to do this step. Google added extra security that doesn't allow man-in-middle-app to attack after Android 6. i.e unable to do MITM attack on android apps. We don't bear any responsibility for problems caused by rooting phones. So please follow the guide at your own risk. 1. Root your phone with `magisk` framework. 2. Install the Root file browser so you can copy and paste files in a restricted system folder. 3. Type the following script in the command line 4. If you go to `~/.proxyman` folder you must notice a file name starting with numbers with extension 5. Copy that file to your Android. 6. Using root file browser transfer that file to /system/etc/security/cacerts/ 7. Enjoy proxying. 1. When using Android phones, set the gateway to any wrong IP just so you can be sure all your traffic goes from proxy man proxy only. 2. We can use the macOS sharing feature to create a mobile hotspot. And from an Android phone, you can use Proxyman proxy easily. It is much better because sometimes the router can block requests between mobile and macOS. [](https://docs.proxyman.com/debug-devices/android-device#additional-resources) Additional Resources --------------------------------------------------------------------------------------------------------- * Mitmproxy has a useful tutorial on how to install Proxyman Certificate on your Android Emulator: [https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/](https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/) [PrevioustvOS & watchOS](https://docs.proxyman.com/debug-devices/tvos-and-watchos) [NextAutomatic Script for Android Emulator](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) Last updated 10 months ago * [1\. Android Setup Guide](https://docs.proxyman.com/debug-devices/android-device#id-1.-android-setup-guide) * [Android 11, Android 12 or later:](https://docs.proxyman.com/debug-devices/android-device#android-11-android-12-or-later) * [Android 10 and below:](https://docs.proxyman.com/debug-devices/android-device#android-10-and-below) * [2\. Troubleshooting](https://docs.proxyman.com/debug-devices/android-device#id-2.-troubleshooting) * [3\. Sample Android Project](https://docs.proxyman.com/debug-devices/android-device#id-3.-sample-android-project) * [4\. React Native Android app](https://docs.proxyman.com/debug-devices/android-device#id-4.-react-native-android-app) * [5\. Intercept Traffic from embedding WebView](https://docs.proxyman.com/debug-devices/android-device#id-5.-intercept-traffic-from-embedding-webview) * [6\. SSL Proxying using Root Device](https://docs.proxyman.com/debug-devices/android-device#id-6.-ssl-proxying-using-root-device) * [Additional Resources](https://docs.proxyman.com/debug-devices/android-device#additional-resources) network\_security\_config.xml Copy manifest.xml Copy ... Copy if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { WebView.setWebContentsDebuggingEnabled(true); } // The following two lines help with disabling asset caching webView.getSettings().setAppCacheEnabled(false); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); Copy $ cd ~/.proxyman // We copy certificate to another file name just so we may need it later $ cp proxyman-ca.pem temp.pem $ hash=$(openssl x509 -inform PEM -subject_hash_old -in temp.pem | head -1) $ mv temp.pem "$hash.0" --- # Python | Proxyman [](https://docs.proxyman.com/debug-devices/python#id-1.-new-automatic-solution-v4.7.0-or-later) 1\. New Automatic Solution (v4.7.0 or later) ✅ --------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from Python with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * Support many Python libraries: request, http.client, urllib3, httpx and aiohttp ### [](https://docs.proxyman.com/debug-devices/python#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" 3. Accept the Apple Script permission prompt if needed 4. The New Terminal app is launched -> You can start your Python Backend Server, or Run scripts => Proxyman automatically captures all traffic. 5. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fqnvkq53VSSsS3XGDAjtn%252FCleanShot%25202023-04-22%2520at%252015.18.19%25402x.jpg%3Falt%3Dmedia%26token%3D352a3df3-d6f6-4c48-ae19-70f46abe7778&width=768&dpr=4&quality=100&sign=6a8b053b&sv=2) Capture NodeJS Traffic with Proxyman Please check out the Automatic Setup page: [Automatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) [](https://docs.proxyman.com/debug-devices/python#undefined) ---------------------------------------------------------------- [](https://docs.proxyman.com/debug-devices/python#id-2.-old-solution-not-recommended) 2\. Old Solution (Not recommended) ❌ ------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/python#id-1.-script-approach) 1\. Script Approach 1. Use [the following script](https://github.com/ProxymanApp/Proxyman/issues/1220#issuecomment-1249090359) to automatically install/remove the certificate to Python. 2. Save the script to ~/desktop file with the name is `script.py` * Add Certificate: * Remove Certificate For macOS 12.2 or later, make sure you use `python3` Credit to [@novitae](https://github.com/novitae) ### [](https://docs.proxyman.com/debug-devices/python#id-2.-manual-approach) 2\. Manual Approach ### [](https://docs.proxyman.com/debug-devices/python#install-proxyman-on-the-python-environment) \- Install Proxyman on the Python environment By default, Python on macOS doesn't trust Proxyman self-signed certificates. As a result, you might encounter SSL Error if you try to intercept HTTPS traffic. If you would like to intercept HTTPS Traffic from your Python script, you have to explicitly **tell Python to use the Proxyman Root Certificate** at `~/.proxyman/proxyman-ca.pem` Please follow the guideline: 1. Install Proxyman Certificate on Mac (If you've done it, please skip it. If not, please check out [MacOS Guideline](https://docs.proxyman.com/debug-devices/macos#install-certificates-on-macos) ). 2. Run the following CLI on your Terminal app 3\. Done. ### [](https://docs.proxyman.com/debug-devices/python#revert-the-change) \- Revert the change If you don't use Proxyman, please revert the change by commenting out: in ~/.bash\_profile [](https://docs.proxyman.com/debug-devices/python#id-3.-troubleshooting) 3\. Troubleshooting ------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/debug-devices/python#id-3.1-proxyman-could-not-capture-http-traffic-from-my-python-code) 3.1 Proxyman could not capture HTTP traffic from my Python code. **Solution**: Please use the [Automatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) . ### [](https://docs.proxyman.com/debug-devices/python#reference) Reference * [https://github.com/ProxymanApp/Proxyman/issues/948#issuecomment-890520435](https://github.com/ProxymanApp/Proxyman/issues/948#issuecomment-890520435) * [https://github.com/ProxymanApp/Proxyman/issues/1220](https://github.com/ProxymanApp/Proxyman/issues/1220) [PreviousJava VMs](https://docs.proxyman.com/debug-devices/java) [NextRuby](https://docs.proxyman.com/debug-devices/ruby) Last updated 2 years ago * [1\. New Automatic Solution (v4.7.0 or later) ✅](https://docs.proxyman.com/debug-devices/python#id-1.-new-automatic-solution-v4.7.0-or-later) * [How to use:](https://docs.proxyman.com/debug-devices/python#how-to-use) * [](https://docs.proxyman.com/debug-devices/python#undefined) * [2\. Old Solution (Not recommended) ❌](https://docs.proxyman.com/debug-devices/python#id-2.-old-solution-not-recommended) * [1\. Script Approach](https://docs.proxyman.com/debug-devices/python#id-1.-script-approach) * [2\. Manual Approach](https://docs.proxyman.com/debug-devices/python#id-2.-manual-approach) * [\- Install Proxyman on the Python environment](https://docs.proxyman.com/debug-devices/python#install-proxyman-on-the-python-environment) * [\- Revert the change](https://docs.proxyman.com/debug-devices/python#revert-the-change) * [3\. Troubleshooting](https://docs.proxyman.com/debug-devices/python#id-3.-troubleshooting) * [Reference](https://docs.proxyman.com/debug-devices/python#reference) Copy $ python3 script.py add Copy $ python3 script.py remove Copy $ export SSL_CERT_FILE=~/.proxyman/proxyman-ca.pem $ export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem $ echo "export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem" >> ~/.bash_profile ; source ~/.bash_profile Copy # export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem --- # Ruby | Proxyman [](https://docs.proxyman.com/debug-devices/ruby#id-1.-new-automatic-solution-v4.7.0-or-later) 1\. New Automatic Solution (v4.7.0 or later) ✅ ------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from Ruby with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * Support many Ruby libraries: http, net/http, net/https, httparty, and faraday. ### [](https://docs.proxyman.com/debug-devices/ruby#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" 3. Accept the Apple Script permission prompt if needed 4. The New Terminal app is launched -> You can start your Ruby Backend Server, or Run scripts => Proxyman automatically captures all traffic. 5. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fqnvkq53VSSsS3XGDAjtn%252FCleanShot%25202023-04-22%2520at%252015.18.19%25402x.jpg%3Falt%3Dmedia%26token%3D352a3df3-d6f6-4c48-ae19-70f46abe7778&width=768&dpr=4&quality=100&sign=6a8b053b&sv=2) Capture Traffic from Ruby [](https://docs.proxyman.com/debug-devices/ruby#id-2.-old-solution-not-recommended) 2\. Old Solution (Not Recommended) --------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/ruby#id-1.-set-http-proxy-to-ruby) 1\. Set HTTP Proxy to Ruby Net::HTTP will automatically create a proxy from the `http_proxy` environment variable if it is present. So you can use: and Net::HTTP will use it for all requests by default. Ref: [https://stackoverflow.com/questions/15792999/how-to-set-a-proxy-in-rubys-net-http](https://stackoverflow.com/questions/15792999/how-to-set-a-proxy-in-rubys-net-http) ### [](https://docs.proxyman.com/debug-devices/ruby#id-2.-install-proxyman-certificate-on-ruby) 2\. Install Proxyman Certificate on Ruby By default, **Ruby** on macOS might not trust Proxyman's self-signed certificate. As a result, you might encounter SSL Error if you try to intercept HTTPS traffic. You can explicitly tell Ruby to use Proxyman Certificate by using `SSL_CERT_FILE` env. [PreviousPython](https://docs.proxyman.com/debug-devices/python) [NextNodeJS](https://docs.proxyman.com/debug-devices/nodejs) Last updated 1 year ago * [1\. New Automatic Solution (v4.7.0 or later) ✅](https://docs.proxyman.com/debug-devices/ruby#id-1.-new-automatic-solution-v4.7.0-or-later) * [How to use:](https://docs.proxyman.com/debug-devices/ruby#how-to-use) * [2\. Old Solution (Not Recommended)](https://docs.proxyman.com/debug-devices/ruby#id-2.-old-solution-not-recommended) * [1\. Set HTTP Proxy to Ruby](https://docs.proxyman.com/debug-devices/ruby#id-1.-set-http-proxy-to-ruby) * [2\. Install Proxyman Certificate on Ruby](https://docs.proxyman.com/debug-devices/ruby#id-2.-install-proxyman-certificate-on-ruby) Copy ENV['http_proxy'] = 'http://127.0.0.1:9090' # your http://address:port here Copy $ env SSL_CERT_FILE=~/.proxyman/proxyman-ca.pem ruby my_script.rb --- # NodeJS | Proxyman [](https://docs.proxyman.com/debug-devices/nodejs#id-1.-new-automatic-solution-v4.7.0-or-later) 1\. New Automatic Solution (v4.7.0 or later) ✅ --------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from NodeJS with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * Support many NodeJS libraries: axios, got, superagent, fetch, and node-fetch ### [](https://docs.proxyman.com/debug-devices/nodejs#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" 3. Accept the Apple Script permission prompt if needed 4. The New Terminal app is launched -> You can start your NodeJS Backend Server, or Run scripts => Proxyman automatically captures all traffic. 5. For example: Copy $ npm start Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fqnvkq53VSSsS3XGDAjtn%252FCleanShot%25202023-04-22%2520at%252015.18.19%25402x.jpg%3Falt%3Dmedia%26token%3D352a3df3-d6f6-4c48-ae19-70f46abe7778&width=768&dpr=4&quality=100&sign=6a8b053b&sv=2) Capture NodeJS Traffic Please check out the Automatic Setup page: [Automatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) [](https://docs.proxyman.com/debug-devices/nodejs#id-2.-old-solution-not-recommended) 2\. Old Solution (Not recommended) ❌ ------------------------------------------------------------------------------------------------------------------------------- There are common problems when using NodeJS + Proxyman: ### [](https://docs.proxyman.com/debug-devices/nodejs#id-1.-proxyman-could-not-capture-http-localhost-3000-requests-to-my-nodejs-server) 1\. Proxyman could not capture http://localhost:3000 requests to my NodeJS Server If you're using NodeJS to serve a localhost website (e.g http://localhost:3000), Proxyman might not work. For example: Use ExpressJS to serve an API Server at http://localhost:3000 ### [](https://docs.proxyman.com/debug-devices/nodejs#solution) Solution: Please check out this solution. ### [](https://docs.proxyman.com/debug-devices/nodejs#id-2.-proxyman-could-not-capture-http-requests-which-are-called-from-my-nodejs-local-server) 2\. Proxyman could not capture HTTP requests, which are called from my NodeJS local server. * I use [fetch](https://www.npmjs.com/package/node-fetch) or [axios](https://github.com/axios/axios) doesn't show on the Proxyman app * Get SSL Error from HTTPS Requests ### [](https://docs.proxyman.com/debug-devices/nodejs#solution-1) Solution By default, all HTTP/HTTPS requests which are called from your NodeJS library don't go through HTTP Proxy Server. Thus, Proxyman could not capture the traffic. ### [](https://docs.proxyman.com/debug-devices/nodejs#id-1.-node-fetch) 1\. node-fetch 1. Install [global-agent](https://github.com/gajus/global-agent) package 2\. At the top of your NodeJS code, add the following code: 3\. Add this env to your current bash. Make sure Proxyman is listening at port 9090 4\. Done ✅ Run your NodeJS Script again and the HTTP/HTTPS request would appear on the Proxyman app. #### [](https://docs.proxyman.com/debug-devices/nodejs#sample-code) Sample code ### [](https://docs.proxyman.com/debug-devices/nodejs#id-2.-axios) 2\. Axios According to Axios Documentation, we can simply provide the HTTP\_PROXY and HTTPS\_PROXY environment. 1. Click on the Proxyman Status Menu 2. Copy Shell Command ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FUoaCKhejWLt61cUWa7vC%252FScreenshot%25202023-04-15%2520at%252010.39.02.jpg%3Falt%3Dmedia%26token%3Da6eb864f-4d01-4e96-a957-4bc21ab9f061&width=768&dpr=4&quality=100&sign=a80f7bf&sv=2) 1. Open the Terminal and run the paste content: For example export https\_proxy=http://192.168.1.103:9090 http\_proxy=http://192.168.1.103:9090 2. On the same Terminal -> Start your NodeJS Server with axios. 3. Axios will proxy the traffic to Proxyman. 4. Done ✅ ### [](https://docs.proxyman.com/debug-devices/nodejs#id-3.-i-use-different-nodejs-library) 3\. I use different NodeJS Library If you're not using fetch or axios, the configuration might be different. Please check out your lib Document to see how to set the proxy and trust the Proxyman certificate. * Discussion at [https://github.com/ProxymanApp/Proxyman/issues/236](https://github.com/ProxymanApp/Proxyman/issues/236) [PreviousRuby](https://docs.proxyman.com/debug-devices/ruby) [NextRust](https://docs.proxyman.com/debug-devices/rust) Last updated 1 year ago * [1\. New Automatic Solution (v4.7.0 or later) ✅](https://docs.proxyman.com/debug-devices/nodejs#id-1.-new-automatic-solution-v4.7.0-or-later) * [How to use:](https://docs.proxyman.com/debug-devices/nodejs#how-to-use) * [2\. Old Solution (Not recommended) ❌](https://docs.proxyman.com/debug-devices/nodejs#id-2.-old-solution-not-recommended) * [1\. Proxyman could not capture http://localhost:3000 requests to my NodeJS Server](https://docs.proxyman.com/debug-devices/nodejs#id-1.-proxyman-could-not-capture-http-localhost-3000-requests-to-my-nodejs-server) * [Solution:](https://docs.proxyman.com/debug-devices/nodejs#solution) * [2\. Proxyman could not capture HTTP requests, which are called from my NodeJS local server.](https://docs.proxyman.com/debug-devices/nodejs#id-2.-proxyman-could-not-capture-http-requests-which-are-called-from-my-nodejs-local-server) * [Solution](https://docs.proxyman.com/debug-devices/nodejs#solution-1) * [1\. node-fetch](https://docs.proxyman.com/debug-devices/nodejs#id-1.-node-fetch) * [2\. Axios](https://docs.proxyman.com/debug-devices/nodejs#id-2.-axios) * [3\. I use different NodeJS Library](https://docs.proxyman.com/debug-devices/nodejs#id-3.-i-use-different-nodejs-library) Copy npm install global-agent Copy import { bootstrap } from 'global-agent'; bootstrap(); process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; Copy export GLOBAL_AGENT_HTTP_PROXY=http://127.0.0.1:9090 Copy import fetch from 'node-fetch'; // Setup global-agent import { bootstrap } from 'global-agent'; bootstrap(); process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; // fetch the data const response = await fetch('https://httpbin.org/get?id=123'); const data = await response.json(); // Done console.log(data); --- # Rust | Proxyman [](https://docs.proxyman.com/debug-devices/rust#id-1.-problem) 1\. Problem ------------------------------------------------------------------------------- Proxyman can't automatically capture HTTP/HTTPS traffic which is called from `reqwest` in Rust because of: * `reqwest` doesn't respect the system HTTP Proxy -> No traffic goes through Proxyman * `reqwest` doesn't trust any self-signed Proxyman Certificate -> Get SSL Error [](https://docs.proxyman.com/debug-devices/rust#id-2.-solution) 2\. Solution --------------------------------------------------------------------------------- * Manually set the Proxy to Proxyman at `http://localhost:9090` * Disable SSL Verification Copy use anyhow::Result; use reqwest::Url; #[tokio::main] async fn main() -> Result<()> { let proxy_url = Url::parse("http://localhost:9090")?; let client = reqwest::Client::builder() .danger_accept_invalid_certs(true) // trust self-signed certificate .proxy(reqwest::Proxy::https(proxy_url)?) // Proxy to Proxyman .build()?; let response = client.get("https://httpbin.org/get").send().await?; if response.status().is_success() { let body = response.text().await?; println!("Response Text: {}", body); } else { println!("Request failed with status: {}", response.status()); } Ok(()) } [PreviousNodeJS](https://docs.proxyman.com/debug-devices/nodejs) [NextGolang](https://docs.proxyman.com/debug-devices/golang) Last updated 1 year ago This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://proxyman.com/privacy) . AcceptReject --- # macOS | Proxyman [](https://docs.proxyman.com/debug-devices/macos#install-and-trust-proxyman-certificates-on-your-mac) Install & Trust Proxyman Certificates on your Mac ------------------------------------------------------------------------------------------------------------------------------------------------------------ In order to intercept encrypted HTTPS messages (Request or Response), you have to install **Proxyman CA Certificate** on your current machine. This step is mandatory for iOS, Android devices, iOS simulators, Java VMs, and Firefox too. The Proxyman Certificate is a self-signed certificate that is generated on your machine. Proxyman never stores or transmits any personal data to Proxyman's server or 3rd-party. Please check out the [Privacy Statement](https://proxyman.io/privacy) to understand what Proxyman obtains or not. If you'd like to manually generate a Certificate on your machine, then add it to Proxyman. Please check out the [Custom Certificate Doc](https://docs.proxyman.com/advanced-features/custom-certificates#6-how-to-generate-self-signed-certificates-for-custom-root-certificate-that-comply-with-new-apples-security-requirements) Proxyman's certificate is stored locally at **~/Library/Application\\ Support/com.proxyman.NSProxy/app-data/** [](https://docs.proxyman.com/debug-devices/macos#id-1.-automatic-mode-recommended) 1\. Automatic mode (recommended) ------------------------------------------------------------------------------------------------------------------------ Proxyman could **automatically** install & trust the Certificate in Keychain by following the below steps: 1. Open the **Certificate** menu 2. Install a Certificate on this Mac... 3. On the Automatic Mode -> Enter your Mac's password (Root Privileges) 4. Verify the status: ✅ `Installed & Trusted` in the button (If not, try to use the Manual Tab, or contact us for further support) 5. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FW2KI2yQ2hN3nuBF2wQpw%252Fproxyman_install_ca_certificate.jpg%3Falt%3Dmedia%26token%3D9a95361a-8355-40ec-b5dd-82ddc579c212&width=768&dpr=4&quality=100&sign=c9397bef&sv=2) Install & trust Proxyman Certificacte **Automation mode** requires **Root Privileges** to perform the installation script. If you're not sure, please consider using Manual mode. ### [](https://docs.proxyman.com/debug-devices/macos#how-does-it-work) How does it work? In automatic mode, Proxyman will automatically perform two steps: 1. Generate a local Proxyman Certificate at `~/Library/Application\ Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem` 2. Install & Trust the certificate to System Keychain Access. It requires Root Privileges to execute the following CLI: [](https://docs.proxyman.com/debug-devices/macos#id-2.-manual-mode-advance) 2\. Manual Mode (Advance) ---------------------------------------------------------------------------------------------------------- Proxyman also offers more freedom for super-users who need to install the certificate on their behalf. 1. Open the **Certificate** menu 2. Install a Certificate on this Mac... -> Select the Manual Tab 3. Click on the **Generate & Add** button (Proxyman will locally generate the certificate and add it to Keychain, but not Trust it automatically, no Password required) 4. In some cases, System Keychains will ask to select what keychain should be installed -> Select **System Keychain** 5. Open the Keychain Access app on your Mac -> Search "Proxyman CA" -> Open -> Select "Always Trust" -> Quit Keychain and Save If you've done it correctly, Proxyman will display " ✅ Installed and Trusted" status. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FOUNFoBZOTVerYtxOaK1v%252Fproxyman_install_manual.jpeg%3Falt%3Dmedia%26token%3D4c6faf36-f707-49b7-b9e6-d68855481315&width=768&dpr=4&quality=100&sign=ee779a3e&sv=2) Manually install Proxyman Certifiacte If you'd like to use your own custom Root Certificate, please check out the [Custom Certificate Doc](https://docs.proxyman.com/advanced-features/custom-certificates#6-how-to-generate-self-signed-certificates-for-custom-root-certificate-that-comply-with-new-apples-security-requirements) Suppose you are not sure how to trust the certificate on the Keychain Access app. You can open the Terminal app and execute the command: Make sure that you **Delete the Proxyman Certificate in Keychain app** if you're not using Proxyman anymore. If not, anyone who has the Proxyman Certificate can intercept your HTTP/HTTPS requests from your macOS machine. [](https://docs.proxyman.com/debug-devices/macos#id-3.-uninstall-proxyman-certificate) 3\. Uninstall Proxyman Certificate ------------------------------------------------------------------------------------------------------------------------------ 1. Open Certificate Menu 2. Reset all Certificates 3. Enter your Mac password and done [PreviousBreakpoint for iOS Tutorial](https://docs.proxyman.com/proxyman-ios/tutorial-for-ios/breakpoint-for-ios-tutorial) [NextiOS Device](https://docs.proxyman.com/debug-devices/ios-device) Last updated 9 months ago * [Install & Trust Proxyman Certificates on your Mac](https://docs.proxyman.com/debug-devices/macos#install-and-trust-proxyman-certificates-on-your-mac) * [1\. Automatic mode (recommended)](https://docs.proxyman.com/debug-devices/macos#id-1.-automatic-mode-recommended) * [How does it work?](https://docs.proxyman.com/debug-devices/macos#how-does-it-work) * [2\. Manual Mode (Advance)](https://docs.proxyman.com/debug-devices/macos#id-2.-manual-mode-advance) * [3\. Uninstall Proxyman Certificate](https://docs.proxyman.com/debug-devices/macos#id-3.-uninstall-proxyman-certificate) Copy sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Library/Application\ Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem Copy sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Library/Application\ Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem --- # iOS Device | Proxyman To capture HTTP/HTTPS messages in iOS devices (iPhone, iPad), please navigate to: * **Certificate** **Menu** -> **Install Certificate on iOS -> Physical Devices...** This setup guide works with all real physical devices, including iPhone, iPad, Apple Watch, Apple TV, and Vision PRO. [](https://docs.proxyman.com/debug-devices/ios-device#ios-setup-guide) iOS Setup Guide ------------------------------------------------------------------------------------------- ![Install certificate to iPhone Setup Guide](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FrabpvrtnJJK5GGEEtiqu%252FScreenshot%25202025-10-28%2520at%252021.29.31.png%3Falt%3Dmedia%26token%3D6205aab8-0de0-43fa-905f-cdb6272a9355&width=768&dpr=4&quality=100&sign=5fb8352&sv=2) Let's follow the guidelines: 1. Install **Root Proxyman Certificate** on your machine: You can follow the [macOS Guide](https://docs.proxyman.com/debug-devices/macos) . 2. Get your iOS Device -> Open Settings app -> Wifi -> Select the current Wifi -> Configure the HTTP Proxy by following the next tables. Name Value Server IP Your current IP Network Port The current port of Proxyman: 9090 is the default Authentication No If you're using any **VPN apps** on macOS or iOS devices, please ensure that you close all VPN apps, as they conflict with the HTTPS Proxy configuration. 3\. Open [http://proxy.man/ssl](http://proxy.man/ssl) or [http://cert.proxyman.io](http://cert.proxyman.io/) in **Safari Web Browser with Private Tab** from your iOS device to install the Proxyman Certificate. **http://proxy.man/ssl** or **http://cert.proxyman.io** is a local website, which is served from the local Proxyman's HTTP server. If you can't open it, please forget the wifi, reconnect, and make sure the Proxyman app is opening. If you can't access it. Please open the support ticket at [Github's repo](https://github.com/ProxymanApp/Proxyman) . 4\. From iOS 10.3, we have to explicitly install & trust the Proxyman CA in the Settings app #### [](https://docs.proxyman.com/debug-devices/ios-device#install-proxyman-ca) **Install Proxyman CA** * **iOS ≥ 12.2**: On your iPhone -> Open Settings app > Profiles Downloaded > Select Proxyman CA > Install #### [](https://docs.proxyman.com/debug-devices/ios-device#trust-proxyman-ca) Trust Proxyman CA * Setting app > General > About > Certificate Trust Settings > Switch ON on Proxyman CA. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LmSbviLZSr1v9NT_Rcz%252F-LmSeU4alrXa9cAA3od-%252Finstall_and_trust_proxyman_certificate.png%3Falt%3Dmedia%26token%3Df4278b1a-79b7-40cc-8eea-f07def334adf&width=768&dpr=4&quality=100&sign=934befa2&sv=2) Install and Trust Proxyman Certificate Please make sure we **install** and **trust** the Proxyman CA on your iOS Device. If you have any problem, shoot us an email at **[\[email protected\]](https://docs.proxyman.com/cdn-cgi/l/email-protection) ** or bump it to [**Github**](https://github.com/ProxymanApp/Proxyman) If you cannot see any traffic from your iOS Devices, please check out this [troubleshooting](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy) Make sure that you **delete the certificate on your iPhone** when you're not debugging by Proxyman. If not, your HTTP/HTTPS requests can be intercepted and leak your sensitive data. [](https://docs.proxyman.com/debug-devices/ios-device#tutorial) Tutorial ----------------------------------------------------------------------------- See detailed steps on how to [debug an application on iOS device](https://proxyman.io/blog/2019/06/How-I-use-Proxyman-to-see-HTTP-requests-responses-on-my-iPhone.html) with Proxyman. ### [](https://docs.proxyman.com/debug-devices/ios-device#tired-of-manual-config) Tired of manual config? We understand that manually overriding the HTTP Proxy and installing and trusting Proxyman Certificates is painful. Let's check out Atlantis, which is a native iOS framework that helps you do it automatically. [Atlantis for iOS](https://docs.proxyman.com/atlantis/atlantis-for-ios) [](https://docs.proxyman.com/debug-devices/ios-device#flutter-app) Flutter app? ------------------------------------------------------------------------------------ You might not be able to see the Network Traffic on Proxyman if your app is a Flutter app. Flutter does not use a system-level proxy, so requests to Proxyman will not be displayed. To do this, you must manually configure your HTTP client used in the code to work with a proxy. Please follow the solution "Getting Charles to work with Flutter" in [https://flutterigniter.com/debugging-network-requests/](https://flutterigniter.com/debugging-network-requests/) To find out your local IP, please go to Certificate Menu -> Install Certificate on iOS -> Physical device and get the Server IP and Port [PreviousmacOS](https://docs.proxyman.com/debug-devices/macos) [NextiOS Simulator](https://docs.proxyman.com/debug-devices/ios-simulator) Last updated 2 months ago * [iOS Setup Guide](https://docs.proxyman.com/debug-devices/ios-device#ios-setup-guide) * [Tutorial](https://docs.proxyman.com/debug-devices/ios-device#tutorial) * [Tired of manual config?](https://docs.proxyman.com/debug-devices/ios-device#tired-of-manual-config) * [Flutter app?](https://docs.proxyman.com/debug-devices/ios-device#flutter-app) --- # Golang | Proxyman [](https://docs.proxyman.com/debug-devices/golang#id-1.-new-automatic-solution-macos-v5.17.0-or-later) 1\. New Automatic Solution (macOS v5.17.0 or later) ✅ ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman macOS v5.17.0 or later can capture HTTP/HTTPS traffic from Golang with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * ✅ Support many Go Network Libraries: net/http, fasthttp, resty, gorequest, req, grequests ### [](https://docs.proxyman.com/debug-devices/golang#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Select your favorite Terminal -> Click on the "Open New Terminal" button 3. Accept the Apple Script permission prompt if needed ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F4CIEVKhzglYi5T3YHVLT%252FScreenshot%25202025-03-18%2520at%252010.54.37.jpg%3Falt%3Dmedia%26token%3D295c1e9f-10ce-4766-ab65-e08d24f79858&width=768&dpr=4&quality=100&sign=609f0abc&sv=2) Open Pre-configured Terminal to intercept GO network https 1. The New Terminal app is launched -> You can start your Golang Backend Server, or Run scripts => Proxyman automatically captures all traffic. 2. For example: 1. Proxyman captures all internal HTTP/HTTPS from go, including net/http ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FtsBq8JdHXuQU1vL31PYZ%252FCleanShot%25202025-03-18%2520at%252009.56.44%25402x.jpg%3Falt%3Dmedia%26token%3Ddf25804a-c39b-4c87-9422-b52ab338b7a3&width=768&dpr=4&quality=100&sign=ed38baa2&sv=2) capture and intercept HTTPS traffic from net/http go * Go Example Code: [https://github.com/ProxymanApp/golang-example](https://github.com/ProxymanApp/golang-example) [](https://docs.proxyman.com/debug-devices/golang#id-2.-old-solution-not-recommended) 2\. Old Solution (Not recommended ❌) ------------------------------------------------------------------------------------------------------------------------------- * Proxyman can't capture any HTTP/HTTPS traffic from the Golang Server. * The reason is that some network libraries (such as net/http) won't respect the System HTTP Proxy, so no traffic goes through the Proxyman app. ### [](https://docs.proxyman.com/debug-devices/golang#id-2.1-solution) 2.1 Solution #### [](https://docs.proxyman.com/debug-devices/golang#net-http) net/http 1. Config Proxy to Proxyman, by default, it's at IP = localhost, port 9090 2. Tell the Transport to trust Proxyman self-signed certificate. Otherwise, you will get an SSL Error because net/http rejects. [PreviousRust](https://docs.proxyman.com/debug-devices/rust) [NextReact Native](https://docs.proxyman.com/debug-devices/react-native) Last updated 9 months ago * [1\. New Automatic Solution (macOS v5.17.0 or later) ✅](https://docs.proxyman.com/debug-devices/golang#id-1.-new-automatic-solution-macos-v5.17.0-or-later) * [How to use:](https://docs.proxyman.com/debug-devices/golang#how-to-use) * [2\. Old Solution (Not recommended ❌)](https://docs.proxyman.com/debug-devices/golang#id-2.-old-solution-not-recommended) * [2.1 Solution](https://docs.proxyman.com/debug-devices/golang#id-2.1-solution) Copy $ go run main.go Copy package main import ( "crypto/tls" "fmt" "io/ioutil" "log" "net/http" "net/url" ) func main() { // Create a new HTTP client client := &http.Client{} // Configure the proxy proxyURL, err := url.Parse("http://localhost:9090") if err != nil { log.Fatal("Error parsing proxy URL:", err) } // Configure transport with proxy and TLS settings transport := &http.Transport{ Proxy: http.ProxyURL(proxyURL), TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, // This allows self-signed certificates }, } // Set the transport for the client client.Transport = transport // Make a request resp, err := client.Get("https://example.com") if err != nil { log.Fatal("Error making request:", err) } defer resp.Body.Close() // Read the response body body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal("Error reading response:", err) } // Print the response fmt.Printf("Status: %s\n", resp.Status) fmt.Printf("Body: %s\n", string(body)) } --- # React Native | Proxyman [](https://docs.proxyman.com/debug-devices/react-native#id-1.-react-native-ios) 1\. React Native - iOS ----------------------------------------------------------------------------------------------------------- * If you're using React Native for the iOS app, you can simply follow the iOS Guidelines. There is no difference from the iOS native app. * Works with Expo or Metro bundler [iOS Device](https://docs.proxyman.com/debug-devices/ios-device) [iOS Simulator](https://docs.proxyman.com/debug-devices/ios-simulator) [](https://docs.proxyman.com/debug-devices/react-native#id-2.-react-native-android) 2\. React Native - Android ------------------------------------------------------------------------------------------------------------------- Basically, To capture HTTP/HTTPS traffic from React Native for Android apps, it's similar to the native Android app. Please follow the Android Setup Guide: * [Android Physical Device](https://docs.proxyman.com/debug-devices/android-device) * [Android Emulator](https://docs.proxyman.com/debug-devices/react-native#android-emulator) Make sure you've followed all steps in the Guideline, especially the **5th step**, where you add the **res/xml/network\_security\_config.xml** and **AndroidManifest.xml** Otherwise, Proxyman could not decrypt the SSL connection. [](https://docs.proxyman.com/debug-devices/react-native#id-3.-troubleshooting-android) 3\. Troubleshooting - Android ------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/react-native#id-3.1-metro-bundle-errors) 3.1 Metro bundle errors After setting the HTTP Proxy from your Android to Proxyman, you might encounter the following error because Metro Bundle could not connect to its local server. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FrXiVvzAmYZRPxfM7h5L4%252FScreenshot%25202023-04-06%2520at%252007.58.01.png%3Falt%3Dmedia%26token%3Dafad193c-bfca-4a0f-b240-93e0bcd587fb&width=768&dpr=4&quality=100&sign=50fe01a9&sv=2) Metro bundle errors To fix it: #### [](https://docs.proxyman.com/debug-devices/react-native#android-emulator) Android Emulator 1. Open Proxyman -> Certificate menu -> Install for Android -> Emulator -> Click on the "Revert the Proxy" 2. Open Android Emulator -> Setting App -> Network -> Wifi -> Find a way to change the proxy 3. Change the HTTP Proxy manually by using the **Proxyman IP & Port**. If you don't know what the IP & Port is, open the Certificate menu -> Install for Android -> Physical Device -> In the 2nd section. Find the Server IP & Port. 4. Before saving, enter the `localhost` in the bypass Proxy List ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F5878421%2F230129476-4bd5d1a0-c3c5-4c73-bb79-81f14a071e63.jpg&width=768&dpr=4&quality=100&sign=cf372600&sv=2) CleanShot 2023-04-05 at 22 28 12 2@2x 1. Done 2. `The Bridge Was shutdown` warning and the metro bundle errors are gone ✅ #### [](https://docs.proxyman.com/debug-devices/react-native#android-physical-device) Android Physical Device 1. Open Android Physical Device -> Setting App -> Network -> Wifi -> Find a way to change the proxy 2. Change the HTTP Proxy manually by using the Proxyman IP & Port. If you don't know what the IP & Port is, open the Certificate menu -> Install for Android -> Physical Device -> In the 2nd section. Find the Server IP & Port. 3. Before saving, enter them `your IP` in the bypass Proxy List ✅ 4. Done Read more at: [https://github.com/ProxymanApp/Proxyman/issues/1407#issuecomment-1497235102](https://github.com/ProxymanApp/Proxyman/issues/1407#issuecomment-1497235102) [PreviousGolang](https://docs.proxyman.com/debug-devices/golang) [NextFlutter](https://docs.proxyman.com/debug-devices/flutter) Last updated 1 year ago * [1\. React Native - iOS](https://docs.proxyman.com/debug-devices/react-native#id-1.-react-native-ios) * [2\. React Native - Android](https://docs.proxyman.com/debug-devices/react-native#id-2.-react-native-android) * [3\. Troubleshooting - Android](https://docs.proxyman.com/debug-devices/react-native#id-3.-troubleshooting-android) * [3.1 Metro bundle errors](https://docs.proxyman.com/debug-devices/react-native#id-3.1-metro-bundle-errors) --- # HTTP Clients | Proxyman ### [](https://docs.proxyman.com/debug-devices/http-clients#id-1.-problems) 1\. Problems Proxyman might not capture or get SSL Error from HTTP/HTTPS Requests, which makes from some HTTP Clients, such as [Postman](https://www.postman.com/) , [Insomnia Rest](https://insomnia.rest/) , and [Paw](https://paw.cloud/) app. This documentation would provide a solution to make Proxyman works. ### [](https://docs.proxyman.com/debug-devices/http-clients#id-2.-postman) 2\. Postman 1. Open Postman Preference 2. In General Tab -> Uncheck the "SSL certificate validation" checkbox 3. In Proxy Tab -> Check the "Use the System Proxy" and "Respect `HTTP_PROXY` _and_ `_HTTPS_PROXY_` variables". ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fz7kUPok6z9HdoDmQSjUx%252FPostman_And_Proxyman.jpg%3Falt%3Dmedia%26token%3Dc097e892-bded-437c-be80-967740a39967&width=768&dpr=4&quality=100&sign=72965e59&sv=2) Config to make Postman works with Proxyman ### [](https://docs.proxyman.com/debug-devices/http-clients#id-3.-insomnia-rest) 3\. Insomnia Rest 1. Open Insomnia Preference -> General Tab 2. Uncheck the "Validate Certificates" checkbox 3. Check "Enable Proxy" and enter `localhost:9090` in HTTP Proxy and HTTPS Proxy Textbox. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FkTUuKGNgsLH9j7dpyAvS%252FInsomnia_And_Proxyman.jpg%3Falt%3Dmedia%26token%3D5c0467bc-5e92-497c-b904-5bf73cbdb7b0&width=768&dpr=4&quality=100&sign=4d5bdae2&sv=2) Config to make Insomnia Rest works with Proxyman ### [](https://docs.proxyman.com/debug-devices/http-clients#id-4.-paw) 4\. Paw By default, Paw app uses the System Proxy Configuration. Thus, Proxyman can work out of the box. If you don't see any Paw traffic from Proxyman, please double-check: 1. Open Paw Preference. 2. Make sure you're using System Proxy Configuration in the Proxy Setting. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FHAVvbBwQaMbeKs0unnZX%252FPaw_Proxyman.jpg%3Falt%3Dmedia%26token%3Df2b4281c-73d8-473c-9c7f-9ac10789001a&width=768&dpr=4&quality=100&sign=5f7a7089&sv=2) Paw and Proxyman [PreviousFlutter](https://docs.proxyman.com/debug-devices/flutter) [NextDocker](https://docs.proxyman.com/debug-devices/docker) Last updated 3 years ago * [1\. Problems](https://docs.proxyman.com/debug-devices/http-clients#id-1.-problems) * [2\. Postman](https://docs.proxyman.com/debug-devices/http-clients#id-2.-postman) * [3\. Insomnia Rest](https://docs.proxyman.com/debug-devices/http-clients#id-3.-insomnia-rest) * [4\. Paw](https://docs.proxyman.com/debug-devices/http-clients#id-4.-paw) --- # Flutter | Proxyman Currently, [Flutter does not use the system-level proxy](https://github.com/flutter/flutter/issues/20376) , so if you use Proxyman, you might not see any traffic from your Flutter Project. The good news is that you can work around this issue by manually configuring Flutter’s HTTP client to use Proxyman as its proxy. In general, we have to manually config the HTTP Client to proxy all traffic to Proxyman Proxy Server, which is listening at IP = localhost, port = 9090. [](https://docs.proxyman.com/debug-devices/flutter#id-1.-setup-flutter-required-to-all-platforms-ios-and-android) 1\. Setup Flutter (Required to all platforms - iOS & Android) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Depending on which HTTP client you’re using, the steps will be slightly different. We will cover some popular HTTP Clients: * Dart’s [HttpClient](https://api.dartlang.org/stable/2.4.1/dart-io/HttpClient-class.html) class * The [http](https://pub.dev/packages/http) package * [Dio](https://pub.dev/packages/dio) If you're using Android Emulator or iOS Simulator, you can use `String proxy = 'localhost:9090'`. Otherwise, please use `String proxy = ':9090'` on Android Physical Devices. You can find the from the Proxyman -> Certificate menu -> Install for iOS -> Physical Device ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F9ZtuKh18NWG6570c1y93%252F1.jpg%3Falt%3Dmedia%26token%3D90e0a59a-19ac-4c6d-813e-b2ed1da96476&width=768&dpr=4&quality=100&sign=55890cf0&sv=2) Use current IP ### [](https://docs.proxyman.com/debug-devices/flutter#id-1.1-dart-httpclient-class) 1.1 Dart HTTPClient Class ### [](https://docs.proxyman.com/debug-devices/flutter#id-1.2-http-package) 1.2 HTTP Package ### [](https://docs.proxyman.com/debug-devices/flutter#id-1.3-dio) 1.3 Dio * Dio ≥ v5.0.0 (Recommended) * Dio < v5.0.0 (Deprecated APIs) [](https://docs.proxyman.com/debug-devices/flutter#id-2.-flutter-with-ios-simulators) 2\. Flutter with iOS Simulators -------------------------------------------------------------------------------------------------------------------------- 1. Start your iOS Simulator from Flutter 2. On Proxyman -> Certificate menu -> Install Certificate for iOS -> Simulators 3. Follow all steps below ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FANiusyxYs1K82XL8EmnV%252F2.jpg%3Falt%3Dmedia%26token%3D8ea21f1c-3def-4ed8-9b2c-62f233ced5dc&width=768&dpr=4&quality=100&sign=a6c0f798&sv=2) Install & trust Proxyman certificate to your iOS Simulators 1. ✅ Done. Proxyman can capture your HTTPS. [](https://docs.proxyman.com/debug-devices/flutter#id-3.-flutter-with-ios-devices) 3\. Flutter with iOS Devices -------------------------------------------------------------------------------------------------------------------- * Follow this [Setup Guide](https://docs.proxyman.com/debug-devices/ios-device) [](https://docs.proxyman.com/debug-devices/flutter#id-4.-flutter-with-android-emulator) 4\. Flutter with Android Emulator ------------------------------------------------------------------------------------------------------------------------------ * Follow this [Setup Guide](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) [](https://docs.proxyman.com/debug-devices/flutter#id-5.-flutter-with-android-devices) 5\. Flutter with Android Devices ---------------------------------------------------------------------------------------------------------------------------- * Follow this [Setup Guide](https://docs.proxyman.com/debug-devices/android-device) #### [](https://docs.proxyman.com/debug-devices/flutter#credit-and-reference) Credit & Reference Credit to James Dixon from [https://flutterigniter.com/debugging-network-requests/](https://flutterigniter.com/debugging-network-requests/) [PreviousReact Native](https://docs.proxyman.com/debug-devices/react-native) [NextHTTP Clients](https://docs.proxyman.com/debug-devices/http-clients) Last updated 22 days ago * [1\. Setup Flutter (Required to all platforms - iOS & Android)](https://docs.proxyman.com/debug-devices/flutter#id-1.-setup-flutter-required-to-all-platforms-ios-and-android) * [1.1 Dart HTTPClient Class](https://docs.proxyman.com/debug-devices/flutter#id-1.1-dart-httpclient-class) * [1.2 HTTP Package](https://docs.proxyman.com/debug-devices/flutter#id-1.2-http-package) * [1.3 Dio](https://docs.proxyman.com/debug-devices/flutter#id-1.3-dio) * [2\. Flutter with iOS Simulators](https://docs.proxyman.com/debug-devices/flutter#id-2.-flutter-with-ios-simulators) * [3\. Flutter with iOS Devices](https://docs.proxyman.com/debug-devices/flutter#id-3.-flutter-with-ios-devices) * [4\. Flutter with Android Emulator](https://docs.proxyman.com/debug-devices/flutter#id-4.-flutter-with-android-emulator) * [5\. Flutter with Android Devices](https://docs.proxyman.com/debug-devices/flutter#id-5.-flutter-with-android-devices) Copy // Make sure to replace with // the external IP of your computer if you're using Android. // You can get the IP in the Android Setup Guide window String proxy = Platform.isAndroid ? ':9090' : 'localhost:9090'; // Create a new HttpClient instance. HttpClient httpClient = HttpClient(); // Hook into the findProxy callback to set // the client's proxy. httpClient.findProxy = (uri) { return "PROXY $proxy;"; }; // This is a workaround to allow Proxyman to receive // SSL payloads when your app is running on Android httpClient.badCertificateCallback = (cert, host, port) => true; Copy // Make sure to replace with // the external IP of your computer if you're using Android. // You can get the IP in the Android Setup Guide window String proxy = Platform.isAndroid ? ':9090' : 'localhost:9090'; // Create a new HttpClient instance. HttpClient httpClient = HttpClient(); // Hook into the findProxy callback to set // the client's proxy. httpClient.findProxy = (uri) { return "PROXY $proxy;"; }; // This is a workaround to allow Proxyman to receive // SSL payloads when your app is running on Android. httpClient.badCertificateCallback = (cert, host, port) => true; // Pass your newly instantiated HttpClient to http.IOClient. IOClient myClient = IOClient(httpClient); // Make your request as normal. final response = myClient.get('/my-url'); Copy // Make sure to replace with // the external IP of your computer if you're using Android. // You can get the IP in the Android Setup Guide window String proxy = Platform.isAndroid ? ':9090' : 'localhost:9090'; // Create a new Dio instance. Dio dio = Dio(); dio.httpClientAdapter = IOHttpClientAdapter( createHttpClient: () { final client = HttpClient(); client.findProxy = (uri) { return 'PROXY $proxy'; } client.badCertificateCallback = (cert, host, port) => true; return client; }, validateCertificate: (cert, host, port) { return true; }, ); Copy // Make sure to replace with // the external IP of your computer if you're using Android. // You can get the IP in the Android Setup Guide window String proxy = Platform.isAndroid ? ':9090' : 'localhost:9090'; // Create a new Dio instance. Dio dio = Dio(); // Tap into the onHttpClientCreate callback // to configure the proxy just as we did earlier. (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (client) { // Hook into the findProxy callback to set the client's proxy. client.findProxy = (url) { return 'PROXY $proxy'?; }; // This is a workaround to allow Proxyman to receive // SSL payloads when your app is running on Android. client.badCertificateCallback = (X509Certificate cert, String host, int port) => true; } --- # Docker | Proxyman ### [](https://docs.proxyman.com/debug-devices/docker#id-1.-capture-traffic-from-your-docker-container) 1\. Capture traffic from your Docker Container By default, Proxyman can capture all traffic that you access from your Docker Container if you access it from your Mac Devices. To elaborate, here is the sample Docker Container: 1. Set up a simple HTTP Server by NodeJS + Express. Then Dockerizing it. You can find it at [https://nodejs.org/en/docs/guides/nodejs-docker-webapp/](https://nodejs.org/en/docs/guides/nodejs-docker-webapp/) 2. Makes sure we expose your server via port 8080. 3. You can verify it by opening http://localhost:8080 on Safari. ### [](https://docs.proxyman.com/debug-devices/docker#id-2.-capture-traffic-inside-docker-containers) 2\. Capture traffic inside Docker Containers Read more at [https://github.com/ProxymanApp/Proxyman/issues/419#issuecomment-1059096490](https://github.com/ProxymanApp/Proxyman/issues/419#issuecomment-1059096490) ### [](https://docs.proxyman.com/debug-devices/docker#id-3.-alternative-solution) 3\. Alternative Solution: 1. Add docker-compose.proxyman.yml. Replace with your service Copy version: '2' services: php8.1-fpm-xdebug: environment: HTTP_PROXY: host.docker.internal:9090 HTTPS_PROXY: host.docker.internal:9090 http_proxy: host.docker.internal:9090 https_proxy: host.docker.internal:9090 1. Start the Docker: `docker-compose -f docker-compose.yml -f docker-compose.proxyman.yml up -d` Ref: [https://github.com/ProxymanApp/Proxyman/issues/1712#issuecomment-1642279537](https://github.com/ProxymanApp/Proxyman/issues/1712#issuecomment-1642279537) [PreviousHTTP Clients](https://docs.proxyman.com/debug-devices/http-clients) [NextElectronJS](https://docs.proxyman.com/debug-devices/electronjs) Last updated 2 years ago * [1\. Capture traffic from your Docker Container](https://docs.proxyman.com/debug-devices/docker#id-1.-capture-traffic-from-your-docker-container) * [2\. Capture traffic inside Docker Containers](https://docs.proxyman.com/debug-devices/docker#id-2.-capture-traffic-inside-docker-containers) * [3\. Alternative Solution:](https://docs.proxyman.com/debug-devices/docker#id-3.-alternative-solution) --- # ElectronJS | Proxyman ### [](https://docs.proxyman.com/debug-devices/electronjs#id-1.-capture-https-traffic-from-the-electronjs-app-with-automatic-setup) 1\. Capture HTTPS traffic from the ElectronJS app with Automatic Setup Proxyman can capture HTTPS traffic from the ElectronJS app out of the box. No need to config any HTTP Proxy or trust the certificate on the ElectronJS app. Let's follow: 1. Open Proxyman app -> Setup menu -> Automatic Setup 2. Click on the "Start the Terminal" button 3. New Terminal app appears -> Open your ElectronJS app by command: Copy open ~/Applications/your_electron_app.app 1. Done [PreviousDocker](https://docs.proxyman.com/debug-devices/docker) [NextNextJS (fetch)](https://docs.proxyman.com/debug-devices/nextjs-fetch) Last updated 2 years ago --- # NextJS (fetch) | Proxyman [](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-1.-problem) 1\. Problem --------------------------------------------------------------------------------------- * Proxyman can't capture any traffic from the \`use server\` from NextJS * It's because the \`fetch\` from NextJS doesn't respect the System HTTP Proxy. Therefore, no traffic goes through the Proxyman app. [](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-2.-solution) 2\. Solution ----------------------------------------------------------------------------------------- 1. Start the Pre-configure Terminal on Tools -> Setup -> Automatic Setup -> Click on "Open New Terminal" 2. New Terminal is opened -> Start your NextJS server on this Terminal. For example: \`npm run dev\` 3. Use `no-cache` on `fetch` Copy export default async function MyPage() { const res = await fetch('https://httpbin.org/anything', { cache: 'no-cache' }) // no cache, or no request is sent to Proxyman return
My Page{res.text()}
} 1. Reload your website 2. Done ✅ Your HTTP Traffic is captured by the Proxyman app ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FBMTMZWMi3m9d8LIzKP9T%252F335782543-6e0c4eeb-435d-4589-b2dd-4087f3827f3a.jpg%3Falt%3Dmedia%26token%3D31a477cb-177d-48d8-a379-4402addfdfa1&width=768&dpr=4&quality=100&sign=d6ecd41a&sv=2) Capture NextJS fetch on Proxyman [](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-3.-reference) 3\. Reference: -------------------------------------------------------------------------------------------- * [https://github.com/ProxymanApp/Proxyman/issues/2038](https://github.com/ProxymanApp/Proxyman/issues/2038) [PreviousElectronJS](https://docs.proxyman.com/debug-devices/electronjs) [NextDemo iOS & Android](https://docs.proxyman.com/debug-devices/demo-ios-and-android) Last updated 1 year ago * [1\. Problem](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-1.-problem) * [2\. Solution](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-2.-solution) * [3\. Reference:](https://docs.proxyman.com/debug-devices/nextjs-fetch#id-3.-reference) --- # Email Protection | Cloudflare Please enable cookies. Email Protection ================ You are unable to access this email address docs.proxyman.com ------------------------------------------------------------- The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**. If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection) . * [How does Cloudflare protect email addresses on website from spammers?](https://developers.cloudflare.com/waf/tools/scrape-shield/email-address-obfuscation/) * [Can I sign up for Cloudflare?](https://developers.cloudflare.com/fundamentals/setup/account/create-account/) Cloudflare Ray ID: **9b64605ab8beec0a** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing) --- # Demo iOS & Android | Proxyman [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.-ios-simulators) 1\. 📱 iOS Simulators ---------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.1-native-ios-app-ios-26-simulators--xcode-26) 1.1 Native iOS app - iOS 26 Simulators + Xcode 26 * YouTube: [https://www.youtube.com/watch?v=THzb2e9hoGo](https://www.youtube.com/watch?v=THzb2e9hoGo) ### [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.2-react-native-with-expo-with-ios-18-simulator) 1.2 React Native with Expo with iOS 18 Simulator * Tutorial: [https://proxyman.com/posts/how-to-capture-https-from-React-native-app-2025-update](https://proxyman.com/posts/how-to-capture-https-from-React-native-app-2025-update) * Demo project: [https://github.com/ProxymanApp/Proxyman-React-Native-Sample-App](https://github.com/ProxymanApp/Proxyman-React-Native-Sample-App) * Youtube: [https://www.youtube.com/watch?v=4LkKXyIPulM](https://www.youtube.com/watch?v=4LkKXyIPulM) [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.-android-emulators) 2\. 🤖 Android Emulators ---------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.1-native-android-app-java-or-kotlin-with-pixel-6-pro-google-apis-version--api-36) 2.1 Native Android app (Java or Kotlin) with Pixel 6 Pro (Google APIs version) + API 36 * Demo Project: [https://github.com/ProxymanApp/OKHTTP-Android-Sample](https://github.com/ProxymanApp/OKHTTP-Android-Sample) * YouTube: [https://www.youtube.com/watch?v=CWInB7gZj6g](https://www.youtube.com/watch?v=CWInB7gZj6g) ### [](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.2-react-native-with-expo-or-pixel-9-pro-google-apis-with-api-36) 2.2 React Native with Expo | Pixel 9 Pro Google APIs with API 36 * Tutorial: [https://proxyman.com/posts/how-to-capture-https-from-React-native-app-2025-update](https://proxyman.com/posts/how-to-capture-https-from-React-native-app-2025-update) * Demo project: [https://github.com/ProxymanApp/Proxyman-React-Native-Sample-App](https://github.com/ProxymanApp/Proxyman-React-Native-Sample-App) * Youtube: [https://www.youtube.com/watch?v=4LkKXyIPulM](https://www.youtube.com/watch?v=4LkKXyIPulM) [PreviousNextJS (fetch)](https://docs.proxyman.com/debug-devices/nextjs-fetch) [NextAutomatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) Last updated 3 months ago * [1\. 📱 iOS Simulators](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.-ios-simulators) * [1.1 Native iOS app - iOS 26 Simulators + Xcode 26](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.1-native-ios-app-ios-26-simulators--xcode-26) * [1.2 React Native with Expo with iOS 18 Simulator](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-1.2-react-native-with-expo-with-ios-18-simulator) * [2\. 🤖 Android Emulators](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.-android-emulators) * [2.1 Native Android app (Java or Kotlin) with Pixel 6 Pro (Google APIs version) + API 36](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.1-native-android-app-java-or-kotlin-with-pixel-6-pro-google-apis-version--api-36) * [2.2 React Native with Expo | Pixel 9 Pro Google APIs with API 36](https://docs.proxyman.com/debug-devices/demo-ios-and-android#id-2.2-react-native-with-expo-or-pixel-9-pro-google-apis-with-api-36) --- # Manual Setup | Proxyman [](https://docs.proxyman.com/automatic-setup/manual-setup#id-1.-problems) 1\. Problems ------------------------------------------------------------------------------------------- Proxyman **could not capture** HTTP/HTTPS traffic from the following setup: * **NodeJS**: Axios, got, superagent, fetch, and node-fetch * Python: http, https, aiohttp, requests * Ruby: http, net/http, net/htps, faraday, httparty and fastlane * cURL It's a known issue since NodeJS, Python, Ruby, and cURL which are executed from the Terminal app, don't respect the system HTTP Proxy. Thus, there is no traffic on Proxyman. You have to read through the Technical Documentation of each library and manually config: * The HTTP Proxy * Trust a self-signed certificate \=> Time-consuming and error-prone ❌ [](https://docs.proxyman.com/automatic-setup/manual-setup#id-2.-solution-manual-setup) 2\. Solution: Manual Setup ---------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/automatic-setup/manual-setup#benefit) Benefit: * ✅ Run on your favorite Terminal app: iTerm2 with Bash, Zsh, and Fish Shell * Capture HTTP(s) traffic from NodeJS, Python, Ruby, Terminal or Web Browser, etc * Safe. Work on your current session, not affect your OS ### [](https://docs.proxyman.com/automatic-setup/manual-setup#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Manual Setup 2. Open your favorite Terminal app, such as iTerm2 3. Copy & Paste the script to your Terminal -> Run it 4. Done ✅ 5. You can start your Backend Server or run a script => Proxyman automatically captures all HTTP/HTTPS traffic out of the box ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FzbMaji0jVt041M5UqANl%252FCleanShot%25202023-04-22%2520at%252015.23.20%25402x.jpg%3Falt%3Dmedia%26token%3Db8d90470-da77-4a0b-9a8e-f655bd80a777&width=768&dpr=4&quality=100&sign=269624d5&sv=2) Manual Setup ### [](https://docs.proxyman.com/automatic-setup/manual-setup#support-libraries) Support Libraries: Proxyman (with Manual Setup) can work out of the box with the following network libraries. * NodeJS: [axios](https://www.npmjs.com/package/axios) , [fetch](https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#fetch) (v18+), [node-fetch](https://www.npmjs.com/package/node-fetch) , [got](https://www.npmjs.com/package/got) , [https](https://nodejs.org/api/https.html) , and [superagent](https://www.npmjs.com/package/superagent) * Ruby: [http](https://ruby-doc.org/stdlib-3.0.2/libdoc/net/http/rdoc/Net/HTTP.html) , [net/http](https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html) , [net/https](https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html) , [httparty](https://github.com/jnunemaker/httparty) , [faraday](https://github.com/lostisland/faraday) , and fastlane * Python: [request](https://pypi.org/project/requests/) , [aiohttp](https://docs.aiohttp.org/en/stable/) , http.client, urllib3 and httpx * cURL without --proxy flag [](https://docs.proxyman.com/automatic-setup/manual-setup#id-3.-advanced-how-does-it-work) 3\. Advanced: How does it work? ------------------------------------------------------------------------------------------------------------------------------- See the [Automatic Setup: How does it work?](https://docs.proxyman.com/automatic-setup/automatic-setup#3.-advanced-how-does-it-work) [](https://docs.proxyman.com/automatic-setup/manual-setup#id-4.-troubleshooting) 4\. Troubleshooting --------------------------------------------------------------------------------------------------------- See the [Troubleshooting](https://docs.proxyman.com/automatic-setup/troubleshooting) page [PreviousAutomatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) [NextTroubleshooting](https://docs.proxyman.com/automatic-setup/troubleshooting) Last updated 1 year ago * [1\. Problems](https://docs.proxyman.com/automatic-setup/manual-setup#id-1.-problems) * [2\. Solution: Manual Setup](https://docs.proxyman.com/automatic-setup/manual-setup#id-2.-solution-manual-setup) * [Benefit:](https://docs.proxyman.com/automatic-setup/manual-setup#benefit) * [How to use:](https://docs.proxyman.com/automatic-setup/manual-setup#how-to-use) * [Support Libraries:](https://docs.proxyman.com/automatic-setup/manual-setup#support-libraries) * [3\. Advanced: How does it work?](https://docs.proxyman.com/automatic-setup/manual-setup#id-3.-advanced-how-does-it-work) * [4\. Troubleshooting](https://docs.proxyman.com/automatic-setup/manual-setup#id-4.-troubleshooting) --- # Automatic Setup | Proxyman [](https://docs.proxyman.com/automatic-setup/automatic-setup#id-1.-problems) 1\. Problems ---------------------------------------------------------------------------------------------- Proxyman **could not capture** HTTP/HTTPS traffic from the following setup: * **NodeJS**: Axios, got, superagent, fetch, and node-fetch * **Python**: http, https, aiohttp, requests * **Ruby**: http, net/http, net/htps, faraday, and httparty, fastlane * Golang: net/http, fasthttp, resty, gorequest, req, grequests * ElectronJS * cURL It's a known issue since NodeJS, Python, Ruby, and cURL which are executed from the Terminal app, don't respect the system HTTP Proxy. Thus, there is no traffic on Proxyman. You have to read through the Technical Documentation of each library and manually config: * The HTTP Proxy * Trust a self-signed certificate \=> Time-consuming and error-prone ❌ [](https://docs.proxyman.com/automatic-setup/automatic-setup#id-2.-solution-automatic-setup) 2\. Solution: Automatic Setup ------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/automatic-setup/automatic-setup#benefit) Benefit: * ✅ **1-click to automatically set up HTTP Proxy & Certificate** on a variety of dev environments * Capture HTTP(s) traffic from NodeJS, Python, Ruby, Terminal or Web Browser, etc * Safe. Work on your current session, not affect your OS ### [](https://docs.proxyman.com/automatic-setup/automatic-setup#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" 3. Accept the Apple Script permission prompt if needed 4. The New Terminal app is launched -> You can start your Backend Server, or Run scripts => Proxyman automatically captures all traffic. 5. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F4q5re6rSbzgyjXpU1SMs%252FCleanShot%25202023-04-22%2520at%252015.18.19%25402x.jpg%3Falt%3Dmedia%26token%3Dc4ccc500-821b-41b5-a4e5-f1bed0c0ed16&width=768&dpr=4&quality=100&sign=b1587c5e&sv=2) Start the pre-configured Terminal app ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fs6dh2gmsjohrPHBNQNvB%252FCleanShot%25202023-04-26%2520at%252015.53.00%25402x.jpg%3Falt%3Dmedia%26token%3D7de1605a-377b-40b9-bb83-af1031867c58&width=768&dpr=4&quality=100&sign=1ac0ff5b&sv=2) New Terminal app is launched ### [](https://docs.proxyman.com/automatic-setup/automatic-setup#notes) Notes: * Only the pre-configured Terminal app is able to capture HTTP traffic out of the box. If you would like to use your own Terminal app (e.g. iTerm2, Hyper, etc), please use the Manual Setup. * It's totally safe because it runs on your current session. It doesn't alter your System Config. #### [](https://docs.proxyman.com/automatic-setup/automatic-setup#electronjs) ElectronJS 1. Open the Automatic Terminal 2. Use this command line: ### [](https://docs.proxyman.com/automatic-setup/automatic-setup#support-libraries) Support Libraries: Proxyman (with Automatic Setup) can work out of the box with the following network libraries. * NodeJS: [axios](https://www.npmjs.com/package/axios) , [fetch](https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#fetch) (v18+), [node-fetch](https://www.npmjs.com/package/node-fetch) , [got](https://www.npmjs.com/package/got) , [https](https://nodejs.org/api/https.html) , and [superagent](https://www.npmjs.com/package/superagent) * Ruby: [http](https://ruby-doc.org/stdlib-3.0.2/libdoc/net/http/rdoc/Net/HTTP.html) , [net/http](https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html) , [net/https](https://ruby-doc.org/stdlib-2.7.0/libdoc/net/http/rdoc/Net/HTTP.html) , [httparty](https://github.com/jnunemaker/httparty) , and [faraday](https://github.com/lostisland/faraday) , fastlane * Python: [request](https://pypi.org/project/requests/) , [aiohttp](https://docs.aiohttp.org/en/stable/) , http.client, urllib3 and httpx * Golang: net/http, fasthttp, resty, gorequest, req, grequests * ElectronJS app * cURL without --proxy flag It's completely **SAFE** since the change only affects your current Terminal Session. It doesn't alter your **bash\_profile** or **zshrc** file. [](https://docs.proxyman.com/automatic-setup/automatic-setup#id-3.-advanced-how-does-it-work) 3\. Advanced: How does it work? ---------------------------------------------------------------------------------------------------------------------------------- As soon as you click on the "Open New Terminal" button, Proxyman would perform a series of automatic actions: 1. Use AppleScript to start the Terminal app. 2. With the new Terminal app, it starts running this command line: 1. proxyman\_env\_automatic\_setup.sh is a bash script that defines new Variable Environments that helps Proxyman. For example: * HTTP\_PROXY & HTTPS\_PROXY env * PATH * RUBYLIB * PYTHONPATH * NODE\_OPTIONS * GLOBAL\_AGENT\_HTTP\_PROXY **NodeJS**: 1. Proxyman prepends a new Node directory into the $PATH env. 2. Monkey-patching the node with a [global-agent](https://www.npmjs.com/package/global-agent) package, which supports HTTP Proxy for axios, and fetch out of the box **Ruby**: 1. Override the $RUBYLIB to Proxyman app 2. Patching all common libraries, such as http, net/http and net/https, etc -> Set HTTP Proxy and trust Proxyman self-signed certificate. **Python**: 1. Override $PYTHONPATH to Proxyman app 2. Patching all common library, such as aiohttp, httplib, http.client -> Set HTTP Proxy and trust Proxyman self-signed certificate. **Go**: 1. Override HTTP\_PROXY & HTTPS\_PROXY env 2. Override some Go env to trust self-signed certificate [](https://docs.proxyman.com/automatic-setup/automatic-setup#id-4.-troubleshooting) 4\. Troubleshooting ------------------------------------------------------------------------------------------------------------ See the [Troubleshooting](https://docs.proxyman.com/automatic-setup/troubleshooting) page [PreviousDemo iOS & Android](https://docs.proxyman.com/debug-devices/demo-ios-and-android) [NextManual Setup](https://docs.proxyman.com/automatic-setup/manual-setup) Last updated 9 months ago * [1\. Problems](https://docs.proxyman.com/automatic-setup/automatic-setup#id-1.-problems) * [2\. Solution: Automatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup#id-2.-solution-automatic-setup) * [Benefit:](https://docs.proxyman.com/automatic-setup/automatic-setup#benefit) * [How to use:](https://docs.proxyman.com/automatic-setup/automatic-setup#how-to-use) * [Notes:](https://docs.proxyman.com/automatic-setup/automatic-setup#notes) * [Support Libraries:](https://docs.proxyman.com/automatic-setup/automatic-setup#support-libraries) * [3\. Advanced: How does it work?](https://docs.proxyman.com/automatic-setup/automatic-setup#id-3.-advanced-how-does-it-work) * [4\. Troubleshooting](https://docs.proxyman.com/automatic-setup/automatic-setup#id-4.-troubleshooting) Copy open ~/Applications/your_electron_app.app Copy set -a && source "$HOME/.proxyman/proxyman_env_automatic_setup.sh" && set +a --- # Troubleshooting | Proxyman ### [](https://docs.proxyman.com/automatic-setup/troubleshooting#id-1.-automatic-setup-does-not-capture-any-http-traffic-from-my-new-networking-library) 1\. Automatic Setup does not capture any HTTP Traffic from my new networking library Proxyman supports the following libraries: * **NodeJS**: Axios, got, superagent, fetch, and node-fetch * **Python**: http, https, aiohttp, requests * **Ruby**: http, net/http, net/htps, faraday, and httparty \-> If you're using a new library and Proxyman Automatic Setup doesn't capture your HTTP/HTTPS traffic, please [create a new ticket](https://github.com/ProxymanApp/Proxyman/issues) to request your library. ### [](https://docs.proxyman.com/automatic-setup/troubleshooting#id-2.-i-get-ssl-errors-from-my-nodejs-ruby-python-script) 2\. I get SSL Errors from my NodeJS, Ruby, Python script \-> Make sure you've installed & trusted the certificate on macOS. You can easily do it by opening the Certificate Menu -> Install a certificate for Mac. \-> If the bug still happens, it seems there is a bug in the Automatic Setup feature, please [create a new ticket](https://github.com/ProxymanApp/Proxyman/issues) and let us know. ### [](https://docs.proxyman.com/automatic-setup/troubleshooting#id-3.-proxyman-could-not-record-any-traffic-from-my-local-server-e.g-http-localhost-3000) 3\. Proxyman could not record any traffic from my local server, e.g http://localhost:3000 By default, Traffic from http://localhost:3000 doesn't go through the system proxy. Therefore, Proxyman could not capture your traffic. Please follow this [solution](https://docs.proxyman.io/troubleshooting/couldnt-see-any-request-from-localhost-server) to fix it. [PreviousManual Setup](https://docs.proxyman.com/automatic-setup/manual-setup) [NextAtlantis for iOS](https://docs.proxyman.com/atlantis/atlantis-for-ios) Last updated 2 years ago * [1\. Automatic Setup does not capture any HTTP Traffic from my new networking library](https://docs.proxyman.com/automatic-setup/troubleshooting#id-1.-automatic-setup-does-not-capture-any-http-traffic-from-my-new-networking-library) * [2\. I get SSL Errors from my NodeJS, Ruby, Python script](https://docs.proxyman.com/automatic-setup/troubleshooting#id-2.-i-get-ssl-errors-from-my-nodejs-ruby-python-script) * [3\. Proxyman could not record any traffic from my local server, e.g http://localhost:3000](https://docs.proxyman.com/automatic-setup/troubleshooting#id-3.-proxyman-could-not-record-any-traffic-from-my-local-server-e.g-http-localhost-3000) --- # Atlantis for iOS | Proxyman [](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------ A lightweight and powerful iOS framework for intercepting HTTP/HTTPS and WS/WSS traffic from your iOS app. No more messing around with proxy, certificate config. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MKnLkf7i8jkEzH1MAqd%252F-MKnMEuFoWVFC_kNu_GD%252Fcover.png%3Falt%3Dmedia%26token%3D809f58a7-bd1c-42c4-b1d7-1f45461d8747&width=768&dpr=4&quality=100&sign=5b1801d5&sv=2) iOS Framework for intercepting HTTP/HTTPS traffic * **Github**: [https://github.com/ProxymanApp/atlantis](https://github.com/ProxymanApp/atlantis) [](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-2.-benefit) 2\. Benefit? --------------------------------------------------------------------------------------- * Automatically intercept all **HTTP/HTTPS** Traffic with ease. * Automatically intercept **WebSocket** from iOS devices. * Support iOS Physical Devices and Simulators * **No need** to config HTTP Proxy, Install or Trust any Certificate * Review traffic logs from [Proxyman](https://proxyman.io/) for the macOS app. * Categorize the log by app and devices. **Atlantis** is only for **Network Inspectors**. If you would use Debugging Tools like Map Local, Breakpoint, Map Remote, Scripting, Network Throttling, and Reverse Proxy ... please consider using a normal Proxy. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MKnqSd-nT6xS1e57Eup%252F-MKnqa36NL-YcP3YyczB%252Fproxyman_atlantis.png%3Falt%3Dmedia%26token%3D4eb6d556-ad75-4f73-91ad-1822615f61e2&width=768&dpr=4&quality=100&sign=127fa007&sv=2) Inspect iOS Traffic from MacOS app [](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-3.-how-to-install) 3\. How to install ---------------------------------------------------------------------------------------------------- Please checkout the latest update on Github page: [https://github.com/ProxymanApp/atlantis](https://github.com/ProxymanApp/atlantis) [PreviousTroubleshooting](https://docs.proxyman.com/automatic-setup/troubleshooting) [NextProxyman Proxy Helper Tool](https://docs.proxyman.com/basic-features/proxy-setting-tool) Last updated 3 years ago * [1\. What's it?](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-1.-whats-it) * [2\. Benefit?](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-2.-benefit) * [3\. How to install](https://docs.proxyman.com/atlantis/atlantis-for-ios#id-3.-how-to-install) --- # Multiple Tabs | Proxyman Proxyman supports multiple tabs to increase your productivity. ### [](https://docs.proxyman.com/basic-features/multiple-tabs#keyboard) Keyboard All keyboard shortcuts are same with Safari's shortcut. Shortcut Action **⌘ + T** Open new tab **⌘ + 1, 2, 3** Quick navigate to the 1st, 2nd, 3rd tabs. **⌘ + ⇧ + \[ or \]** Quick navigate the the left or right tab. This feature only enabled in Premium version. [](https://docs.proxyman.com/basic-features/multiple-tabs#screenshots) Screenshots --------------------------------------------------------------------------------------- ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LsKMDvs1VPUFP4RiyRY%252F-LsKN4LX1S3e8jeS_btt%252FScreen_Shot_2019-10-29_at_09_35_55.jpg%3Falt%3Dmedia%26token%3D5301d282-8464-4bbe-894b-26f7e2f7ac4b&width=768&dpr=4&quality=100&sign=8cd0fb3c&sv=2) Multiple tabs ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LsKMDvs1VPUFP4RiyRY%252F-LsKNx5ET-VaSl_gDIAA%252FScreen%2520Shot%25202019-10-29%2520at%252009.40.51.png%3Falt%3Dmedia%26token%3D30005717-cb23-45fe-b3d5-bc61e1944969&width=768&dpr=4&quality=100&sign=9114ddbb&sv=2) Right-click on the app or domain to open the new tab. [](https://docs.proxyman.com/basic-features/multiple-tabs#undefined) ------------------------------------------------------------------------ [PreviousContent Filter](https://docs.proxyman.com/basic-features/content-filter) [NextHorizontal/Vertical/Window Layout](https://docs.proxyman.com/basic-features/horizontal-vertical-layout) Last updated 1 year ago * [Keyboard](https://docs.proxyman.com/basic-features/multiple-tabs#keyboard) * [Screenshots](https://docs.proxyman.com/basic-features/multiple-tabs#screenshots) * [](https://docs.proxyman.com/basic-features/multiple-tabs#undefined) --- # Import / Export | Proxyman ### [](https://docs.proxyman.com/basic-features/import-export#id-1.-import) 1\. Import Proxyman supports multiples traffic log files from Proxyman and Charles Proxy. * **Proxyman Log**: Built-in Proxyman Log that contains all Requests and Responses information. * Proxyman Session: Entire working session files that are exported from the Proxyman app. * **HAR 1.2** ([HTTP Archive](https://en.wikipedia.org/wiki/HAR_(file_format)) ): Suitable for transferring the HTTP Request and Response to other apps for the later inspector. Charles, Google Chrome, Safari, Firefox, and other Network Analyzer apps are fully supported. * **Charles Proxy Log**: Charles Log that exports from Charles Proxy app. The file extension is **chls**. * **CSV File**: Export selected requests as a CSV file (Proxyman 2.29.0+) * **Charles Proxy Log for iOS** (Proxyman 2.30.0+): File extension is **chlsj**. * Export as Postman Collection 2. If you would like to save an entire working Session, please read the Save Session Page. [Save Session](https://docs.proxyman.com/advanced-features/save-session) [Charles Proxy Converter](https://docs.proxyman.com/advanced-features/charles-proxy-converter) ### [](https://docs.proxyman.com/basic-features/import-export#id-2.-export) 2\. Export You can export: * List of selected Requests or Responses. * All traffic from specific Client or Domain Node or Remote Devices. * An entire working session. * Export as Proxyman LOG or ProxymanSession, Body or Raw tab. It's useful to export a bug request that you can investigate later or send to your QA team. ### [](https://docs.proxyman.com/basic-features/import-export#id-3.-import-and-export-by-command-line) 3\. Import & Export by Command Line Proxyman offers a useful command line that helps you perform that import/export operation by a bash script. [Command-line](https://docs.proxyman.com/command-line) ### [](https://docs.proxyman.com/basic-features/import-export#id-4.-how-to-use) 4\. How to use #### [](https://docs.proxyman.com/basic-features/import-export#id-4.1-import-files-to-proxyman) 4.1 Import files to Proxyman * **Drag and drop** files to Proxyman Window * File -> Open -> Select a file The imported file will be added to the Pin Section where you can inspect all traffic. #### [](https://docs.proxyman.com/basic-features/import-export#id-4.2-export-to-files) 4.2 Export to files There are many ways to export a selected request to files: * Select Request & Response on the main table view -> Right Click -> Export * Right Click on the App or Domain -> Export ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mi5O5pWUpWoBcEvzwwS%252F-Mi5O_YRLVNO3-RUnK_0%252FScreen_Shot_2021-08-27_at_13_56_53.png%3Falt%3Dmedia%26token%3D67dfa293-cd2a-4a3b-9302-e0c46d4260dd&width=768&dpr=4&quality=100&sign=3dfcd3f2&sv=2) [PreviousBypass Proxy List](https://docs.proxyman.com/basic-features/bypass-proxy-list) [NextContent Filter](https://docs.proxyman.com/basic-features/content-filter) Last updated 1 year ago * [1\. Import](https://docs.proxyman.com/basic-features/import-export#id-1.-import) * [2\. Export](https://docs.proxyman.com/basic-features/import-export#id-2.-export) * [3\. Import & Export by Command Line](https://docs.proxyman.com/basic-features/import-export#id-3.-import-and-export-by-command-line) * [4\. How to use](https://docs.proxyman.com/basic-features/import-export#id-4.-how-to-use) --- # SSL Proxying | Proxyman [](https://docs.proxyman.com/basic-features/ssl-proxying#id-1.-ssl-proxying-list) 1\. SSL Proxying List ------------------------------------------------------------------------------------------------------------ A list of domains or applications that Proxyman should decrypt its SSL Connection. It enables the user to inspect the HTTPS Request/Response in plain text. ### [](https://docs.proxyman.com/basic-features/ssl-proxying#include-list-and-exclude-list) Include List and Exclude List You can define rules for: * **Include List**: Intercept the traffic from apps/domains if it's in the include list * **Exclude List**: Ignore all traffic from apps/domains in Exclude List ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MNNV0ioroSdDj1rtNl1%252F-MNNVBHLJJ_R4d-5rijF%252Fssl_proxying.png%3Falt%3Dmedia%26token%3Da5232408-193a-44a1-9f76-0852b530c5f4&width=768&dpr=4&quality=100&sign=7fafee65&sv=2) SSL Proxying List ⌘⌥P to quickly open the SSL Proxying List. ### [](https://docs.proxyman.com/basic-features/ssl-proxying#apps-domains-wildcards) Apps / Domains / Wildcards Proxyman supports several formats to define a rule: * **By app**: Intercept all traffic that goes from this app * **By Domain**: Intercept all traffic from this domain * **Wildcard**: If it's matched the wildcard regex For examplee: Wildcard Description \* Decrypt ALL HTTPS traffic \*.domain.com, \*.apple.com e.g. v1.domain.com, data.domain.com, health.apple.com, ... v?.domain.com e.g. v1.domain.com, v2.domain.com, ... It's essential to set up the Proxyman Certificate before intercepting any HTTPS requests. You can follow the [macOS setup Guide](https://docs.proxyman.com/debug-devices/macos) to properly install and trust the certificate.. ### [](https://docs.proxyman.com/basic-features/ssl-proxying#how-to-enable-ssl-proxying-on-a-particular-domain-or-app) How to enable SSL Proxying on a particular domain or app * Right-Click on the app or domain on the Left Panel -> Enable SSL Proxying ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FbfeUhwBLzp7GI7vdSGCp%252Fdomain.jpeg%3Falt%3Dmedia%26token%3D5cff404f-1782-429a-9c37-2d24bb7af4c1&width=768&dpr=4&quality=100&sign=5eb356d4&sv=2) Add a domain to the SSL Proxying List * Right-Click on the Request on the main table -> Enable SSL Proxying * Select the request and enable SSL Proxying on the Response Panel. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FWOUdc3l4zWEphd5ANRD0%252F2.jpeg%3Falt%3Dmedia%26token%3Da8ab2e51-d1a2-468a-8222-fe764d43a5e6&width=768&dpr=4&quality=100&sign=3bde5f6f&sv=2) Enable entire app or a single domain [PreviousRequest / Response Previewer](https://docs.proxyman.com/basic-features/request-response-viewer) [NextBypass Proxy List](https://docs.proxyman.com/basic-features/bypass-proxy-list) Last updated 1 year ago * [1\. SSL Proxying List](https://docs.proxyman.com/basic-features/ssl-proxying#id-1.-ssl-proxying-list) * [Include List and Exclude List](https://docs.proxyman.com/basic-features/ssl-proxying#include-list-and-exclude-list) * [Apps / Domains / Wildcards](https://docs.proxyman.com/basic-features/ssl-proxying#apps-domains-wildcards) * [How to enable SSL Proxying on a particular domain or app](https://docs.proxyman.com/basic-features/ssl-proxying#how-to-enable-ssl-proxying-on-a-particular-domain-or-app) --- # Proxyman Proxy Helper Tool | Proxyman [](https://docs.proxyman.com/basic-features/proxy-setting-tool#proxyman-proxy-helper-tool) Proxyman Proxy Helper Tool -------------------------------------------------------------------------------------------------------------------------- By default, Proxyman will try overriding your HTTP/HTTPS Proxy Config by using the [networksetup](https://www.unix.com/man-page/osx/8/networksetup/) Command-Line. However, the **networksetup** is a bottleneck during starting or quitting the app. Proxyman offers a better solution: **Proxyman Proxy Helper Tool**, which is a [Privileged Helper Tool macOS](https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/AccessControl.html#//apple_ref/doc/uid/TP40002589-SW2) in order to override Network Proxy in **high performance**.[](https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/AccessControl.html#//apple_ref/doc/uid/TP40002589-SW2) You can notice the performance difference by starting the app with or without the Proxy Setting Tool. At the first launch, Proxyman will present the Popup to install the Proxyman Proxy Helper Tool. You can skip it and install it later in **Preference** -> **Advanced** Tab. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fz5NANcGQ78LwAeRx9Ykr%252FScreen%2520Shot%25202022-10-25%2520at%252010.11.32.png%3Falt%3Dmedia%26token%3D2a4d3dfd-ad0f-49db-95a4-54061acd74f8&width=768&dpr=4&quality=100&sign=95a170f2&sv=2) After the installation, you can find the Helper tool at `/Library/PrivilegedHelperTools/com.proxyman.NSProxy.HelperTool` If Proxyman releases a new update for Proxy Setting Helper Tool, it requires installation again. ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#require-user-permission-for-macos-13-ventura-or-later) Require user Permission for macOS 13 Ventura or later MacOS Ventura or later requires permission to work properly. To grant the permission, please follow the steps: 1. Open System Setting -> General -> Login Items 2. Find Proxyman and Switch ON ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F9nF5gGsEhfLDcQdRmHVl%252FScreenshot%25202022-11-20%2520at%252021.10.43.png%3Falt%3Dmedia%26token%3D0d5d3c92-41eb-4e05-966e-cd20fcd004a1&width=768&dpr=4&quality=100&sign=51eb22ed&sv=2) Grant permission to Proxyman Helper Tool ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#guest-or-non-admin-users) Guest or non-admin users If you're a guest or non-admin user, the `networksetup` CLI would fail and could not change the HTTP/HTTPS Proxy config until you install the Proxyman Proxy Helper Tool. Proxyman Proxy Helper Tool has privileged permission to override the proxy config for all kinds of users. We highly recommend installing the Proxyman Helper Tool if you're a guest or non-admin user to make the UX smoother. ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#uninstall-the-proxy-helper-tool) Uninstall the Proxy Helper Tool You can uninstall the Proxy Helper Tool in **Preference** -> **Advanced** Tab -> **Uninstall** Proxy Setting Tool or delete it directly at `/Library/PrivilegedHelperTools/com.proxyman.NSProxy.HelperTool` [](https://docs.proxyman.com/basic-features/proxy-setting-tool#install-the-proxy-helper-tool-by-command-line) Install the Proxy Helper Tool by command line ---------------------------------------------------------------------------------------------------------------------------------------------------------------- From macOS 4.12.0 or later, you can install the Helper Tool without GUI. [](https://docs.proxyman.com/basic-features/proxy-setting-tool#changelog) Changelog ---------------------------------------------------------------------------------------- [](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.6.0-proxyman-5.11.0-or-later) Version 1.6.0 (Proxyman 5.11.0 or later) ---------------------------------------------------------------------------------------------------------------------------------------------------- * Fixed: Proxyman can't restore the PAC URL when the app is closed ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.5.0) **Version 1.5.0** * Fix the Security Vulnerability that Proxyman v1.5.0 or older (2019) can connect to the Helper Tool (v1.4.0) and override the system proxy without user consent. This fix will add some constraints to verify the incoming Connection. (The caller must be notarized by Apple, signed by Proxyman LLC Certificate, enabled Library Validation, and enabled Force Hard flag). (CVE-2023-45732) 📣 Credit to **Scott Leitch** from NCC Group. ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.4.0) **Version 1.4.0** * Comply with new macOS 13 Ventura Requirements for Helper Tool * Show App Icon & App Name on the Login-Items ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FKocgcP9YjaxeEiDqxj33%252F197530484-0f897b6f-7905-4d65-bdc3-86d2fc8abebe.png%3Falt%3Dmedia%26token%3D256c80a1-6b41-4e48-844f-3e59f5146ae1&width=768&dpr=4&quality=100&sign=1792347a&sv=2) Display correct Proxyman icon and App Name On macOS Ventura, Helper Tools, Launch Daemon, and Launch Agent will be added to the Allow in the Background, even though Proxyman only runs on the Foreground. There is an ongoing discussion on [Twitter](https://twitter.com/siracusa/status/1583914093437935616?s=46&t=C1XB91IkDFkG697Ab8T9Dg) that macOS should fix it. After installing the 1.4.0, the Login Item might not be updated due to the cache layer of the Preference. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F7fUVML4Pct3p3YrRKm8a%252FScreen%2520Shot%25202022-10-25%2520at%252010.00.04.png%3Falt%3Dmedia%26token%3D2df5d008-0d39-4770-bce5-9e1e81af6b44&width=768&dpr=4&quality=100&sign=423dc11f&sv=2) Invalid Cache To fix it: 1. Open Terminal app -> Run: `sfltool resetbtm` 2. Restart the macOS 3. Done ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.3.0) **Version 1.3.0** * Remember and restore to your previous Proxy Setting. ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.2.0) Version 1.2.0: * Gracefully revert the HTTP Proxy Config if Proxyman is crashed. ### [](https://docs.proxyman.com/basic-features/proxy-setting-tool#troubleshooting) Troubleshooting If you've encountered this error when installing the helper Tool: The operation couldn’t be completed. (CFErrorDomainLaunchd error 9.) Please follow this solution: [https://cloud.tencent.com/developer/article/1816504](https://cloud.tencent.com/developer/article/1816504) Ref: [https://github.com/ProxymanApp/Proxyman/issues/1113](https://github.com/ProxymanApp/Proxyman/issues/1113) [PreviousAtlantis for iOS](https://docs.proxyman.com/atlantis/atlantis-for-ios) [NextRequest / Response Previewer](https://docs.proxyman.com/basic-features/request-response-viewer) Last updated 1 year ago * [Proxyman Proxy Helper Tool](https://docs.proxyman.com/basic-features/proxy-setting-tool#proxyman-proxy-helper-tool) * [Require user Permission for macOS 13 Ventura or later](https://docs.proxyman.com/basic-features/proxy-setting-tool#require-user-permission-for-macos-13-ventura-or-later) * [Guest or non-admin users](https://docs.proxyman.com/basic-features/proxy-setting-tool#guest-or-non-admin-users) * [Uninstall the Proxy Helper Tool](https://docs.proxyman.com/basic-features/proxy-setting-tool#uninstall-the-proxy-helper-tool) * [Install the Proxy Helper Tool by command line](https://docs.proxyman.com/basic-features/proxy-setting-tool#install-the-proxy-helper-tool-by-command-line) * [Changelog](https://docs.proxyman.com/basic-features/proxy-setting-tool#changelog) * [Version 1.6.0 (Proxyman 5.11.0 or later)](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.6.0-proxyman-5.11.0-or-later) * [Version 1.5.0](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.5.0) * [Version 1.4.0](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.4.0) * [Version 1.3.0](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.3.0) * [Version 1.2.0:](https://docs.proxyman.com/basic-features/proxy-setting-tool#version-1.2.0) * [Troubleshooting](https://docs.proxyman.com/basic-features/proxy-setting-tool#troubleshooting) Copy sudo /Applications/Proxyman.app/Contents/MacOS/proxyman --install-privileged-components --- # Bypass Proxy List | Proxyman [](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-1.-bypass-proxy-list) 1\. Bypass Proxy List ----------------------------------------------------------------------------------------------------------------- Bypass Proxy Lis helps developers to: * ✅ Define a list of domains that **never** go to the Proxyman Proxy Server * Ignore some noised traffic * Avoid SSL Error due to SSL Pinning when proxying to the Proxyman app. [](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-2.-how-to-use-it) 2\. How to use it? ---------------------------------------------------------------------------------------------------------- 1. Open the Bypass Proxy List in Tools Menu -> SSL Proxying List -> Bypass Proxy List 2. Enter your list of domains (separated by Comma, support simple wildcard) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FPXB4FYDowedIffXgRvi4%252FCleanShot%25202023-06-27%2520at%252008.28.08%25402x.jpg%3Falt%3Dmedia%26token%3D4de2503f-a327-45f7-ae0a-d1c87a5dcc6e&width=768&dpr=4&quality=100&sign=39b4c3b7&sv=2) Define a list of bypass proxy list [](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-3.-how-does-it-work) 3\. How does it work? ---------------------------------------------------------------------------------------------------------------- 1. As soon as the Proxyman app is launched, Proxyman will override your system Bypass Proxy List with Proxyman List. You can find the system setting in System Setting -> Wi-Fi -> Your Wifi hotspot -> Details… -> Proxy -> Bypass Proxy List 2. When the app is closed -> Proxyman will revert to your original setting. [PreviousSSL Proxying](https://docs.proxyman.com/basic-features/ssl-proxying) [NextImport / Export](https://docs.proxyman.com/basic-features/import-export) Last updated 2 years ago * [1\. Bypass Proxy List](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-1.-bypass-proxy-list) * [2\. How to use it?](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-2.-how-to-use-it) * [3\. How does it work?](https://docs.proxyman.com/basic-features/bypass-proxy-list#id-3.-how-does-it-work) --- # Horizontal/Vertical/Window Layout | Proxyman It's possible to change the UI layout of the Request and Response Panels to optimize your space to render the content. * **Detachable Window**: Bring Request and Response to a seperated Windows * **Vertical**: Request and Response Panel is in Vertical Mode * **Horizontal**: Request and Response Panel is in Horizontal Mode ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kgZfgX_GZuzjAbAQT%252F-M5khQdFnInkcHQX-Ci_%252F02.png%3Falt%3Dmedia%26token%3Df6ff8a61-f333-4b80-91d8-24c98d3bd60d&width=768&dpr=4&quality=100&sign=b92a3095&sv=2) Shortcut Description ⇧**⌘ + Up Arrow** Detachable Window ⇧**⌘ + Left Arrow** Toggle Left Panel ⇧**⌘ + Right Arrow** Vertical Mode ⇧**⌘ + Down Arrow** Horizontal Mode [PreviousMultiple Tabs](https://docs.proxyman.com/basic-features/multiple-tabs) [NextCopy as](https://docs.proxyman.com/basic-features/copy-as) Last updated 5 years ago --- # Copy as | Proxyman Proxyman offers various Copy functions from Right-click menu Context: * **Copy URL**: Copy URL of the selected flow. * **Copy cURL**: Generate cURL command, which includes headers, cookies, query, and body. * **Copy Cell Value**: Copy a string value of the right-clicked cell * **Copy as**: Cookies, Header, Body from Request and Response. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mi5Obfjpop55gBQYfpT%252F-Mi5OpUlB_gDXH3xmEtf%252FScreen%2520Shot%25202021-08-27%2520at%252013.58.35.png%3Falt%3Dmedia%26token%3D5736a09a-12c5-41ba-9190-1d9e37f8002e&width=768&dpr=4&quality=100&sign=98b25826&sv=2) Copy selected requests You can opt-out the `--proxy` flag from cURL command from Preference -> Advanced -> Uncheck "Include HTTP Proxy config in cURL" **⌘C:** Copy the URL ⇧**⌘C:** Copy as **cURL** [PreviousHorizontal/Vertical/Window Layout](https://docs.proxyman.com/basic-features/horizontal-vertical-layout) [NextCustom Previewer Tab](https://docs.proxyman.com/basic-features/custom-previewer-tab) Last updated 4 years ago --- # Filter JSON Response | Proxyman You can quickly filter the JSON Response with the following approach: ### [](https://docs.proxyman.com/basic-features/filter-json-response#id-1.-filter-on-json-previewer) 1\. Filter on JSON Previewer * **⌘F** to trigger the Filter * Support Regex * Support Jump Next ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MIxxav7aI2mJ6cNqZrq%252F-MIxxuqk-fVjjHSX9dcr%252FScreen_Shot_2020-10-06_at_19_47_47.png%3Falt%3Dmedia%26token%3Dad576252-9751-43cd-87a9-d3ae06fb71f2&width=768&dpr=4&quality=100&sign=3a4bac79&sv=2) ### [](https://docs.proxyman.com/basic-features/filter-json-response#id-2.-jsonpath) 2\. JSONPath Proxyman supports [JSONPath](https://github.com/json-path/JsonPath#path-examples) for quickly querying the data in JSON Document. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MfzvKgHrrVOB_SexW44%252F-MfzvapgK9JWsYTJn6dt%252FScreen_Shot_2021-08-01_at_10_29_23.png%3Falt%3Dmedia%26token%3D8aedc2a1-3dad-478d-8c5e-442e2caf0a2c&width=768&dpr=4&quality=100&sign=6dd9ed9a&sv=2) Please check out JSONPath documentation. [JSONPath](https://docs.proxyman.com/basic-features/jsonpaths) ### [](https://docs.proxyman.com/basic-features/filter-json-response#id-3.-keypaths) 3\. KeyPaths * Support Key Paths filter on JSON Tree View mode * Search specifically the children keys Syntax example: * **posts\[1\].maker\[2\]**: Go from Root -> Get item at index 1 of the Posts array -> Get the index 3 items of Makers array and filter out * **users.name**: Get the name value of the "users" dictionary ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MIxxav7aI2mJ6cNqZrq%252F-MIxy5sNhUXUbfvyiijX%252FScreen_Shot_2020-10-06_at_19_30_35.png%3Falt%3Dmedia%26token%3De80edbe7-da3d-497b-acfa-130944b57daf&width=768&dpr=4&quality=100&sign=31900698&sv=2) ### [](https://docs.proxyman.com/basic-features/filter-json-response#id-4.-all-keys-or-all-values) 4\. All Keys or All Values * Show all nodes that the key or value contains the search text ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MIxyS6P3poAOWR9J7RQ%252F-MIxzB4KkDq13VJqL13z%252FScreen%2520Shot%25202020-10-06%2520at%252014.21.26.png%3Falt%3Dmedia%26token%3D7a3bef8a-0f16-4d52-ba84-8bc1632edbe0&width=768&dpr=4&quality=100&sign=bcca4f19&sv=2) [PreviousRegex (Regular Expression)](https://docs.proxyman.com/basic-features/regex) [NextHighlight by Color and Add Comment](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment) Last updated 4 years ago * [1\. Filter on JSON Previewer](https://docs.proxyman.com/basic-features/filter-json-response#id-1.-filter-on-json-previewer) * [2\. JSONPath](https://docs.proxyman.com/basic-features/filter-json-response#id-2.-jsonpath) * [3\. KeyPaths](https://docs.proxyman.com/basic-features/filter-json-response#id-3.-keypaths) * [4\. All Keys or All Values](https://docs.proxyman.com/basic-features/filter-json-response#id-4.-all-keys-or-all-values) --- # Content Filter | Proxyman Proxyman offers the Primary and Secondary Filters to quickly filter out the Requests or Responses you're looking for. **⌘F: Open** Filter Bar quickly **ESC** to close the Filter Bar ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MWPWuYgIo6i6gTJSUIl%252F-MWPX5yS4YA7CuixaXhZ%252F111282473-9e95ab00-8670-11eb-8d05-6e2c641a82bb.png%3Falt%3Dmedia%26token%3D79d34d92-3eb8-4e52-b406-140085e30c93&width=768&dpr=4&quality=100&sign=f5e362ce&sv=2) Multiple Filters Selection (Hold CMD key and Click) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MWPWuYgIo6i6gTJSUIl%252F-MWPYdeG67U8YQg8xfyU%252FScreen_Shot_2021-03-22_at_22_29_07.png%3Falt%3Dmedia%26token%3Debd757b9-16c6-4362-9c50-7825716bc1ee&width=768&dpr=4&quality=100&sign=9bf27949&sv=2) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MMIpB1h4e4aRQJKKSDY%252F-MMIpKKAFLhXu7K35zgZ%252FCleanShot%25202020-11-17%2520at%252008.31.48%25402x.png%3Falt%3Dmedia%26token%3D8aeb9103-cac0-42f0-b01d-062bb9f0b706&width=768&dpr=4&quality=100&sign=188b1e86&sv=2) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MMIpB1h4e4aRQJKKSDY%252F-MMIpSwCM9NRjZsf8y-r%252FCleanShot%25202020-11-17%2520at%252008.31.52%25402x.png%3Falt%3Dmedia%26token%3D57846212-6b13-4b14-bb05-480b4ad6b915&width=768&dpr=4&quality=100&sign=bfe6f6fa&sv=2) ### [](https://docs.proxyman.com/basic-features/content-filter#primary-filter) Primary Filter: Filter Description All All Requests and Responses HTTP Only HTTP HTTPS Only HTTPS WebSocket Only WebSocket and Secure WebSocket JSON Content-Type is application/json or JSON contents XML Only XML Form Only Form Body in Request / Response JS Only JavaScript content CSS Only CSS content Document Documents content: HTML, ... Media Image contents: PNG, JPG, GIF, ... Other Other contents which no matching with the above. Font All font family GraphQL GraphQL Request (has suffix `/graphQL`) ### [](https://docs.proxyman.com/basic-features/content-filter#status-filters) Status Filters: Filter Description 1xx Status Code from 100-200 2xx Status Code from 200-300 3xx Status Code from 300-400 4xx Status Code from 400-500 5xx Status Code from 500 Hold CMD key and Click to select multiple Types ### [](https://docs.proxyman.com/basic-features/content-filter#secondary-filter) Secondary Filter: #### [](https://docs.proxyman.com/basic-features/content-filter#content) Content: * URL * Query String * Request Header * Response Header * Method * Status Code * Comment * Color #### [](https://docs.proxyman.com/basic-features/content-filter#matching) Matching: * Contains * Not Contains * Start With * End With * Equal * Not Equal * Regex ### [](https://docs.proxyman.com/basic-features/content-filter#header-query-auth-form-filter) Header, Query, Auth, Form Filter From Proxyman 2.34.0+, we can quickly filter the Header, Query, Auth, Form from the selected Request and Response. 1. Click on the view (e.g. Header of the Request) 2. Use Hotkey: CMD + F or Right-Click -> Show Filter to open the filter ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FGPUIjUQipzWKwvRAl8bq%252FScreen_Shot_2021-10-14_at_22_59_20.png%3Falt%3Dmedia%26token%3D05a7c277-e8b5-4a76-8a1f-eaeb5f1de1a2&width=768&dpr=4&quality=100&sign=bcfb84b6&sv=2) Filter Header, Query, Auth Form content [PreviousImport / Export](https://docs.proxyman.com/basic-features/import-export) [NextMultiple Tabs](https://docs.proxyman.com/basic-features/multiple-tabs) Last updated 1 year ago * [Primary Filter:](https://docs.proxyman.com/basic-features/content-filter#primary-filter) * [Status Filters:](https://docs.proxyman.com/basic-features/content-filter#status-filters) * [Secondary Filter:](https://docs.proxyman.com/basic-features/content-filter#secondary-filter) * [Header, Query, Auth, Form Filter](https://docs.proxyman.com/basic-features/content-filter#header-query-auth-form-filter) --- # Request / Response Previewer | Proxyman After installing the [Certificate](https://docs.proxyman.com/debug-devices/macos) and enable [HTTP Response](https://docs.proxyman.com/basic-features/ssl-proxying) on domains or clients, your network traffic would show up immediately inside the Proxyman window, separated into three main areas: * The Source List on the left panel * The Flow List on the middle panel * The Flow Content on the right panel ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5k_8UnCbVU-a0Ksr1u%252F-M5kcU0AOTr014EyiUPT%252F01.png%3Falt%3Dmedia%26token%3D9bce65ca-8c22-433e-902b-a309977ba9e2&width=768&dpr=4&quality=100&sign=ba1e3586&sv=2) ### [](https://docs.proxyman.com/basic-features/request-response-viewer#body-content-previewer) Body Content Previewer Depend on what the content of the Request or Response is: Proxyman will automatically show in separate tabs: * **Header**: All headers (key-value table) * **Cookies**: **Cookie** key in the header * **Set-Cookie** for the Set-Cookie Header in the Response * **Auth**: **Authentication** key in the header * **Body**: The body of the message: Proxyman automatically formats and beautifies the body content depends on the **Content-Type,** such as JSON, PNG, GIF, Raw Data, ... * **Query**: If the request has a query, all queries are presented. * **Raw**: The RAW HTTP message. * Protobuf Message * MessagePack * Multipart/form-data ### [](https://docs.proxyman.com/basic-features/request-response-viewer#custom-previewer-tab) Custom Previewer Tab It's possible to customize which Previewer Tab you would like to see * Custom tabs will persistent on the Request/Response Panel * Attempt to decode and beautify the content [Custom Previewer Tab](https://docs.proxyman.com/basic-features/custom-previewer-tab) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Md01ISVIn5N9gt1kT_C%252F-Md01URMXqWeaY7AsRN1%252FScreen%2520Shot%25202021-06-25%2520at%252009.39.55.png%3Falt%3Dmedia%26token%3D0e66b6bc-cb2c-49bd-860f-ca056224914d&width=768&dpr=4&quality=100&sign=28654dab&sv=2) Custom Previewer Tab ### [](https://docs.proxyman.com/basic-features/request-response-viewer#layout-mode) Layout mode There are two way to order the Request / Response Panel: Vertical or Horizontal layout ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LmSUd_OpdDpUrjpkX-6%252F-LmSVFKeUuNPwG6HpV-Y%252Fhttp_response_vertical.png%3Falt%3Dmedia%26token%3Dd6d53954-50df-450a-af52-af459f5661c6&width=768&dpr=4&quality=100&sign=b3ebcfe2&sv=2) Request/ Response Panel ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5k_8UnCbVU-a0Ksr1u%252F-M5kdG7Ych9_JbU82Mm7%252FScreen%2520Shot%25202020-04-25%2520at%252016.21.34.png%3Falt%3Dmedia%26token%3D628d3d65-a04b-4293-8736-694b1eb81a81&width=768&dpr=4&quality=100&sign=9aa25544&sv=2) Previewer in Horizontal Layout ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5k_8UnCbVU-a0Ksr1u%252F-M5kdOeUJerSyTDQLo45%252FScreen%2520Shot%25202020-04-25%2520at%252016.21.55.png%3Falt%3Dmedia%26token%3D82117838-42e8-47f1-b9de-30291225395e&width=768&dpr=4&quality=100&sign=b8614116&sv=2) Previewer in Vertical layout ### [](https://docs.proxyman.com/basic-features/request-response-viewer#customize-workspace) Customize Workspace You can use custom layout buttons on the top right corner of the app to display content as your preference 1. Collapse/Expand Source List Panel 2. Open Request/ Response Panel in new window 3. Display Request/Response Panel in Horizontal layout 4. Display Request/Response Panel in Vertical layout ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kgZfgX_GZuzjAbAQT%252F-M5khQdFnInkcHQX-Ci_%252F02.png%3Falt%3Dmedia%26token%3Df6ff8a61-f333-4b80-91d8-24c98d3bd60d&width=768&dpr=4&quality=100&sign=b92a3095&sv=2) ### [](https://docs.proxyman.com/basic-features/request-response-viewer#shortcuts) Shortcuts All sections are support **Copy (⌘C)** and multiple selections ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LmSUd_OpdDpUrjpkX-6%252F-LmSXLCTr7qnOJvQv4rH%252FScreen%2520Shot%25202019-08-17%2520at%252010.04.36.png%3Falt%3Dmedia%26token%3D50f23788-9945-40f8-b41b-df178df72e2c&width=768&dpr=4&quality=100&sign=86990f5a&sv=2) Read more at our [Proxyman Keyboard Shortcuts](https://proxyman.io/blog/2019/08/Proxyman-keyboard-shortcuts.html) blog ### [](https://docs.proxyman.com/basic-features/request-response-viewer#body-previewer) **Body Previewer** Body previewer automatically beautifies the content as well as offering handy minor features: * **Tree View**: Represent the JSON in Tree View mode * **Hex**: Show the body in Hex format * **Export only body**: Able to export your body content to file. Suitable for Raw Data or binary data * **Open With**: You can open the Body content with your favorite Editor. **Sublime Text** is mime 😍 ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-LmSXcp2h6D33De4N0wo%252F-LmSXeS1vqgVfomWgdCG%252Fbody_previewer.png%3Falt%3Dmedia%26token%3D8753aa59-aaf1-4000-aed2-54ce2a45b709&width=768&dpr=4&quality=100&sign=989221ba&sv=2) ### [](https://docs.proxyman.com/basic-features/request-response-viewer#json-tree-view-mode) JSON Tree View mode Proxyman supports native JSON Tree View mode, which displays a JSON Body. It allows the developer to: * Search JSON by [JSON Path](https://docs.proxyman.com/basic-features/jsonpaths) * Copy JSON Node like Google Developer Tool does. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FxD1Lpl6PBL1gU4GwVpWo%252FScreen%2520Shot%25202021-10-15%2520at%252016.14.44.png%3Falt%3Dmedia%26token%3Db22d8a79-401a-4609-b17b-adca36609cd4&width=768&dpr=4&quality=100&sign=46698bbc&sv=2) [PreviousProxyman Proxy Helper Tool](https://docs.proxyman.com/basic-features/proxy-setting-tool) [NextSSL Proxying](https://docs.proxyman.com/basic-features/ssl-proxying) Last updated 1 year ago * [Body Content Previewer](https://docs.proxyman.com/basic-features/request-response-viewer#body-content-previewer) * [Custom Previewer Tab](https://docs.proxyman.com/basic-features/request-response-viewer#custom-previewer-tab) * [Layout mode](https://docs.proxyman.com/basic-features/request-response-viewer#layout-mode) * [Customize Workspace](https://docs.proxyman.com/basic-features/request-response-viewer#customize-workspace) * [Shortcuts](https://docs.proxyman.com/basic-features/request-response-viewer#shortcuts) * [Body Previewer](https://docs.proxyman.com/basic-features/request-response-viewer#body-previewer) * [JSON Tree View mode](https://docs.proxyman.com/basic-features/request-response-viewer#json-tree-view-mode) --- # Custom Previewer Tab | Proxyman [](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-1.-whats-it) 1\. What's it? ---------------------------------------------------------------------------------------------------- You can customize the Custom Previewer Tabs, which always render one format at once time. This handy tool might help you to fix the following issues: * Format the BODY as **JSON**, but the Content-Type isn't `application/json` * Format the body as **Protobuf**, but the Content-Type isn't `application/x-protobuf` * Render HTML Page on the Web View * **Beautify** the minified files (HTML, CSS, JS) * Multipart/form-data * Try to format the body as the selected type regardless of the `Content-Type` * Convert MessagePack (msgpack) to JSON * [Code Generator](https://docs.proxyman.com/advanced-features/code-generator) to Swift, Node, Javascript, cURL, ... * GraphQL Query Prettier ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FQS5DmASN352ZCEhDybUH%252FScreenshot%25202024-06-27%2520at%252015.01.33.png%3Falt%3Dmedia%26token%3Db852b3ea-d443-41c7-98f7-7d43e2c29b1e&width=768&dpr=4&quality=100&sign=76e1700a&sv=2) Select Custom Tabs for Request / Response Panel The selected custom tabs will be appended to the right side of the Request or Response view ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F8Si69osmNYVI79U5igeE%252FCleanShot%25202024-06-27%2520at%252015.04.11%25402x.jpg%3Falt%3Dmedia%26token%3D24b4d6d6-546f-4636-bec9-4236b3886131&width=768&dpr=4&quality=100&sign=6cbd8a5e&sv=2) Display Custom Tabs [](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-2.-how-to-use-it) 2\. How to use it? ------------------------------------------------------------------------------------------------------------- You can either access the Custom Previewer Window: 1. Click on the "+" button on the Request/Response bar or (from the Tools Menu -> Custom Previewer Tab...) 2. Click the checkbox to show/hide your custom Tab 3. The New Tab will appear on the Request or Response Panel ✅ ### [](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-2.1-server-sent-events-and-openai-tabs) 2.1 Server-Sent Events and OpenAI Tabs From Proxyman 5.22.0 or later, Proxyman supports * Server-Sent Events from OpenAI endpoints: Auto prettify the inline JSON of the data event * OpenAI Tab: Auto accumulate the content and show the final result, similar to the output of your chat view. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Ff91nElaK93AiZfFIA9F5%252F1.jpg%3Falt%3Dmedia%26token%3D70d6c8e1-96a5-4845-9248-8a33197381b6&width=768&dpr=4&quality=100&sign=548fbe&sv=2) Capture OpenAI Endpoints [](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-3.-advance-create-a-custom-tab-with-the-scripting-tool) 3\. ⚡️ Advance: Create a custom Tab with the Scripting Tool -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * ✅ Show your own data on your tab * It is useful if you want to decode your Body or display a partial body to your custom tab ### [](https://docs.proxyman.com/basic-features/custom-previewer-tab#how-to-use) How to use: 1. the Click on the "+" button on the Request/Response bar or (from the Tools Menu -> Custom Previewer Tab...) 2. Select the \`Add Custom Tab\` button 3. Select the Request / Response panel and set a name for your tab ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F5n0TQEJYkZsvnLWgAFAk%252FScreenshot%25202024-06-27%2520at%252015.01.51.png%3Falt%3Dmedia%26token%3Dab0a5dc7-09d7-4347-810d-c896df4ee25b&width=768&dpr=4&quality=100&sign=2206982d&sv=2) 1. Click on the "..." button to show the Javascript Code ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F126T05MtmP31imNqEufD%252F343035426-24d2901d-10e3-4fa0-a472-579df7385358.jpg%3Falt%3Dmedia%26token%3D63eba6be-1927-4355-9c0b-8be2cf07b91b&width=768&dpr=4&quality=100&sign=3ea3aa8&sv=2) Show the Javascript Code 1. Tools -> Scripting -> Add new Rule -> Use this code to display your own data ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F53QsgUDH9BoykmkyvvJB%252F343035431-1a336092-5c50-4e23-afbb-9a41f9679bb9.jpg%3Falt%3Dmedia%26token%3D456de21a-499a-44c8-99d5-2bd2245e7722&width=768&dpr=4&quality=100&sign=7fbd8fd0&sv=2) Write your code to display data 1. Done ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FQluL2BFeo0yziUnxuWGC%252F343035436-dc7e6346-9ac6-4601-b07a-8294de2c4a02.jpg%3Falt%3Dmedia%26token%3D513c916e-4071-4881-b84c-672fa2ef6664&width=768&dpr=4&quality=100&sign=11f9dfd0&sv=2) Display your data on a new tab [](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-4.-examples) 4\. Examples -------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/basic-features/custom-previewer-tab#force-render-json-treeview) Force render JSON TreeView Proxyman supports JSON Tree View for better visualization ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MNNUVf__D4R6oOlrvwH%252F-MNNUbxHWsWRMr_boEpI%252FJSON.png%3Falt%3Dmedia%26token%3D6708b360-f0b2-449d-9e5e-3baa95fdde44&width=768&dpr=4&quality=100&sign=da5986a8&sv=2) We can show/hide a certain column by Right-Click on the Column Header ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MNNUVf__D4R6oOlrvwH%252F-MNNUzgYXIXmb4RYSGpL%252FJSON_Col.png%3Falt%3Dmedia%26token%3Dea0ef6f3-1e6c-4c11-bf2f-eb984ea18990&width=768&dpr=4&quality=100&sign=bafce2fa&sv=2) #### [](https://docs.proxyman.com/basic-features/custom-previewer-tab#force-render-html-page) Force render HTML Page ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MCAH07dTC9-sFn_jhCs%252F-MCAKf7af-qiy4s1Q-Eb%252FScreen_Shot_2020-07-14_at_10_19_51.png%3Falt%3Dmedia%26token%3Ddb01c567-18aa-4db9-a3a7-123587a28bef&width=768&dpr=4&quality=100&sign=faacc136&sv=2) #### [](https://docs.proxyman.com/basic-features/custom-previewer-tab#beautify-the-javascript-files) Beautify the Javascript files ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MCAH07dTC9-sFn_jhCs%252F-MCAKqYypND8C0vo8X5N%252FScreen_Shot_2020-07-12_at_08_40_52.png%3Falt%3Dmedia%26token%3Dc931a177-5aab-478e-9d7b-2daf53ed8076&width=768&dpr=4&quality=100&sign=eae2ebbf&sv=2) Beautify JS Body [PreviousCopy as](https://docs.proxyman.com/basic-features/copy-as) [NextCustom Header Column](https://docs.proxyman.com/basic-features/custom-header-column) Last updated 6 months ago * [1\. What's it?](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-1.-whats-it) * [2\. How to use it?](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-2.-how-to-use-it) * [2.1 Server-Sent Events and OpenAI Tabs](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-2.1-server-sent-events-and-openai-tabs) * [3\. ⚡️ Advance: Create a custom Tab with the Scripting Tool](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-3.-advance-create-a-custom-tab-with-the-scripting-tool) * [How to use:](https://docs.proxyman.com/basic-features/custom-previewer-tab#how-to-use) * [4\. Examples](https://docs.proxyman.com/basic-features/custom-previewer-tab#id-4.-examples) --- # Multipart Form-Data Previewer | Proxyman [](https://docs.proxyman.com/basic-features/multipart-form-data-previewer#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------------------- From Proxyman 2.27.0+, Proxyman displays a multipart/form-data in a nice table view. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MacjaS9sQSw-8XELMKJ%252F-MackOx1UhMiBd_KrVXq%252F119465504-ea9a5580-bd6d-11eb-9d4d-3725a37f09ec.png%3Falt%3Dmedia%26token%3Da6f2c849-ad11-4f37-aba3-76f723418973&width=768&dpr=4&quality=100&sign=3692a109&sv=2) multipart/form-data ### [](https://docs.proxyman.com/basic-features/multipart-form-data-previewer#id-2.-benefit) 2\. Benefit * Display each separate part of the multipart/form-data body * Able to export the data [PreviousImport / Export Settings](https://docs.proxyman.com/basic-features/import-export-settings) [NextJSONPath](https://docs.proxyman.com/basic-features/jsonpaths) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/multipart-form-data-previewer#id-1.-whats-it) * [2\. Benefit](https://docs.proxyman.com/basic-features/multipart-form-data-previewer#id-2.-benefit) --- # JQ | Proxyman [](https://docs.proxyman.com/basic-features/jq#id-1.-whats-it) 1\. What's it? ---------------------------------------------------------------------------------- * jq is like sed for JSON data - you can use it to slice and filter and map and transform structured data with the same ease that sed, awk, grep and friends let you play with text. * Available on Proxyman 5.24.0 or later * jq Filter is only available in the JSON Tab. On the Request/Response Tool bar -> Click on the + button -> Select JSON in the Request or Response. A new JSON Tab will be added. ![use jq to filter JSON Body](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEdE7E1m2tEj7mNEiB4Tf%252F481323588-7ae7cb0a-ca66-4199-a16d-e171960a9814.jpg%3Falt%3Dmedia%26token%3Da2dacd3b-74ec-4853-aa3b-ec19464fc6a3&width=768&dpr=4&quality=100&sign=a5d728ad&sv=2) [](https://docs.proxyman.com/basic-features/jq#id-2.-syntax) 2\. Syntax ---------------------------------------------------------------------------- * Please refer the [jq Manual Page](https://jqlang.org/manual/#basic-filters) to understand how to use the jq [PreviousJSONPath](https://docs.proxyman.com/basic-features/jsonpaths) [NextCustomize Toolbar](https://docs.proxyman.com/basic-features/customize-toolbar) Last updated 3 months ago * [1\. What's it?](https://docs.proxyman.com/basic-features/jq#id-1.-whats-it) * [2\. Syntax](https://docs.proxyman.com/basic-features/jq#id-2.-syntax) --- # Highlight by Color and Add Comment | Proxyman [](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------------------------ You can * **Highlight** a single or group of Request with pre-defined **colors** (Red, Yellow, Green, Blue, Purple, Gray) * Add ~Strikethrough~ * Add Comment * Filter by Color or Comment (CMD+F) * Export with Color and Comment (Only Support Proxyma Log format) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MLqzpCGC7fhsZP0KuAM%252F-MLr0L3vQE6h4Y24t9Ut%252Fhighligh_by_colors.png%3Falt%3Dmedia%26token%3D2a440e68-7d9f-4c58-82ad-0177079f4de9&width=768&dpr=4&quality=100&sign=90b80d2d&sv=2) [](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment#id-2.-benefit) 2\. Benefit? --------------------------------------------------------------------------------------------------------------- * Easily mark your failed, succeed request/response with eye-catching colors * Add Comments during development. * Share it with your colleague (Color and Comment) * Easily filter out the request/response by Color or Commend 3\. Shortcuts? Proxyman supports many shortcuts to help you highlight or add comments quickly. Shotcut Purpose ⌘1 Highlight with Red Color ⌘2 Highlight with Yellow Color ⌘3 Highlight with Green Color ⌘4 Highlight with Blue Color ⌘5 Highlight with Purple Color ⌘6 Highlight with Gray Color ⌘0 Reset All ⌘/ Add Strikethrough style ⌘M Add Comment to selected requests ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MLqzpCGC7fhsZP0KuAM%252F-MLr1rRQmtk5bQSaoSJ2%252Fshortcut.png%3Falt%3Dmedia%26token%3D6bec325c-eb29-4ec8-b966-c890257f76f6&width=768&dpr=4&quality=100&sign=1444e949&sv=2) [PreviousFilter JSON Response](https://docs.proxyman.com/basic-features/filter-json-response) [NextImport / Export Settings](https://docs.proxyman.com/basic-features/import-export-settings) Last updated 5 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment#id-1.-whats-it) * [2\. Benefit?](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment#id-2.-benefit) --- # Localization | Proxyman ### [](https://docs.proxyman.com/basic-features/localization#id-1.-whats-it) 1\. What's it? Proxyman supports localization, which affect all UI of the app. The following list is a current langauges: * English (Default) * Chinese - Simplified ### [](https://docs.proxyman.com/basic-features/localization#id-2.-how-to-override-the-app-language) 2\. How to override the app language? By default, Proxyman will respect the current System Language. To override it, please: * System Preference -> Language & Region -> Select Apps Tab -> Add Proxyman app -> Click the + button -> Select Proxyman app and English. ### [](https://docs.proxyman.com/basic-features/localization#id-3.-improve-localization) 3\. Improve localization? If you've encountered a poor translation in your languages, please help us a hand at [https://github.com/ProxymanApp/proxyman-localization](https://github.com/ProxymanApp/proxyman-localization) [PreviousCustomize Toolbar](https://docs.proxyman.com/basic-features/customize-toolbar) [NextQuick Preview](https://docs.proxyman.com/basic-features/quick-preview) Last updated 3 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/localization#id-1.-whats-it) * [2\. How to override the app language?](https://docs.proxyman.com/basic-features/localization#id-2.-how-to-override-the-app-language) * [3\. Improve localization?](https://docs.proxyman.com/basic-features/localization#id-3.-improve-localization) --- # Quick Preview | Proxyman [](https://docs.proxyman.com/basic-features/quick-preview#id-1.-what-is-it) 1\. What is it? ------------------------------------------------------------------------------------------------ The quick view can help you to quick preview the selected in any place of the app. * Beautify inline JSON * Decode Base64 String * Display key&value as a table * Decode JWT Token ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEvRMopxPmFDnYysOlZ4w%252FCleanShot%25202023-03-22%2520at%252015.26.10%25402x.jpg%3Falt%3Dmedia%26token%3D912ab226-8ed0-4616-bc9b-4677e6ba5465&width=768&dpr=4&quality=100&sign=186758fe&sv=2) [](https://docs.proxyman.com/basic-features/quick-preview#id-2.-how-to-use-it) 2\. How to use it? ------------------------------------------------------------------------------------------------------ 1. Select any text on the app, e.g Body Tab, Raw Tab, etc 2. Right Click to show the menu context 3. Select Text Selection View as Mode ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FAXE2yKuaUrzEXZyANZ9y%252FScreenshot%25202023-03-22%2520at%252015.19.32.jpg%3Falt%3Dmedia%26token%3D58b39c89-50e4-4f98-a37f-047bc622a281&width=768&dpr=4&quality=100&sign=178c0cfd&sv=2) Quick View on the Raw Tab ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FYUAjfacWA13e2rHYRRQt%252FScreenshot%25202023-03-22%2520at%252015.19.59.jpg%3Falt%3Dmedia%26token%3D5ec93819-f94c-4bac-a055-c70171e9fdb6&width=768&dpr=4&quality=100&sign=371a3e84&sv=2) Quick View on Body Tab [PreviousLocalization](https://docs.proxyman.com/basic-features/localization) [NextCommand Palette](https://docs.proxyman.com/basic-features/command-palette) Last updated 2 years ago * [1\. What is it?](https://docs.proxyman.com/basic-features/quick-preview#id-1.-what-is-it) * [2\. How to use it?](https://docs.proxyman.com/basic-features/quick-preview#id-2.-how-to-use-it) --- # Regex (Regular Expression) | Proxyman [](https://docs.proxyman.com/basic-features/regex#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------- From the 2.3.0 version, Proxyman supports **Wildcard** and **Regex** (Match a whole word) when you define matching rules for all available tools: * Map Local * Map Remote * Block & Allow List * Breakpoints * Protocol Buffers (Protobuf) * Reverse Proxy * Network Throttling * ... It's a handy tool to help you exactly define which requests should trigger the tool. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MC_ByEFfDEzSzI1C7Zz%252F-MC_DZnVSPfddI4tnDir%252FScreen%2520Shot%25202020-07-19%2520at%252010.17.34.png%3Falt%3Dmedia%26token%3Df468fd18-608d-4841-9c4b-fa47236b4f24&width=768&dpr=4&quality=100&sign=abb8c04e&sv=2) Match a request by Wildcard or Regex [](https://docs.proxyman.com/basic-features/regex#id-2.-test-your-url-new-feature) 2\. Test your URL (New feature 🎉) -------------------------------------------------------------------------------------------------------------------------- From Proxyman v4.8.0, you can quickly test your Rule (Wildcard / Regex). * You can quickly test & play around with your Wildcard/Regex * **Save time**: You don't need to go back and forth to check your URL. * Less error-prone. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FCV72j0RaTiGL2BkCUv0l%252FCleanShot%25202023-05-09%2520at%252009.54.22%25402x.jpg%3Falt%3Dmedia%26token%3Dbf4a216a-476b-4cb1-acbd-17f6db58919c&width=768&dpr=4&quality=100&sign=81b3e9a3&sv=2) #### [](https://docs.proxyman.com/basic-features/regex#how-to-use-it) How to use it? 1. Open any debugging tools (Breakpoint, Map Local, ...) -> Create a new rule 2. Click on the "Test your Rule" underline button -> New Window is opened. 3. Add your Rule and URLs you'd like to check * ✅ Matched: Your URL is matched with your rule. * ⚠️ Not Matched: Your URL doesn't match your rule. You might rewrite your wildcard/Regex rule. [](https://docs.proxyman.com/basic-features/regex#id-3.-wildcard) 3\. Wildcard ----------------------------------------------------------------------------------- Proxyman supports simple Wildcard characters, which include `*` and `?` Wildcard Purpose `*` The asterisk in a wildcard matches any character zero or more times. `?` A question mark matches a single character once. For instance: * http://proxyman.io/v1/\* * https://myserver.com/v?/\* [](https://docs.proxyman.com/basic-features/regex#id-4.-regex) 4\. Regex ----------------------------------------------------------------------------- Proxyman also supports Regex. * Make sure your regex is **matching a whole URL**. * **Partial Matching** is considered as not matching. * Make sure you **escape characters** properly: Splash (/), full-stop (.), etc. For instance: Regex Matched URL Examples https:\\/\\/proxyman\\.io.\* https://proxyman.io https://proxyman.io/v1/data?id=123 https://proxyman.io/pricing ^(http|https):\\/\\/www\\.google\\.com.\* http://www.google.com http://www.google.com/user?id=proxyman https://www.google.com ^(http|https)?:\\/\\/www\\.google\\.com\\/v\[0-9\]?\\/build\\?query=proxyman http://www.google.com/v1/build?query=proxyman www.google.com/v2/build?query=proxyman You can use [https://regex101.com/](https://regex101.com/) to verify your Regex that matches the whole text. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FNUJWU7lPdcdGjhR9f6ye%252F1.png%3Falt%3Dmedia%26token%3D681d1a5d-e0a8-42a1-8aa5-8df6fb2adb4e&width=768&dpr=4&quality=100&sign=8b0737f2&sv=2) Make sure your Regex matches whole words Please check the [**Regex** **Metacharacters, Operator and Flag**](https://developer.apple.com/documentation/foundation/nsregularexpression#1965590) from Apple Developer Documents to know which one is supported. Check [https://regex101.com](https://regex101.com/) and make sure your Regex is full-matching with the given URL * Select Regex when creating rules ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MC_ByEFfDEzSzI1C7Zz%252F-MC_GHgRHPy8AUEjilO4%252FScreen%2520Shot%25202020-07-19%2520at%252010.17.44.png%3Falt%3Dmedia%26token%3Dc380ce78-9b3f-4ee8-be9e-6e6ee31d3e76&width=768&dpr=4&quality=100&sign=d9e0640b&sv=2) With regular expressions the meaning of `?` and `*` is different from that of wildcards. The equivalent of wildcard `?` is the regex `.` and the equivalent of wildcard `*` is the regex `.*` [PreviousCustom Header Column](https://docs.proxyman.com/basic-features/custom-header-column) [NextFilter JSON Response](https://docs.proxyman.com/basic-features/filter-json-response) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/regex#id-1.-whats-it) * [2\. Test your URL (New feature 🎉)](https://docs.proxyman.com/basic-features/regex#id-2.-test-your-url-new-feature) * [3\. Wildcard](https://docs.proxyman.com/basic-features/regex#id-3.-wildcard) * [4\. Regex](https://docs.proxyman.com/basic-features/regex#id-4.-regex) --- # Custom Header Column | Proxyman ### [](https://docs.proxyman.com/basic-features/custom-header-column#id-1.-whats-it) 1\. What's it? Custom Header Column feature allows you to customize the column that displays on the main Table View. It's similar to Custom Header Column from [Google Chrome Dev Tools](https://developers.google.com/web/tools/chrome-devtools/network/reference#custom-columns) ### [](https://docs.proxyman.com/basic-features/custom-header-column#id-2.-benefit) 2\. Benefit * Define a Header from Request/Response and show it on the table. * **Easier to distinguish each request/response if they have the same URL, but different Headers** * Support resize/sorting/reorder columns * Remember the previous state and restore it for the future session. ### [](https://docs.proxyman.com/basic-features/custom-header-column#id-3.-how-to-use-it) 3\. How to use it? You can open **Tool Menu** -> **Custom Header Column** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVepXPi2YNzkeoVqOWB%252F-MVesDI6M8IiS5UtE1-9%252FScreen%2520Shot%25202021-03-13%2520at%252016.15.45.png%3Falt%3Dmedia%26token%3D4506d8ac-3d57-4d8a-962a-45a4761abc1e&width=768&dpr=4&quality=100&sign=98548812&sv=2) Custom your header column ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVepXPi2YNzkeoVqOWB%252F-MVerXncCd4zbCjZz_zd%252FScreen_Shot_2021-03-13_at_16_08_14.png%3Falt%3Dmedia%26token%3D2acbe179-0905-4a17-a7dc-305bd4652741&width=768&dpr=4&quality=100&sign=3a9ab906&sv=2) It will display on the main Table View If you need to manage the default columns, please right-click on the Column Header. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVepXPi2YNzkeoVqOWB%252F-MVetSwMrJ3MJXUAjQKW%252FScreen%2520Shot%25202021-03-13%2520at%252016.21.39.png%3Falt%3Dmedia%26token%3De258c27e-d247-40aa-99e5-42f3ea980137&width=768&dpr=4&quality=100&sign=9e36359e&sv=2) ### [](https://docs.proxyman.com/basic-features/custom-header-column#graphql-query-column) **GraphQL Query Column** Custom Header Column would extract and display the query name for GraphQL Request. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVepXPi2YNzkeoVqOWB%252F-MVetX1HGlYXY9NQS7A3%252FScreen_Shot_2021-03-13_at_16_20_42.png%3Falt%3Dmedia%26token%3Df7f16b9c-d200-4742-b158-db9f23cdd42b&width=768&dpr=4&quality=100&sign=a9eb2898&sv=2) [PreviousCustom Previewer Tab](https://docs.proxyman.com/basic-features/custom-previewer-tab) [NextRegex (Regular Expression)](https://docs.proxyman.com/basic-features/regex) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/custom-header-column#id-1.-whats-it) * [2\. Benefit](https://docs.proxyman.com/basic-features/custom-header-column#id-2.-benefit) * [3\. How to use it?](https://docs.proxyman.com/basic-features/custom-header-column#id-3.-how-to-use-it) * [GraphQL Query Column](https://docs.proxyman.com/basic-features/custom-header-column#graphql-query-column) --- # Import / Export Settings | Proxyman [](https://docs.proxyman.com/basic-features/import-export-settings#id-1.-import-settings) 1\. Import Settings ------------------------------------------------------------------------------------------------------------------ From Proxyman 2.26.0, the developer can import the Tools Settings from other colleagues who are using **Proxyman** or **Charles Proxy**. To import settings, please go to Tools -> Import Settings -> From Proxyman / Charles Proxy -> Select the tools you would like to import ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M_s4PMn2IXBt6drz9PV%252F-M_s5AZDJrJ7HW4n81LP%252FScreen_Shot_2021-05-17_at_09_11_44.png%3Falt%3Dmedia%26token%3D6eb389ba-60a1-4754-a81d-3480eccf3e97&width=768&dpr=4&quality=100&sign=cc9057c4&sv=2) The following list will describe what tools that you can import: ### [](https://docs.proxyman.com/basic-features/import-export-settings#proxyman) Proxyman * SSL Proxying List * Block List * White List * Map Local * Map Remote * Breakpoint * Network Condition * Scripting ### [](https://docs.proxyman.com/basic-features/import-export-settings#charles-proxy) Charles Proxy * SSL Proxying List * Block List * White List * Map Local * Map Remote * Breakpoint [](https://docs.proxyman.com/basic-features/import-export-settings#id-2.-export-settings) 2\. Export Settings ------------------------------------------------------------------------------------------------------------------ You can also export the Tools Settings then sharing to your colleagues. 1. Open the tool you would like to export 2. Select Rules 3. Right Click -> Export Setting ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M_s4PMn2IXBt6drz9PV%252F-M_s6EMoJZUREXqeKusD%252FScreen_Shot_2021-05-17_at_09_16_41.png%3Falt%3Dmedia%26token%3D0d5c4d29-a5a9-4527-b603-d4bd95bb8775&width=768&dpr=4&quality=100&sign=c5765da0&sv=2) [](https://docs.proxyman.com/basic-features/import-export-settings#id-3.-open-charles-proxy-log-file-.chls) 3\. Open Charles Proxy Log File (\*.chls) ---------------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman supports open Charles Proxy Log file, which is exported from Charles Proxy app. Please check out the Charles Proxy Converter. [Charles Proxy Converter](https://docs.proxyman.com/advanced-features/charles-proxy-converter) [PreviousHighlight by Color and Add Comment](https://docs.proxyman.com/basic-features/highlight-by-color-and-add-comment) [NextMultipart Form-Data Previewer](https://docs.proxyman.com/basic-features/multipart-form-data-previewer) Last updated 4 years ago * [1\. Import Settings](https://docs.proxyman.com/basic-features/import-export-settings#id-1.-import-settings) * [Proxyman](https://docs.proxyman.com/basic-features/import-export-settings#proxyman) * [Charles Proxy](https://docs.proxyman.com/basic-features/import-export-settings#charles-proxy) * [2\. Export Settings](https://docs.proxyman.com/basic-features/import-export-settings#id-2.-export-settings) * [3\. Open Charles Proxy Log File (\*.chls)](https://docs.proxyman.com/basic-features/import-export-settings#id-3.-open-charles-proxy-log-file-.chls) --- # Command Palette | Proxyman [](https://docs.proxyman.com/basic-features/command-palette#id-1.-whats-it) 1\. What's it? ----------------------------------------------------------------------------------------------- Introduce a global Command Palette that helps developers: * Quickly search Debugging Tools * Toggle Debugging Tools * Open a new Guideline for iOS, Simulator, Android, and Emulators * Pin your most used action ![Proxyman with Command Palette](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FjMixkAfufiUoaYhVtXK4%252FScreenshot%25202025-10-03%2520at%252020.39.57.jpg%3Falt%3Dmedia%26token%3D70f3aa13-e8d0-4c57-8485-bd574802b4de&width=768&dpr=4&quality=100&sign=8672b511&sv=2) Use ⌘⇧P to open the Command Palette Windows Command Palette is available on Proxyman macOS 5.26.0 or later [](https://docs.proxyman.com/basic-features/command-palette#id-2.-missing-your-shortcut) 2\. Missing your shortcut? ------------------------------------------------------------------------------------------------------------------------ If you could not find your shortcut in the Command Palette view, please request it in our GitHub Public Tracker at [https://github.com/ProxymanApp/Proxyman/issues](https://github.com/ProxymanApp/Proxyman/issues) [PreviousQuick Preview](https://docs.proxyman.com/basic-features/quick-preview) [NextRepeat](https://docs.proxyman.com/advanced-features/repeat) Last updated 2 months ago * [1\. What's it?](https://docs.proxyman.com/basic-features/command-palette#id-1.-whats-it) * [2\. Missing your shortcut?](https://docs.proxyman.com/basic-features/command-palette#id-2.-missing-your-shortcut) --- # Map Local (File) | Proxyman [](https://docs.proxyman.com/advanced-features/map-local#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------- The Map Local Tool enables you to use the content of local files as an HTTP Response to your requests. You can do Map Local for **GraphQL** with the Scripting Tool ([Snippet Code](https://docs.proxyman.com/scripting/snippet-code#map-local-with-graphql) ) You can combine **Map Local with Breakpoint** to modify the content on the fly (2.16.0+) [](https://docs.proxyman.com/advanced-features/map-local#id-2.-benefits) 2\. Benefits ------------------------------------------------------------------------------------------ * Define a Response with Status Code, Headers, and Body -> Mock to a given Request -> Easily to test some edge cases without waiting for the server's update. * **Mock Fake API with a local File**: It's useful for developers to try out the testing APIs that are not in production. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MgdA6B5loIY55XPs0WC%252F-MgdAvRMcpn98kCytuZk%252FScreen_Shot_2021-08-09_at_11_28_40.png%3Falt%3Dmedia%26token%3D33cc4302-c682-46c5-8717-83f0e67d7fb7&width=768&dpr=4&quality=100&sign=110c28ea&sv=2) Define Status Code, Headers and Body ### [](https://docs.proxyman.com/advanced-features/map-local#with-an-http-message) With an HTTP Message 1. Right Click on your request on the main table -> Tools -> Map Local -> Proxyman will automatically create a new rules with a current Response 2. Feel free to change the Status Code, Headers and the JSON Body 3. Done 4. Re-sent your request -> New Response is mapped. ### [](https://docs.proxyman.com/advanced-features/map-local#with-a-local-file) With a Local File * Click on the `Select Local File` button and select any files. Supports: Text, JSON, Binary, Image ### [](https://docs.proxyman.com/advanced-features/map-local#with-less-than-file_url-greater-than-flag) With flag * It's useful to map to a given file and able to provide the Status Code and Response Headers. * Work with JSON, Text, Binary, Image etc * Make sure to provide `Content-Type` header, so your client can work properly [](https://docs.proxyman.com/advanced-features/map-local#id-2.-how-to-use) 2\. How to use ---------------------------------------------------------------------------------------------- 1. Right-click on the Request (which already has a Response) -> Tools -> Map Local. Proxyman will create a rule with the current Response Body (The file is stored in your Desktop folder) 2. We can directly change the Response body. 3. Make a request and observe the new Response Body. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FAFwzclnJSuLiNFYdOdrm%252FScreen_Shot_2022-09-23_at_13_23_11.jpg%3Falt%3Dmedia%26token%3Daebf9100-157a-40de-af45-a428c978cf7d&width=768&dpr=4&quality=100&sign=36798e9b&sv=2) Create a Map Local with curernt Response [](https://docs.proxyman.com/advanced-features/map-local#id-3.-map-local-with-graphql-requests) 3\. Map Local with GraphQL Requests ---------------------------------------------------------------------------------------------------------------------------------------- From Proxyman 2.27.0+, Map Local can work with GraphQL Request by a specific QueryName. Please check out the following GraphQL Document. [GraphQL](https://docs.proxyman.com/advanced-features/graphql) [](https://docs.proxyman.com/advanced-features/map-local#id-4.-map-local-with-scripting-tool) 4\. Map Local with Scripting Tool ✅ -------------------------------------------------------------------------------------------------------------------------------------- If you would like to do Map Local with **complicated rules,** you might check out [Scripting](https://docs.proxyman.com/scripting/script#1-whats-it) since it's easier to achieve the same result. Please check out these [Snippet Code](https://docs.proxyman.com/scripting/snippet-code#2-common-on-request-and-response) to understand how to map a local file with Javascript Code. [PreviousBreakpoint Templates](https://docs.proxyman.com/advanced-features/breakpoint-templates) [NextMap Local (Directory)](https://docs.proxyman.com/advanced-features/map-local-directory) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/map-local#id-1.-whats-it) * [2\. Benefits](https://docs.proxyman.com/advanced-features/map-local#id-2.-benefits) * [With an HTTP Message](https://docs.proxyman.com/advanced-features/map-local#with-an-http-message) * [With a Local File](https://docs.proxyman.com/advanced-features/map-local#with-a-local-file) * [With flag](https://docs.proxyman.com/advanced-features/map-local#with-less-than-file_url-greater-than-flag) * [2\. How to use](https://docs.proxyman.com/advanced-features/map-local#id-2.-how-to-use) * [3\. Map Local with GraphQL Requests](https://docs.proxyman.com/advanced-features/map-local#id-3.-map-local-with-graphql-requests) * [4\. Map Local with Scripting Tool ✅](https://docs.proxyman.com/advanced-features/map-local#id-4.-map-local-with-scripting-tool) Copy HTTP/1.1 200 OK Content-Type: application/json --- # Customize Toolbar | Proxyman [](https://docs.proxyman.com/basic-features/customize-toolbar#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------- From Proxyman 2.32.0+, you can easily customize your toolbar to fit your need. You can design your toolbar with various Tools buttons: * Proxy Overriden * Block List * Allow List * Breakpoint * Map Local * Map Remote * Reverse Proxy * Network Condition * Scripting These tool buttons will toggle ON/OFF on a particular feature. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MiF7FAguOnuPzEZBE4u%252F-MiF8_Ijju82twE4Y0P-%252FScreen_Shot_2021-08-28_at_17_15_16.png%3Falt%3Dmedia%26token%3D31e0e7bf-73fd-4792-9b79-9b092ab55807&width=768&dpr=4&quality=100&sign=33fced81&sv=2) Customize your toolbar [](https://docs.proxyman.com/basic-features/customize-toolbar#id-2.-how-to-use-it) 2\. How to use it? ---------------------------------------------------------------------------------------------------------- You can simply open the Customize Toolbar Palette from: * Right-click on the toolbar -> Customize Toolbar * Tools menu -> Customize Toolbar Customize Toolbar is exclusively available for macOS 11+ [PreviousJQ](https://docs.proxyman.com/basic-features/jq) [NextLocalization](https://docs.proxyman.com/basic-features/localization) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/customize-toolbar#id-1.-whats-it) * [2\. How to use it?](https://docs.proxyman.com/basic-features/customize-toolbar#id-2.-how-to-use-it) --- # Breakpoint | Proxyman ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-1.-whats-it) 1\. What's it? Breakpoint is a handy tool to help developers to edit the content of the Request and Response **on the fly**. It's possible to set a breakpoint on both **Request** or **Response.** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MEVxm7C1KsUVgql_NPM%252F-MEVyVnIP9VAXgkb-LUN%252FScreen%2520Shot%25202020-08-12%2520at%252011.39.46.png%3Falt%3Dmedia%26token%3Dff9f8d86-60e6-4130-a83a-2da8324842e8&width=768&dpr=4&quality=100&sign=a1dcf847&sv=2) If you're using [Atlantis Framework](https://docs.proxyman.com/atlantis/atlantis-for-ios) , you could not use Breakpoint. Please consider using a normal proxy. ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-2.-main-features) 2\. Main features Breakpoint tool allows the developer to stop an ongoing Request or incoming Response to modify its data. * Modify the Request URL, including the Scheme, Host, Path, Port, HTTP Method (Available on Proxyman 2.35.4+) * Modify HTTP Headers of Request/Response * Modify Query or Form entry from Requests. * Modify Authorization/Cookie/Set-Cookie Headers. * Modify HTTP Body of Request/Response * Change Response HTTP Status Code. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MhvV4r0O2ZZtJx7eDhO%252F-MhvVZiTBRRVnS8Z50yB%252FScreen%2520Shot%25202021-08-25%2520at%252011.12.06.png%3Falt%3Dmedia%26token%3D30144dc0-8a03-41a9-acf5-aa6fc49bd699&width=768&dpr=4&quality=100&sign=2c2ddbe7&sv=2) Breakpoint on Response ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FibeqdjhWzlVYHcrfDIUt%252FScreen_Shot_2021-12-20_at_15_06_05.png%3Falt%3Dmedia%26token%3D80446083-949b-4d70-ba48-6fa6ebccaccf&width=768&dpr=4&quality=100&sign=4a0c1d39&sv=2) Breakpoint on the Request URL (Scheme, Host, Port, Path and Query) #### [](https://docs.proxyman.com/advanced-features/breakpoint#breakpoint-actions) Breakpoint Actions Action Meaning Cancel Cancel a breakpoint and continue the Request/Response Abort Abort the connection and return 503 status code Execute Make a request/response with a new change Check out Breakpoint Tutorial: [Breakpoint to intercept and edit the requests/response on iOS app](https://proxyman.io/blog/2019/09/Use-Breakpoint-to-intercept-and-edit-request-response-on-iOS-app.html) ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-3.-breakpoint-with-raw-message) 3\. Breakpoint with Raw Message From build 3.1.0, we can modify the Request / Response by using the Raw Message. \[WIP\] ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-4.-breakpoint-by-the-scripting-tool) 4\. Breakpoint by the Scripting Tool ✅ If you would like to do Breakpoint in an Automatic way, you should use the [Scripting](https://docs.proxyman.com/scripting/script#1-whats-it) tools, which you can achieve the same result that Breakpoint can do, but in a flexible way by writing Javascript Code. Please check out this [Snippet Code](https://docs.proxyman.com/scripting/snippet-code#2-common-on-request-and-response) to understand how to use Scripting for Breakpoint. ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-5.-breakpoint-with-graphql-requests) 5\. Breakpoint with GraphQL Requests From Proxyman 2.27.0+, Breakpoint can work with GraphQL Request by a specific QueryName. Please check out the following GraphQL Document. [GraphQL](https://docs.proxyman.com/advanced-features/graphql) ### [](https://docs.proxyman.com/advanced-features/breakpoint#id-6.-how-to-use) 6\. How to use You can simply create a Breakpoint rule by: 1. Right-Click on the Request -> Tools -> Breakpoint 2. Proxyman will open a Breakpoint Window and fill the Matching Rule. 3. Select Breakpoint on Request or Response or both. 4. Click Add to create a rule. 5. Try sending a Request again -> Proxyman will open a Breakpoint and you can modify the data. 6. Click on the Execute Button to send a request/response. [PreviousNo Caching](https://docs.proxyman.com/advanced-features/no-caching) [NextBreakpoint Templates](https://docs.proxyman.com/advanced-features/breakpoint-templates) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/breakpoint#id-1.-whats-it) * [2\. Main features](https://docs.proxyman.com/advanced-features/breakpoint#id-2.-main-features) * [3\. Breakpoint with Raw Message](https://docs.proxyman.com/advanced-features/breakpoint#id-3.-breakpoint-with-raw-message) * [4\. Breakpoint by the Scripting Tool ✅](https://docs.proxyman.com/advanced-features/breakpoint#id-4.-breakpoint-by-the-scripting-tool) * [5\. Breakpoint with GraphQL Requests](https://docs.proxyman.com/advanced-features/breakpoint#id-5.-breakpoint-with-graphql-requests) * [6\. How to use](https://docs.proxyman.com/advanced-features/breakpoint#id-6.-how-to-use) --- # Save Session | Proxyman ### [](https://docs.proxyman.com/advanced-features/save-session#id-1.-whats-it) 1\. What's it? It's a handy tool to save entire your working Session, so you can open it later without losing any debugging information, which includes: * All Request and Response flows * All App and Domains * All Remote Devices ### [](https://docs.proxyman.com/advanced-features/save-session#id-2.-whats-for) 2\. What's for? * Save entire Session and open it later * Share your Debugging Session to your QA or Teammates ### [](https://docs.proxyman.com/advanced-features/save-session#id-2.-how-to-use) 2\. How to use? #### [](https://docs.proxyman.com/advanced-features/save-session#id-2.1-save-current-session) 2.1 Save current Session * File menu -> Save Session As then selecting the save location ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kcxHIx7CN8lfqypGN%252F-M5kdtfRFbbJQlNVUV5M%252FScreen%2520Shot%25202020-04-25%2520at%252016.21.50.png%3Falt%3Dmedia%26token%3Dd5e4a963-fa59-46b0-b778-2023e971595a&width=768&dpr=4&quality=100&sign=a6621e53&sv=2) #### [](https://docs.proxyman.com/advanced-features/save-session#id-2.2-restore-previous-session) 2.2 Restore previous Session * File Menu -> Open or Open Recent [PreviousExternal Proxy](https://docs.proxyman.com/advanced-features/external-proxy) [NextProtobuf](https://docs.proxyman.com/advanced-features/protobuf) Last updated 5 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/save-session#id-1.-whats-it) * [2\. What's for?](https://docs.proxyman.com/advanced-features/save-session#id-2.-whats-for) * [2\. How to use?](https://docs.proxyman.com/advanced-features/save-session#id-2.-how-to-use) --- # Compose new Request | Proxyman [](https://docs.proxyman.com/advanced-features/compose#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------ "Compose new Request" tool is a handy tool to help developers: * Compose an HTTP/HTTPS Request and send it to your service. It's similar to Paw, Insomnia, and Postman. * Quickly test your APIs without depending on your app client. * Support Header, Query, URL, Form, JSON Body * Support Raw Message * Support multipart body * Preset template: Empty Request, GET Request, Post Request with JSON or Form. You can reuse your request data for new requests. Please check out the [Edit & Repeat](https://docs.proxyman.com/advanced-features/edit-and-repeat) page. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FKMaeS7lqansj0MX2Y8wK%252FScreenshot%25202025-09-05%2520at%252021.01.54.png%3Falt%3Dmedia%26token%3Dc84e09d2-a3c7-46e1-b9d3-25566bad8a1c&width=768&dpr=4&quality=100&sign=1916e6df&sv=2) Make a HTTPS Requests with Proxyman [](https://docs.proxyman.com/advanced-features/compose#id-2.-how-to-use) 2\. How to use -------------------------------------------------------------------------------------------- You can open the tool by either: * Click on the Compose button on the main navigation bar * Tools -> Compose ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FIGNPhi6gMvEOZYunIvUA%252FScreen_Shot_2022-06-23_at_15_03_44.jpg%3Falt%3Dmedia%26token%3D260f92a7-78d7-4790-a437-31f47a343937&width=768&dpr=4&quality=100&sign=c5962425&sv=2) Open the Compose Tool 1. Enter the URL 2. Select HTTP Method 3. Modify the Header, Param, Body, Raw Message 4. Click the Send button. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FiEGZEumelhi9RAkxfPAH%252FScreen_Shot_2022-06-23_at_15_07_35.jpg%3Falt%3Dmedia%26token%3Dac87cc51-3849-4aff-9da5-64814d6ffc6c&width=768&dpr=4&quality=100&sign=138cbd8a&sv=2) Compose JSON Body ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FvEQeGrMfgGXlcz8vpUIQ%252FScreen_Shot_2022-06-23_at_15_08_10.jpg%3Falt%3Dmedia%26token%3D434a10dd-2b53-45ee-81e0-d1e69ebc513f&width=768&dpr=4&quality=100&sign=f1e17b57&sv=2) Using Raw Message [](https://docs.proxyman.com/advanced-features/compose#id-3.-template) 3\. Template ---------------------------------------------------------------------------------------- Proxyman also supports a few request templates. * GET with Query * Post with JSON * Post with Form * Post with multiparts * Import from cURL ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FwNaAyGBvUGZJ1YCA2Kcf%252FScreenshot%25202025-02-01%2520at%252010.45.59%25E2%2580%25AFPM.jpg%3Falt%3Dmedia%26token%3Dee860dd3-8095-40d7-92fc-2b282d9a1c77&width=768&dpr=4&quality=100&sign=ab97b08a&sv=2) Use preset template [](https://docs.proxyman.com/advanced-features/compose#id-4.-import-from-curl) 4\. Import from cURL -------------------------------------------------------------------------------------------------------- You can import your cURL, which you can copy from a Network Tab in Google Chrome and make a request with the Compose Tool. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FbUYslRNNBCc6EtHDTHLZ%252FScreenshot%25202025-02-01%2520at%252010.42.21%25E2%2580%25AFPM.jpg%3Falt%3Dmedia%26token%3Deadf666f-03e2-4957-8bc7-81fa3831da4d&width=768&dpr=4&quality=100&sign=9354dbd2&sv=2) import cURL You can simply paste your cURL to the URL Text View, Proxyman will tries to parse your cURL [](https://docs.proxyman.com/advanced-features/compose#id-5.-history-request) 5\. History Request ------------------------------------------------------------------------------------------------------ From Proxyman macOS 5.24.0, Proxyman will store your requests/responses in the History List. * ✅ Useful to preview your previous Request/Response ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FNeDMfkGV3TDQoEwgOQp9%252FScreenshot%25202025-08-25%2520at%252014.02.04.jpg%3Falt%3Dmedia%26token%3D96cba38c-b30a-4380-a652-9d098c970e04&width=768&dpr=4&quality=100&sign=ba2a14a3&sv=2) Request History in the Compose View [](https://docs.proxyman.com/advanced-features/compose#id-6.-settings) 6\. Settings ---------------------------------------------------------------------------------------- * **SettingsRequest Timeout**: In Setting -> Tools Tab -> Request Timeout: Define a second that the Request will timeout. Use 0 to disable it. Available on Proxyman 4.13.0 or later [PreviousEdit & Repeat](https://docs.proxyman.com/advanced-features/edit-and-repeat) [NextNo Caching](https://docs.proxyman.com/advanced-features/no-caching) Last updated 3 months ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/compose#id-1.-whats-it) * [2\. How to use](https://docs.proxyman.com/advanced-features/compose#id-2.-how-to-use) * [3\. Template](https://docs.proxyman.com/advanced-features/compose#id-3.-template) * [4\. Import from cURL](https://docs.proxyman.com/advanced-features/compose#id-4.-import-from-curl) * [5\. History Request](https://docs.proxyman.com/advanced-features/compose#id-5.-history-request) * [6\. Settings](https://docs.proxyman.com/advanced-features/compose#id-6.-settings) --- # Edit & Repeat | Proxyman ### [](https://docs.proxyman.com/advanced-features/edit-and-repeat#id-1.-whats-it) 1\. What's it? Edit & Repeat is a handy tool for developers who need to test the Endpoint directly on Proxyman app without making a new request from your browser or client app. * Rapidly change a **Query**, **Header**, **Body** of the selected request and test the Response from the server * Easily reproduce the bug from the server with a different set of params. * Support Form and JSON format. * Edit by Raw Message * Review Response data on the Right Panel (Proxyman 3.6.0+). ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FCJ7eudk5oBzFBiZffNH6%252F174536780-6ced0dc3-df59-4c51-a1a5-dc72cb30140f.jpeg%3Falt%3Dmedia%26token%3Dc7d254ae-e7a1-46b9-9f90-1ccce881dfb0&width=768&dpr=4&quality=100&sign=a94bd758&sv=2) Edit and repeat the request ### [](https://docs.proxyman.com/advanced-features/edit-and-repeat#id-2.-how-to-use-it) 2\. How to use it? 1. Simply select your request -> Right Click -> Edit & Repeat 2. The request data (Header, URL, Query, Body) is preserved and it's ready to edit ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FBYdQcLz5fSHrjyfVhol8%252FScreen%2520Shot%25202022-06-23%2520at%252014.58.23.png%3Falt%3Dmedia%26token%3D04eeb323-0b26-49b6-b42c-d9266c1c8616&width=768&dpr=4&quality=100&sign=ebee730e&sv=2) Edit and repeat on the selected request [PreviousRepeat](https://docs.proxyman.com/advanced-features/repeat) [NextCompose new Request](https://docs.proxyman.com/advanced-features/compose) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/edit-and-repeat#id-1.-whats-it) * [2\. How to use it?](https://docs.proxyman.com/advanced-features/edit-and-repeat#id-2.-how-to-use-it) --- # JSONPath | Proxyman [](https://docs.proxyman.com/basic-features/jsonpaths#id-1.-whats-it) 1\. What's it? ----------------------------------------------------------------------------------------- JSONPath is a tool for quickly filtering from JSON data. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MfztiHjdwktchVUVdx7%252F-MfzurR3JU5X5vLm0O6T%252FScreen_Shot_2021-08-01_at_10_29_35.png%3Falt%3Dmedia%26token%3Dc2bb9669-14b1-417e-abd9-8ab4d112f8a3&width=768&dpr=4&quality=100&sign=512bad43&sv=2) Filter JSON data ### [](https://docs.proxyman.com/basic-features/jsonpaths#operator) Operator Operator Description `$` The root element to query. This starts all path expressions. `@` The current node is being processed by a filter predicate. `*` Wildcard. Available anywhere a name or numeric are required. `..` Deep scan. Available anywhere a name is required. `.` Dot-notated child `['' (, '')]` Bracket-notated child or children `[ (, )]` Array index or indexes `[start:end]` Array slice operator `[?()]` Filter expression. The expression must evaluate to a boolean value. ### [](https://docs.proxyman.com/basic-features/jsonpaths#filter-operators) Filter Operators Filters are logical expressions used to filter arrays. A typical filter would be `[?(@.age > 18)]` where `@` represents the current item being processed. Operator Description \== left is equal to the right (note that 1 is not equal to '1') != left is not equal to the right < left is less than right <= left is less or equal to the right \> left is greater than right \>= left is greater than or equal to the right \=~ left matches regular expression \[?(@.name =~ /foo.\*?/i)\] in left exists in right \[?(@.size in \['S', 'M'\])\] nin left does not exists in right subsetof left is a subset of right \[?(@.sizes subsetof \['S', 'M', 'L'\])\] anyof left has an intersection with right \[?(@.sizes anyof \['M', 'L'\])\] noneof left has no intersection with right \[?(@.sizes noneof \['M', 'L'\])\] size size of left (array or string) should match right empty left (array or string) should be empty ### [](https://docs.proxyman.com/basic-features/jsonpaths#path-examples) Path Examples Given the JSON Data. JsonPath Result $.store.book\[\*\].author The authors of all books $..author All authors $.store.\* All things, both books and bicycles $.store..price The price of everything $..book\[2\] The third book $..book\[-2\] The second to last book $..book\[0,1\] The first two books $..book\[:2\] All books from index 0 (inclusive) until index 2 (exclusive) $..book\[1:2\] All books from index 1 (inclusive) until index 2 (exclusive) $..book\[-2:\] Last two books $..book\[2:\] Book number two from tail $..book\[?(@.isbn)\] All books with an ISBN number $.store.book\[?(@.price < 10)\] All books in store cheaper than 10 $..book\[?(@.price <= $\['expensive'\])\] All books in store that are not "expensive" $..book\[?(@.author =~ /.\*REES/i)\] All books matching regex (ignore case) $..\* Give me everything $..book.length() The number of books ### [](https://docs.proxyman.com/basic-features/jsonpaths#reference) Reference * [https://github.com/json-path/JsonPath](https://github.com/json-path/JsonPath) [PreviousMultipart Form-Data Previewer](https://docs.proxyman.com/basic-features/multipart-form-data-previewer) [NextJQ](https://docs.proxyman.com/basic-features/jq) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/basic-features/jsonpaths#id-1.-whats-it) * [Operator](https://docs.proxyman.com/basic-features/jsonpaths#operator) * [Filter Operators](https://docs.proxyman.com/basic-features/jsonpaths#filter-operators) * [Path Examples](https://docs.proxyman.com/basic-features/jsonpaths#path-examples) * [Reference](https://docs.proxyman.com/basic-features/jsonpaths#reference) Copy { "store": { "book": [\ {\ "category": "reference",\ "author": "Nigel Rees",\ "title": "Sayings of the Century",\ "price": 8.95\ },\ {\ "category": "fiction",\ "author": "Evelyn Waugh",\ "title": "Sword of Honour",\ "price": 12.99\ },\ {\ "category": "fiction",\ "author": "Herman Melville",\ "title": "Moby Dick",\ "isbn": "0-553-21311-3",\ "price": 8.99\ },\ {\ "category": "fiction",\ "author": "J. R. R. Tolkien",\ "title": "The Lord of the Rings",\ "isbn": "0-395-19395-8",\ "price": 22.99\ }\ ], "bicycle": { "color": "red", "price": 19.95 } }, "expensive": 10 } --- # TLS Key Logging | Proxyman [PreviousSwagger OpenAPI](https://docs.proxyman.com/advanced-features/swagger-openapi) [NextInstall Certificate](https://docs.proxyman.com/proxyman-windows/install-certificate) --- # Breakpoint Templates | Proxyman [](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------------- From Proxyman 3.1.0+, you can create a Breakpoint Template for Requests and Response that allows developers to reuse it. * Create new Template for Request: HTTP Method, URL, Headers * Template for Response: Status Code, Headers * Boots productivity when using the [Breakpoint tool](https://docs.proxyman.com/advanced-features/breakpoint#1.-whats-it) . ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F0whNSLK2NsklQTWsoKgY%252F153364144-b1a8378e-dff8-412b-a3b6-4bfad44f9d61.png%3Falt%3Dmedia%26token%3Dd8d7061a-b1d7-472f-a583-d664670ccdfb&width=768&dpr=4&quality=100&sign=8ff077a2&sv=2) Breakpoint Template for Request/Response [](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-2.-how-to-create-a-new-template) 2\. How to create a new template? ---------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/advanced-features/breakpoint-templates#create-a-new-one) Create a new one 1. Tools Menu -> Breakpoint -> Breakpoint Template 2. CMD+N or SHIFT+CMD+N to create a template for Request/Response 3. Defind your Request/Response template ### [](https://docs.proxyman.com/advanced-features/breakpoint-templates#use-the-existing-one) Use the existing one 1. Create a Breakpoint Rule -> Make sure your request/response -> Make sure it hits the Breakpoint 2. Click Raw Tab -> Template button -> Request/Response -> Create new request/response 3. Done [](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-3.-how-to-use-it) 3\. How to use it? ---------------------------------------------------------------------------------------------------------------- 1. When a request/response hit a Breakpoint -> Click Raw Tab 2. Template -> Request/Response -> Select your template 3. It will replace the current data with the template one. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FtLPPOneBdYRR0Y7WiUu8%252F153364160-7fde3bdb-2941-4cd1-a62f-77a4a4ba7013.png%3Falt%3Dmedia%26token%3D8ad4ece0-826f-4fc7-9718-50400fe74fb8&width=768&dpr=4&quality=100&sign=96e70fda&sv=2) Use Breakpoint Template [PreviousBreakpoint](https://docs.proxyman.com/advanced-features/breakpoint) [NextMap Local (File)](https://docs.proxyman.com/advanced-features/map-local) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-1.-whats-it) * [2\. How to create a new template?](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-2.-how-to-create-a-new-template) * [Create a new one](https://docs.proxyman.com/advanced-features/breakpoint-templates#create-a-new-one) * [Use the existing one](https://docs.proxyman.com/advanced-features/breakpoint-templates#use-the-existing-one) * [3\. How to use it?](https://docs.proxyman.com/advanced-features/breakpoint-templates#id-3.-how-to-use-it) --- # No Caching | Proxyman ### [](https://docs.proxyman.com/advanced-features/no-caching#id-1.-whats-it) 1\. What's it? Prevent the server or client from caching your Request or Response, and you always get the latest change from the server. No Caching tools will affect all HTTP Request and Response, which enabled SSL Proxying. ### [](https://docs.proxyman.com/advanced-features/no-caching#id-2.-whats-for) 2\. What's for? * If you would like to **see the latest HTTP Response changes** from the Server or Client and ignore all caching layers ### [](https://docs.proxyman.com/advanced-features/no-caching#id-3.-how-it-works) 3\. How it works No Caching tool will manipulate all requests by adding or removing caching HTTP Headers, which are described in the following table. HTTP Message Remove Add Request **If-Modified-Since** and **If-None-Match** **Pragma: no-cache** and **Cache-control: no-cache** Response **Expires**, **Last-Modified,** and **ETag** **Expires: 0** and **Cache-Control: no-cache** ### [](https://docs.proxyman.com/advanced-features/no-caching#id-4.-how-to-use) 4\. How to use * Enable in **Tool Menu -> No Caching** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kUoPHDivENZr4LN56%252F-M5kVwl9fEys53qNNwEW%252FScreen%2520Shot%25202020-04-25%2520at%252015.45.37.png%3Falt%3Dmedia%26token%3D30790a7b-e5de-48f2-a361-ea7c272b44f6&width=768&dpr=4&quality=100&sign=26a1eff5&sv=2) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kUoPHDivENZr4LN56%252F-M5kWUcDLjQdfVToZaRN%252FScreen%2520Shot%25202020-04-25%2520at%252015.48.05.png%3Falt%3Dmedia%26token%3D720528e0-e89c-4413-aae2-0d89c8cb26aa&width=768&dpr=4&quality=100&sign=db04fafe&sv=2) No Caching Status on the bottom right of Proxyman app **⌥⌘N:** Toggl the No Caching Tool. [PreviousCompose new Request](https://docs.proxyman.com/advanced-features/compose) [NextBreakpoint](https://docs.proxyman.com/advanced-features/breakpoint) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/no-caching#id-1.-whats-it) * [2\. What's for?](https://docs.proxyman.com/advanced-features/no-caching#id-2.-whats-for) * [3\. How it works](https://docs.proxyman.com/advanced-features/no-caching#id-3.-how-it-works) * [4\. How to use](https://docs.proxyman.com/advanced-features/no-caching#id-4.-how-to-use) --- # Block List | Proxyman [](https://docs.proxyman.com/advanced-features/blacklist#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------- The Block List Tool is useful when you would like to **block or hide** certain domains during a debugging session. For instance, you can use Block List in the following situations: * Block all ads requests from particular domains * Block all analytic requests that flood the working space * Block all annoying ping requests from your app to reduce the number of requests that appear on Proxyman * Hide analytic traffic from your website without blocking it. All blocked domains in the Block List will **drop the connection.** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fh7eV4gZC8FosDZOIFr5Y%252FScreenshot%25202025-09-05%2520at%252021.11.17.png%3Falt%3Dmedia%26token%3D58bf6a8c-d987-4733-94d1-2055be45f661&width=768&dpr=4&quality=100&sign=b1df0364&sv=2) Block certain Requests by Domains or Client [](https://docs.proxyman.com/advanced-features/blacklist#id-2.-block-actions) 2\. Block Actions ---------------------------------------------------------------------------------------------------- Block List supports some block actions that can suit your needs: Block Action Description Block & Hide Request Matched requests are blocked and don't display on the app. Block & Display Matched requests are blocked, but display the blocked requests on the app. Hide, but not Block Just hiding the matched requests without blocking them. It's useful if you'd hide your annoying requests but don't block them. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FwAI9lqgKzSx39SC4HIS0%252FScreen%2520Shot%25202022-01-10%2520at%252014.43.38.png%3Falt%3Dmedia%26token%3Dd82dbf86-bfac-406f-b3b3-2c605599f8e9&width=768&dpr=4&quality=100&sign=4581e83e&sv=2) Create a Block / Hide Rule [](https://docs.proxyman.com/advanced-features/blacklist#id-3.-how-to-use-it) 3\. How to use it? ----------------------------------------------------------------------------------------------------- * **Tools** Menu -> **Block List** * Right-click on the requests or domains -> **Tools** -> **Block List...** **⌥⌘\[** to quick open Block List Window\ \ [](https://docs.proxyman.com/advanced-features/blacklist#id-4.-block-all-traffic-from-a-given-app)\ \ 4\. Block all traffic from a given App\ \ \ ----------------------------------------------------------------------------------------------------------------------------------------------\ \ * On Proxyman macOS 5.24.0 or later, you can select an app and block all traffic\ \ \ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEDZ2AHPkLAnt8supzTyA%252FScreenshot%25202025-09-02%2520at%252010.08.23.jpg%3Falt%3Dmedia%26token%3D18e5a351-0cdc-46ac-b43d-d9189a0ee241&width=768&dpr=4&quality=100&sign=ae2bbe92&sv=2)\ \ [PreviousClear Session](https://docs.proxyman.com/advanced-features/clear-session)\ [NextAllow List](https://docs.proxyman.com/advanced-features/whitelist)\ \ Last updated 3 months ago\ \ * [1\. What's it?](https://docs.proxyman.com/advanced-features/blacklist#id-1.-whats-it)\ \ * [2\. Block Actions](https://docs.proxyman.com/advanced-features/blacklist#id-2.-block-actions)\ \ * [3\. How to use it?](https://docs.proxyman.com/advanced-features/blacklist#id-3.-how-to-use-it)\ \ * [4\. Block all traffic from a given App](https://docs.proxyman.com/advanced-features/blacklist#id-4.-block-all-traffic-from-a-given-app) --- # Multiple Filters | Proxyman [](https://docs.proxyman.com/advanced-features/multiple-filters#id-1.-whats-it) 1\. What's it? --------------------------------------------------------------------------------------------------- From build 2.22.0+, you can combine many filters at one time. * Easily and quickly filter the request/response with complex filtered criteria * Persist your last filter configs * Handy Shortcuts * Various Filters: URL, Request Header, Response Header, Body, Status Code, Method, Color, and Comment * Combine with AND / OR all filters ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MWwDlZECbkfQm4piN0i%252F-MWwF9FpSzI60WypwUFV%252FExYFSpHUcAYVbKp.jpeg%3Falt%3Dmedia%26token%3D07ea3c4a-6e9f-4e68-bf31-9773f3fdbea3&width=768&dpr=4&quality=100&sign=298f70fe&sv=2) Mulitple Filter ### [](https://docs.proxyman.com/advanced-features/multiple-filters#id-2.-shortcut) 2\. Shortcut Shortcut Description ⌘F Display the filter and focus on the last one ⌘N Clone new filter ⇧⌘N Remove current Filter ⌘↑ Focus on the previous filter ⌘↓ Focus on the next filter ESC Dismiss the filter Proxyman limit the maximum filters is 10 For a Freemium version, it's limited at 2 [PreviousNetwork Conditions](https://docs.proxyman.com/advanced-features/network-throttling) [NextCustom Filters](https://docs.proxyman.com/advanced-features/custom-filters) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/multiple-filters#id-1.-whats-it) * [2\. Shortcut](https://docs.proxyman.com/advanced-features/multiple-filters#id-2.-shortcut) --- # Publish to Gist | Proxyman [](https://docs.proxyman.com/advanced-features/publish-to-gist#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------------- From Proxyman 2.28.0+, the developer can publish Request/Response data to Github Gist. * Proxyman requires "Read/Write Gist" permission in order to publish a Gist on the user's behalf. * If it's the first time, Proxyman will prompt a Github Authorization Page. [](https://docs.proxyman.com/advanced-features/publish-to-gist#id-2.-benefit) 2\. Benefit ---------------------------------------------------------------------------------------------- * **Instantly** create a Gist from selected Request/Response that you can **quickly** share with your colleagues. * Support Private and Private Gist. * Only requires **"Read/Write Gist"** permission. No request for Email/Username/... * The Github Access Token is securely stored in User Keychain. Here is how the Gist looks like: [https://gist.github.com/NghiaTranUIT/e116a60e286c917a5cbfd61aff32194c](https://gist.github.com/NghiaTranUIT/e116a60e286c917a5cbfd61aff32194c) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mb0e6XewuPDovrJZpyY%252F-Mb0fph-a8B9yc8jRme-%252FScreen%2520Shot%25202021-05-31%2520at%252015.54.36.png%3Falt%3Dmedia%26token%3D37a1ef5a-e622-4dfd-8a46-9d03b27f95c2&width=768&dpr=4&quality=100&sign=356a715b&sv=2) [](https://docs.proxyman.com/advanced-features/publish-to-gist#id-3.-how-to-use) 3\. How to use ---------------------------------------------------------------------------------------------------- 1. Select your request on the main Table View 2. Right-Click to display a Menu Context -> Export -> Publish To Gist... ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mb0e6XewuPDovrJZpyY%252F-Mb0hNx-X6tXs5aGbMQJ%252FScreen_Shot_2021-05-31_at_15_54_31.png%3Falt%3Dmedia%26token%3Da2748fe6-8d4b-45e2-ba2d-727dbd6fc58f&width=768&dpr=4&quality=100&sign=b58e9aca&sv=2) [PreviousCustom Filters](https://docs.proxyman.com/advanced-features/custom-filters) [NextReverse Proxy](https://docs.proxyman.com/advanced-features/reverse-proxy) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/publish-to-gist#id-1.-whats-it) * [2\. Benefit](https://docs.proxyman.com/advanced-features/publish-to-gist#id-2.-benefit) * [3\. How to use](https://docs.proxyman.com/advanced-features/publish-to-gist#id-3.-how-to-use) --- # Clear Session | Proxyman Clean the current working sessions, includes: All Requests, Domains and Clients ### [](https://docs.proxyman.com/advanced-features/clear-session#whats-for) What's for? * Refresh New Session without quitting the app * Release Unnecessary Memory ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lVOR_UZ9Rohmj8PJM%252F-M5lXf4cJgfNjv-6Rj6T%252FScreen%2520Shot%25202020-04-25%2520at%252020.32.51.png%3Falt%3Dmedia%26token%3Da718d1f3-4ffd-43fc-87a6-a2db78b40bef&width=768&dpr=4&quality=100&sign=3192879b&sv=2) [PreviousWebSocket](https://docs.proxyman.com/advanced-features/websocket) [NextBlock List](https://docs.proxyman.com/advanced-features/blacklist) Last updated 5 years ago --- # Reverse Proxy | Proxyman ### [](https://docs.proxyman.com/advanced-features/reverse-proxy#id-1.-whats-it) 1\. What's it? Reverse Proxy would create a **local WebServer** that transparently proxies your traffic to a remote server. By doing this way, Proxyman can capture and log your traffic. Reverse Proxy is useful when you are working on a client that doesn't support HTTP/HTTPS Proxy or the HTTP Proxy config is too complicated. For instance, the majority of Command-Line apps would not respect the system HTTP/HTTPS proxies, so Proxyman could not capture its traffic. To resolve it, you have to either: * Explicitly config an HTTP/HTTPS Proxy. It's complicated and depends on the network library you are using. Check out this [troubleshooting](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries) to know further. * Use Reverse Proxy. Reverse Proxy is available on Proxyman 2.29.0+. ### [](https://docs.proxyman.com/advanced-features/reverse-proxy#id-2.-benefit) 2\. Benefit * Reverse Proxy feature: You can connect to Proxyman local WebServer, and it will forward your traffic to the remote host. No need to set up an HTTP/HTTPS Proxy on your client. * Import Reverse Proxy Setting from Charles Proxy. * Preserve Host in Header. * Automatically select the available port when creating a new entry. * Able to use Breakpoint, Map Local, Scripting for Reverse Proxy traffic 💯. ### [](https://docs.proxyman.com/advanced-features/reverse-proxy#id-3.-how-to-use) 3\. How to use 1. Access Reverse Proxy tool from Tools Menu -> Reverse Proxy 2. Create a new entry by entering a Remote Host and Remote Port. For the Local port, Proxyman would select automatically. You can change to a different port, but it must be available. 3. Save. 4. On your client application, change the URL to http://localhost: (e.g. http://localhost:10000) 5. Make a request and inspect the traffic from the Proxyman app. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MdAERP18CoGcrMNbD3Y%252F-MdAGoxm_NUHCiSvMu7x%252FScreen%2520Shot%25202021-06-26%2520at%252017.05.42.png%3Falt%3Dmedia%26token%3D7a106ec6-f42f-498f-b509-d3ce9f5db1ed&width=768&dpr=4&quality=100&sign=e0b4330c&sv=2) Reverse Proxy Tool ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MdAGreiZFaAKsQfN_vv%252F-MdAGunvGvvXWx91ro2J%252FScreen%2520Shot%25202021-06-26%2520at%252017.05.45.png%3Falt%3Dmedia%26token%3D20216e7d-ea9b-4c41-b88d-85d96c71c148&width=768&dpr=4&quality=100&sign=d714e1bf&sv=2) Create new Reverse Proxy Entry Proxyman would perform SSL Handshake to your Remote Server if the port is 443. Otherwise, it considers as a normal HTTP WebServer. **Preserve Host in Header Fields** allows you to preserve the original Host value. You should use it with caution because your remote server can reject the request due to a mismatched Host Value. [PreviousPublish to Gist](https://docs.proxyman.com/advanced-features/publish-to-gist) [NextCode Generator](https://docs.proxyman.com/advanced-features/code-generator) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/reverse-proxy#id-1.-whats-it) * [2\. Benefit](https://docs.proxyman.com/advanced-features/reverse-proxy#id-2.-benefit) * [3\. How to use](https://docs.proxyman.com/advanced-features/reverse-proxy#id-3.-how-to-use) --- # Repeat | Proxyman ### [](https://docs.proxyman.com/advanced-features/repeat#id-1.-whats-it) 1\. What's it? Repeat tool is a useful tool for quickly making a new HTTP request with the same HTTP Header and Body for seeing the new response without changing from your browsers or clients. ### [](https://docs.proxyman.com/advanced-features/repeat#id-2.-whats-it-for) 2\. What's it for? * Quickly make an HTTP/HTTPS Request for testing the newest response from the server. * It's useful for developers to test the change of the server without repeating the request manually. Repeat tool only supports HTTP/HTTPS Requests. Repeat on WS/WSS traffic might be failed. Repeated requests can be modified by the Breakpoint, Map Local, and Scripting tool if it matches any rules. ### [](https://docs.proxyman.com/advanced-features/repeat#id-3.-how-to-use) 3\. How to use * Right-Click on a single or multiple Request(s) -> **Repeat** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FIqaM1b6s9R5KYortG3rV%252FScreen_Shot_2022-06-23_at_14_49_23.jpg%3Falt%3Dmedia%26token%3D930e9a0a-5e71-47bd-809f-462072ea3755&width=768&dpr=4&quality=100&sign=c713e2e8&sv=2) Quickly repeat the current requests ⌘ ⏎ : Repeat the current selected request. ### [](https://docs.proxyman.com/advanced-features/repeat#id-4.-settings) 4\. Settings * **Request Timeout**: In Setting -> Tools Tab -> Request Timeout: Define a second that the Request will timeout. Use 0 to disable it. Available on Proxyman 4.13.0 or later [PreviousCommand Palette](https://docs.proxyman.com/basic-features/command-palette) [NextEdit & Repeat](https://docs.proxyman.com/advanced-features/edit-and-repeat) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/repeat#id-1.-whats-it) * [2\. What's it for?](https://docs.proxyman.com/advanced-features/repeat#id-2.-whats-it-for) * [3\. How to use](https://docs.proxyman.com/advanced-features/repeat#id-3.-how-to-use) * [4\. Settings](https://docs.proxyman.com/advanced-features/repeat#id-4.-settings) --- # Map Local (Directory) | Proxyman [](https://docs.proxyman.com/advanced-features/map-local-directory#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------------ It's a handy tool to map a matched requests to local files on a selected Directory. If the local files doesn't exist, it will serve from the real server. If you would like to map a Local File, let check out the Map Local (File) page [Map Local (File)](https://docs.proxyman.com/advanced-features/map-local) [](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.-how-to-use) 2\. How to use -------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.1-map-a-path-and-its-subdirectories) 2.1 Map a path and its subdirectories `api.proxyman.io/build/v1/*` => All sub-paths after `/v1/` will map to a selected directory. For instance, we select `~/desktop/my_folder` as the local directory Real URL Resolved Local Path http://api.proxyman.io/build/v1/index.html ~/desktop/my\_folder/index.html http://api.proxyman.io/build/v1/js/main.js ~/desktop/my\_folder/js/main.js #### [](https://docs.proxyman.com/advanced-features/map-local-directory#how-to-config) How to config Rule How to use Examples Wildcard * Check ON "Include subpaths" checkbox * Or use /\* at the end of the URL * api.proxyman.io/build/v1/ (Check ON) * api.proxyman.io/build/v1/\* Regex * Use (.\*) at the end * https:\\/\\/api.proxyman.io\\/build\\/v1\\/(.\*) * https:\\/\\/api.proxyman.io\\/build\\/v1\\/(.\*.css) Make sure you use `()` group Regex operator to tell Proxyman where to map ### [](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.2-map-entire-host) 2.2 Map Entire Host `api.proxyman.io/*` => All sub-paths will map to a selected directory. For instance, we select `~/desktop/my_folder` as the local directory Real URL Resolved Local Path http://api.proxyman.io/build/v1/index.html ~/desktop/my\_folder/build/v1/index.html http://api.proxyman.io/build/v1/js/main.js ~/desktop/my\_folder/build/v1/js/main.js #### [](https://docs.proxyman.com/advanced-features/map-local-directory#how-to-config-1) How to config Rule How to use Examples Wildcard * Leave the path blank * api.proxyman.io Regex * Use single path that contains (.\*) at the end * https:\\/\\/api.proxyman.io\\/(.\*) * https:\\/\\/api.proxyman.io\\/(\*.html) [](https://docs.proxyman.com/advanced-features/map-local-directory#id-3.-map-local-directoy-with-scripting-tool) 3\. Map Local Directoy with Scripting Tool ✅ ------------------------------------------------------------------------------------------------------------------------------------------------------------------ If you would like to do Map Local Directory with **complicated rules,** you might check out [Scripting](https://docs.proxyman.com/scripting/script#1-whats-it) since it's easier to achieve the same result. Please check out our [Snippet Code](https://docs.proxyman.com/scripting/snippet-code#2-common-on-request-and-response) to understand how to map a local file with Javascript Code. [PreviousMap Local (File)](https://docs.proxyman.com/advanced-features/map-local) [NextMap Remote](https://docs.proxyman.com/advanced-features/map-remote) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/map-local-directory#id-1.-whats-it) * [2\. How to use](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.-how-to-use) * [2.1 Map a path and its subdirectories](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.1-map-a-path-and-its-subdirectories) * [2.2 Map Entire Host](https://docs.proxyman.com/advanced-features/map-local-directory#id-2.2-map-entire-host) * [3\. Map Local Directoy with Scripting Tool ✅](https://docs.proxyman.com/advanced-features/map-local-directory#id-3.-map-local-directoy-with-scripting-tool) --- # Charles Proxy Converter | Proxyman [](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-1.-whats-it) 1\. What's it? ---------------------------------------------------------------------------------------------------------- Proxyman is capable of converting and reading the `chls` files from Charles Proxy app to `har` format that Proxyman can understand. It requires that Charles Proxy beis already installed in order to convert `chls` files You can manually convert the files from the File menu -> Convert -> `chls` to `har` ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M6PIQiDj7p2umCK6D5Y%252F-M6PIce9rkDFwLNTFfBY%252FScreen%2520Shot%25202020-05-03%2520at%252018.31.39.png%3Falt%3Dmedia%26token%3Dbdb9ae4f-9a63-4eb0-a199-cd50b532cced&width=768&dpr=4&quality=100&sign=f0a214cb&sv=2) [](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-2.-how-does-it-work) 2\. How does it work? ------------------------------------------------------------------------------------------------------------------------- In general, Proxyman uses [Convert CLI from Charles Proxy](https://www.charlesproxy.com/documentation/tools/command-line-tools/) to convert .chls to .har, which Proxyman can understand. 1. As soon as you open `chls` file, Proxyman tries to find the Charles Proxy app, which has a bundle ID is `com.xk72.Charles` 2. Convert by using the convert command 3\. The output is `har` formatted in your Desktop directory [](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-3.-how-to-use) 3\. How to use? ------------------------------------------------------------------------------------------------------------- There are several ways to open `chls` files: * Open the `chls` file directly (Double-Click on the file, or Open With from Finder app) * Drag and drop the file to the Proxyman app * File -> Open and select `chls` files [PreviousAllow List](https://docs.proxyman.com/advanced-features/whitelist) [NextCustom Certificates](https://docs.proxyman.com/advanced-features/custom-certificates) Last updated 3 months ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-1.-whats-it) * [2\. How does it work?](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-2.-how-does-it-work) * [3\. How to use?](https://docs.proxyman.com/advanced-features/charles-proxy-converter#id-3.-how-to-use) Copy $ ./Applications/Charles.app/Contents/MacOS/Charles convert ~/Desktop/input.chls ~/Desktop/output.har --- # Protobuf | Proxyman ### [](https://docs.proxyman.com/advanced-features/protobuf#id-1.-protocol-buffer) 1\. Protocol Buffer From [Protobuf's Google](https://developers.google.com/protocol-buffers/) , Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. Proxyman is capable of **reading** a Protobuf Binary and parsing to **JSON Format** with given Protobuf File Descriptors. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lixcwWeMPWwvY2whW%252F-M5lkc_hSq_6DhDF6Az5%252FScreen_Shot_2020-04-25_at_21_32_54.png%3Falt%3Dmedia%26token%3D70cdd7c2-5c07-49e7-99fc-84fb0d94bfa8&width=768&dpr=4&quality=100&sign=d83a495f&sv=2) Parse protobuf request with File Descriptor ### [](https://docs.proxyman.com/advanced-features/protobuf#id-2.-protobuf-file-descriptor-.desc) 2\. Protobuf File Descriptor (\*.desc) Proxyman requires File Descriptor (\*.desc) to properly parse the Protobuf Data. There are various ways to get the File Descriptor: #### [](https://docs.proxyman.com/advanced-features/protobuf#id-1.-ask-your-colleagues) 1\. Ask your colleagues. If your company is using Protobuf, it's a high chance that your colleagues have already had this file, especially the Backend and Frontend teams. It might be one or multiple descriptor files. #### [](https://docs.proxyman.com/advanced-features/protobuf#id-2.-generate-from-.proto-file) 2\. Generate from \*.proto file If you have a bunch of \*.proto files, you can simply generate 1 single \*.desc file by using the following command line. Once you have the Descriptor File, you can import them to Proxyman: * Proxyman -> Tools Menu -> Protobuf Schema * Click on the + button and select the **output.desc** file Proxyman 3.6.0+ only accepts **File Descriptor (\*.desc)** for better Protobuf parsing. If you have **\*.proto** files, you can convert them to **\*.desc**. Please check out the next section. Proxyman automatically imports all common types from **Google Protobuf**, such as Timestamp, Struct, Value, Enum, Method, etc. Proxyman supports both **proto2** and **proto3** syntax. [Read more](https://developers.google.com/protocol-buffers/docs/proto3) ### [](https://docs.proxyman.com/advanced-features/protobuf#id-3.-protobuf-config) 3\. Protobuf Config Before using Protobuf, you have to config which Message Type should be used to parse the Protobuf data. The following table describes which config are: Name Description Schema Add `.desc` file if need Message Type The Class name of the root object in Protobuf binary. **Must include Package name** Payload Type: **Auto** Auto detect if the Protobuf Binary is encoding as a Single Message or [Delimited Message](https://developers.google.com/protocol-buffers/docs/techniques#streaming) Payload Type: **Single Message** Single Mesage in a Protobuf Binary Payload Type: **Delimited Message** Multiple Messages in a Protobuf Binary (Length-Prefix) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lixcwWeMPWwvY2whW%252F-M5lmAlPcvbTehjdCiFz%252FScreen%2520Shot%25202020-04-25%2520at%252021.40.16.png%3Falt%3Dmedia%26token%3D8ee4e3fe-b1e9-40c4-8a16-f9b036c7b2ba&width=768&dpr=4&quality=100&sign=66bfaf39&sv=2) Add Message Type to particular requests ### [](https://docs.proxyman.com/advanced-features/protobuf#id-4.-how-to-use) 4\. How to use? There are **two** ways to parse Protobuf properly with qualified name fields: * Define Protobuf Rules * Read from Content-Type Header #### [](https://docs.proxyman.com/advanced-features/protobuf#id-4.1-define-protobuf-rule) 4.1 Define Protobuf Rule 1. Make a request, which has `Content-Type: application/x-protobuf` or `Content-Type: application/protobuf` 2. You can see the Warning that Proxyman couldn't parse properly due to the absence of Message Type. Click Add to open Protobuf Settings ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lnvriZFMegQHaQMbz%252F-M5lq38TdKPlCYQk1JvO%252FScreen_Shot_2020-04-25_at_21_56_19.png%3Falt%3Dmedia%26token%3Dfe738ee8-808e-4032-ac8c-23fec9123fe2&width=768&dpr=4&quality=100&sign=3b5f53b4&sv=2) Missing Message Type 3\. Add Schema and fill Message type and Payload Type: * Right Click on the Protobuf Request -> Tools -> Protobuf * Select which Message Type for this request (Add Desc file if need) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lixcwWeMPWwvY2whW%252F-M5lmAlPcvbTehjdCiFz%252FScreen%2520Shot%25202020-04-25%2520at%252021.40.16.png%3Falt%3Dmedia%26token%3D8ee4e3fe-b1e9-40c4-8a16-f9b036c7b2ba&width=768&dpr=4&quality=100&sign=66bfaf39&sv=2) 4\. Click Add and see qualified JSON Format ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lnvriZFMegQHaQMbz%252F-M5lsSsNQf3WDg0JIvmX%252FScreen%2520Shot%25202020-04-25%2520at%252022.08.07.png%3Falt%3Dmedia%26token%3De7b4f811-5fb5-4e03-beda-5ddd696abab2&width=768&dpr=4&quality=100&sign=93d88e30&sv=2) #### [](https://docs.proxyman.com/advanced-features/protobuf#id-4.2-read-from-content-type-header) 4.2 Read from Content-Type Header You can **dynamically** provide the Protobuf Config from `Content-Type` For example: Your `Content-Type` in the Request or Response might look like: `Content-Type: application/x-protobuf; messageType="tutorial.Address"; delimited=true` `Content-Type: application/x-protobuf; messageType="com.proxyman.User"; delimited=false` To specify that the Protobuf Body this MessageType and the payload encoding. ### [](https://docs.proxyman.com/advanced-features/protobuf#id-5.-troubleshooting) 5\. Troubleshooting #### [](https://docs.proxyman.com/advanced-features/protobuf#id-5.1-some-name-fields-are-missing) 5.1 Some name fields are missing There is a situation where some field names are absent because the field name definition is not included in your Protobuf File Descriptor. It might be your descriptor is out of date. **Solution**: * Remove old Protobuf Schema and Add the latest descriptor file from your server. * If you're using Proxyman 3.5.2 and older, please update to Proxyman 3.6.0 or later. Then, use File Descriptor (\*.desc) for better results. [PreviousSave Session](https://docs.proxyman.com/advanced-features/save-session) [NextWebSocket](https://docs.proxyman.com/advanced-features/websocket) Last updated 10 months ago * [1\. Protocol Buffer](https://docs.proxyman.com/advanced-features/protobuf#id-1.-protocol-buffer) * [2\. Protobuf File Descriptor (\*.desc)](https://docs.proxyman.com/advanced-features/protobuf#id-2.-protobuf-file-descriptor-.desc) * [3\. Protobuf Config](https://docs.proxyman.com/advanced-features/protobuf#id-3.-protobuf-config) * [4\. How to use?](https://docs.proxyman.com/advanced-features/protobuf#id-4.-how-to-use) * [5\. Troubleshooting](https://docs.proxyman.com/advanced-features/protobuf#id-5.-troubleshooting) Copy # Install protobuf cli if need brew install protobuf # Create `input` folder on the Desktop # Copy all proto files to the `input` folder # Generate 1 descriptor file with multiple proto files protoc --descriptor_set_out=output.desc --include_imports -I=/Users//Desktop/input /Users//Desktop/input/*.proto # Done # output.desc --- # Code Generator | Proxyman [](https://docs.proxyman.com/advanced-features/code-generator#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------- Code Generator is a useful tool that helps you automatically generate your HTTP/HTTPS Requests for particular code languages. The following table will list all supported languages: * cURL * HTTPie * HAR * Postman Collection 2 * Axios * Go * Java + HTTPClient * Javascript + jQuery * Node + HTTP * Node + Fetch * Python + Request * Objective-C + NSURLSession * Swift + Alamofire 5 * Swift + Moya * Swift + URLSession ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mi4cbS8HHJFoufQOywH%252F-Mi4e7knCxyCTQxI4GiT%252Fcode-generator.png%3Falt%3Dmedia%26token%3D653f2edc-7ea3-42ad-af12-40ec9ff118ac&width=768&dpr=4&quality=100&sign=a40c87fd&sv=2) Generate Swift + Alamofire 5 Code [](https://docs.proxyman.com/advanced-features/code-generator#id-2.-how-to-open-the-code-generator-tab) 2\. How to open the Code Generator Tab? ---------------------------------------------------------------------------------------------------------------------------------------------------- 1. On the Request Panel Tab -> Click on the "+" Button 2. New Windows appears -> Click on the "Code Generator" checkbox ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fq6alY9uza5DrvoWQAFSs%252FCleanShot%25202025-01-29%2520at%25203%25E2%2580%25AF.44.21%25402x.jpg%3Falt%3Dmedia%26token%3Ddbcb763d-c629-420c-8c6c-990e9ec759de&width=768&dpr=4&quality=100&sign=85149a24&sv=2) How to open the Code Generator Tab * New Tab will add to the Request Panel -> Select any language to show the code [](https://docs.proxyman.com/advanced-features/code-generator#id-3.-missing-your-favorite-library) 3\. Missing your favorite library? ------------------------------------------------------------------------------------------------------------------------------------------ If you cannot find your library, you can: * Create a [Ticket](https://github.com/ProxymanApp/Proxyman/issues) on Github. * Fork [Code-Generator-Plugin Repository](https://github.com/ProxymanApp/code-generator-plugin) and open a PR. We appreciate your contribution 🙇‍♂️ [PreviousReverse Proxy](https://docs.proxyman.com/advanced-features/reverse-proxy) [NextDiff](https://docs.proxyman.com/advanced-features/diff) Last updated 11 months ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/code-generator#id-1.-whats-it) * [2\. How to open the Code Generator Tab?](https://docs.proxyman.com/advanced-features/code-generator#id-2.-how-to-open-the-code-generator-tab) * [3\. Missing your favorite library?](https://docs.proxyman.com/advanced-features/code-generator#id-3.-missing-your-favorite-library) --- # Network Conditions | Proxyman ### [](https://docs.proxyman.com/advanced-features/network-throttling#id-1.-whats-it) 1\. What's it? Network Conditions (Network Throttling) v1 allows developers to simulate adverse networking environments. Proxyman provides various preset profiles: Profile Description 100% Lost connection 100 % lost all connection Very Bad Network Download/Upload: < 1mbps Slow Network Download/Upload: 5-10 mbps Medium Network Download/Upload: 10-20 mbps 2G (EDGE) Download: <240kbps, Upload <200kbps 3G Download: <780kbps, Upload <300kbps 4G (LTE) Download: 30-50mbps, Upload 5-10mbps Wi-Fi Download: 25-40mbps, Upload 15-30mbps Wi-Fi 802.11ac Download: 150-250mbps, Upload 70-100mbps ### [](https://docs.proxyman.com/advanced-features/network-throttling#id-2.-benefit) 2\. Benefit? * Various preset profiles: 3G, 4G, Wifi, Bad/Medium Network, etc. * Help developers to simulate various network conditions (Download/Upload Bandwidth, Packets Dropped rate, delay). * Easier to test your app under a particular network condition. * Apply for **system-Wide** or **certain domains**. Network Conditions v1 does not allow you to customize a profile. We will implement it in v2. To better simulate the real-life, the download/upload bandwidth is not fixed, it might randomize in a given range. ### [](https://docs.proxyman.com/advanced-features/network-throttling#id-3.-how-to-use-it) 3\. How to use it? You can access the feature by navigating to Tool -> Network Condition (CMD+SHIFT+J) or access from the right-menu context. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVit2xH7yEC5FgKyj2f%252F-MVit7lBYfPWRzmass9F%252FScreen%2520Shot%25202021-03-14%2520at%252009.59.23.png%3Falt%3Dmedia%26token%3D389ae2fd-021d-4250-9a9b-49ac30e57392&width=768&dpr=4&quality=100&sign=240090ec&sv=2) Set Network Condition for particular domain ### [](https://docs.proxyman.com/advanced-features/network-throttling#id-4.-alternative) 4\. Alternative * Network Link Conditions for macOS: [https://nshipster.com/network-link-conditioner/](https://nshipster.com/network-link-conditioner/) [PreviousGraphQL](https://docs.proxyman.com/advanced-features/graphql) [NextMultiple Filters](https://docs.proxyman.com/advanced-features/multiple-filters) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/network-throttling#id-1.-whats-it) * [2\. Benefit?](https://docs.proxyman.com/advanced-features/network-throttling#id-2.-benefit) * [3\. How to use it?](https://docs.proxyman.com/advanced-features/network-throttling#id-3.-how-to-use-it) * [4\. Alternative](https://docs.proxyman.com/advanced-features/network-throttling#id-4.-alternative) --- # DNS Spoofing | Proxyman [](https://docs.proxyman.com/advanced-features/dns-spoofing#id-1.-whats-it) 1\. What's it? ----------------------------------------------------------------------------------------------- DNS Spoofing allows developers: * Provide a custom DNS for particular domains * Able to map from a domain to different domains ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FMaaOHZJCNK1UeU8jFG09%252F1.png%3Falt%3Dmedia%26token%3D47fa3a35-58cf-4be5-b7d2-8cd39a172589&width=768&dpr=4&quality=100&sign=293eb39b&sv=2) DNS Spoofing [](https://docs.proxyman.com/advanced-features/dns-spoofing#id-2.-what-is-different-with-map-remote) 2\. What is different with Map Remote? ------------------------------------------------------------------------------------------------------------------------------------------------ DNS Spoofing is different than Map Remote by: * The \`Host\` in the Request Header doesn't change * The URL doesn't change On the other hand, Map Remote allows you to change the Host Header and the mapped URL. [](https://docs.proxyman.com/advanced-features/dns-spoofing#id-3.-how-to-use-it) 3\. How to use it? -------------------------------------------------------------------------------------------------------- 1. Simply create a new rule by opening the Tools Menu -> DNS Spoofing 2. Create new Rule with the Host name and Remote Address 3. Done ✅ [PreviousAccess Control](https://docs.proxyman.com/advanced-features/access-control) [NextSOCKS Proxy](https://docs.proxyman.com/advanced-features/socks-proxy) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/dns-spoofing#id-1.-whats-it) * [2\. What is different with Map Remote?](https://docs.proxyman.com/advanced-features/dns-spoofing#id-2.-what-is-different-with-map-remote) * [3\. How to use it?](https://docs.proxyman.com/advanced-features/dns-spoofing#id-3.-how-to-use-it) --- # Diff | Proxyman ### [](https://docs.proxyman.com/advanced-features/diff#id-1.-whats-it) 1\. What's it? During using Proxyman, you might face the situation to find the difference between requests and responses. The Diff tool would help you to: * Diff two Requests or Response, include the URL, Method, Status Code, Headers, and the Text-based body. * Render as Side-by-Side or Unified. * Light and Dark Theme. * Export as a unified file. * Open the diff by 3rd-party applications, such as FileMerge. * Highlight and add comments. This feature is only available for macOS 11.2 and later. ### [](https://docs.proxyman.com/advanced-features/diff#id-2.-how-to-use-it) 2\. How to use it? 1. Select your requests on the main table view. 2. Right-Click -> Tools -> Add to Diff pool (Or using ⌘Y) 3. On the Diff window, select Left and Right Panel. 4. Proxyman performs the diff operation and displays it. #### [](https://docs.proxyman.com/advanced-features/diff#side-by-side-mode) Side-by-Side mode ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F8EScHubheb71QvKA8L0A%252FScreen%2520Shot%25202022-03-27%2520at%252009.30.03.png%3Falt%3Dmedia%26token%3De824bef6-f357-46c6-986e-a874f5f16e76&width=768&dpr=4&quality=100&sign=95bbec1a&sv=2) Side By Side Mode #### [](https://docs.proxyman.com/advanced-features/diff#unified-mode) Unified Mode ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fnnud51Dmklg6gNuUYFY5%252FScreen%2520Shot%25202022-03-27%2520at%252009.31.53.png%3Falt%3Dmedia%26token%3Dd85f3fd1-1517-4fb6-8097-d00fcdf8d08c&width=768&dpr=4&quality=100&sign=1dd28310&sv=2) Unified Mode ### [](https://docs.proxyman.com/advanced-features/diff#id-3.-open-with-3rd-party-diff-tools) 3\. Open with 3rd-party diff tools * File Merge: Required Xcode to install * Kaleidoscope: You have to install the `ksdiff` in the Kaleidoscope's preference. [PreviousCode Generator](https://docs.proxyman.com/advanced-features/code-generator) [NextAccess Control](https://docs.proxyman.com/advanced-features/access-control) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/diff#id-1.-whats-it) * [2\. How to use it?](https://docs.proxyman.com/advanced-features/diff#id-2.-how-to-use-it) * [3\. Open with 3rd-party diff tools](https://docs.proxyman.com/advanced-features/diff#id-3.-open-with-3rd-party-diff-tools) --- # External Proxy | Proxyman ### [](https://docs.proxyman.com/advanced-features/external-proxy#id-1.-whats-it) 1\. What's it? Some companies have a central Proxy server, and all outgoing requests must go through to the Proxy Server in order to access the Internet. In this case, you might have to config Proxyman to proxy all connections to the External Proxy. ### [](https://docs.proxyman.com/advanced-features/external-proxy#id-2.-benefits) 2\. Benefits * Navigate all traffic to your cooperated Proxy Server. * Able to define Hosts, or Domains which bypass the External Proxy. * Support HTTP/HTTPS/SOCKS Proxy. * Support PAC Proxy (Automatic Proxy Configuration) (Proxyman 3.2.0+) ### [](https://docs.proxyman.com/advanced-features/external-proxy#id-3.-how-to-use) 3\. How to use * **Tool** menu -> **Proxy Setting** -> **External Proxy Setting...** * You can config **HTTP, HTTPS, or SOCKS Proxy**, which point to your external Proxy server. * If you have a **PAC URL**, you can use it in Automatic Proxy Configuration. * Proxyman also supports **Basic Authentication**. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FhiZM2a3fBvoxkyT7GMqO%252FScreen%2520Shot%25202022-02-24%2520at%252011.39.19.png%3Falt%3Dmedia%26token%3Deb9ad47e-2da9-4481-b7cb-a068449777b2&width=768&dpr=4&quality=100&sign=a83efdf9&sv=2) HTTP, HTTPS, SOCKS, PAC Proxy External SOCKS Proxy with authentication is not supported. ### [](https://docs.proxyman.com/advanced-features/external-proxy#id-4.-bypass-proxy) 4\. Bypass Proxy * You can define hosts/domains that will be bypass the external proxy. Each host must be separated by a Comma. Wildcard (\* or ?) is supported. * By default, Proxyam automatically bypasses all localhost traffic from the external proxy. To enable it, please check the **"Always bypass external proxies for localhost" checkbox.** Localhost traffic is traffic from your localhost, 127.0.0.1, or 0.0.0.0 with all ports. [PreviousMap Remote](https://docs.proxyman.com/advanced-features/map-remote) [NextSave Session](https://docs.proxyman.com/advanced-features/save-session) Last updated 3 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/external-proxy#id-1.-whats-it) * [2\. Benefits](https://docs.proxyman.com/advanced-features/external-proxy#id-2.-benefits) * [3\. How to use](https://docs.proxyman.com/advanced-features/external-proxy#id-3.-how-to-use) * [4\. Bypass Proxy](https://docs.proxyman.com/advanced-features/external-proxy#id-4.-bypass-proxy) --- # Swagger OpenAPI | Proxyman [](https://docs.proxyman.com/advanced-features/swagger-openapi#id-1.-openapi) 1\. OpenAPI ---------------------------------------------------------------------------------------------- From Proxyman v5.14.0 or later, Proxyman can export Proxyman Requests/Responses to OpenAPI YAML format or HTML. * Support YAML Format * Support HTML - Swagger OpenAPI style * Built-in in Proxyman, no need for any external dependencies. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FuIwXTP1oY4lpEJAOpvKD%252FScreenshot%25202025-01-06%2520at%25202.37.25%25E2%2580%25AFPM.jpg%3Falt%3Dmedia%26token%3De4ac610d-d3d6-495e-97ea-7c178d706b62&width=768&dpr=4&quality=100&sign=7b00b0af&sv=2) Export your requests/response to OpenAPI HTML Style [](https://docs.proxyman.com/advanced-features/swagger-openapi#id-2.-how-to-use) 2\. How to use ---------------------------------------------------------------------------------------------------- 1. Capture HTTPS requests with Proxyman. Follow the following setup guide: * [iOS devices (iPhone, iPad)](https://docs.proxyman.com/debug-devices/ios-device) * [iOS Simulator](https://docs.proxyman.com/debug-devices/ios-simulator) * [Android devices](https://docs.proxyman.com/debug-devices/android-device#id-1.-android-setup-guide) * [Android Emulator](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) * [macOS (Web Browser)](https://docs.proxyman.com/debug-devices/macos) Verify Proxyman can capture & decrypt your HTTPS Requests/Responses ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FvKbt9lt4ApOXy6sUbsX3%252FCleanShot%25202025-01-06%2520at%25202%25E2%2580%25AF.47.34%25402x.jpg%3Falt%3Dmedia%26token%3Da7fbb70f-d279-4879-8710-0a6b5262896d&width=768&dpr=4&quality=100&sign=9590bff5&sv=2) Capture your HTTPS Request/Response 1. Select your requests on the main table -> Right-Click -> Export -> OpenAPI -> Select either OpenAPI YAML or OpenAPI HTML 2. Done ✅ [PreviousSOCKS Proxy](https://docs.proxyman.com/advanced-features/socks-proxy) [NextTLS Key Logging](https://docs.proxyman.com/advanced-features/tls-key-logging) Last updated 11 months ago * [1\. OpenAPI](https://docs.proxyman.com/advanced-features/swagger-openapi#id-1.-openapi) * [2\. How to use](https://docs.proxyman.com/advanced-features/swagger-openapi#id-2.-how-to-use) --- # SOCKS Proxy | Proxyman [](https://docs.proxyman.com/advanced-features/socks-proxy#id-1.-whats-it) 1\. What's it? ---------------------------------------------------------------------------------------------- From Proxyman 4.9.0, Proxyman supports SOCKS Proxy beside the normal HTTP/HTTPS Proxy. * Support HTTPS over SOCKS Proxy: All debugging tools (e.g. Map Local, Breakpoint, ...) still work fine. * Compatible with SOCKS 5 Proxyman app doesn't automatically override the System SOCKS Proxy Setting at launch time. You have to manually enable it if needed. Proxyman only supports \`connect `` and `udp` command. The`bind` ``command is not supported yet. [](https://docs.proxyman.com/advanced-features/socks-proxy#id-2.-how-to-use-it) 2\. How to use it? ------------------------------------------------------------------------------------------------------- 1. Open the SOCKS Proxy Setting in Tools Menu -> Proxy Setting -> SOCKS Proxy Setting 2. By default, Proxyman listens on port 8889 3. On your client: Set the SOCKS proxy to 127.0.0.1 at port 8889 ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FrEFmycrGx972YBsFJUfT%252F252151302-d68e2a24-1310-4764-b8b5-ecc37ef42fab.png%3Falt%3Dmedia%26token%3D6cb2aa47-d0dd-438e-b10b-1d8179760d87&width=768&dpr=4&quality=100&sign=732ac63a&sv=2) SOCKS Proxy [PreviousDNS Spoofing](https://docs.proxyman.com/advanced-features/dns-spoofing) [NextSwagger OpenAPI](https://docs.proxyman.com/advanced-features/swagger-openapi) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/socks-proxy#id-1.-whats-it) * [2\. How to use it?](https://docs.proxyman.com/advanced-features/socks-proxy#id-2.-how-to-use-it) --- # *.local requests do not appear on Proxyman | Proxyman ### [](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman#id-1.-problem) 1\. Problem * All requests are presented on Proxyman properly, except for some local requests (`*.local` or `localhost`) ### [](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman#id-2.-solution) 2\. Solution * If it's `localhost` request, please read the following pages [I could not see any requests from my localhost server](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server) * If it's `*.local` request: Open **System Preference** -> **Network** -> **Wifi** -> **Proxies** tab -> Remove `*.local` in the Bypass List in both Web Proxy (HTTP) and Secure Web Proxy (HTTPS) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5oKxx6OZSVyP-hEc7G%252F-M5oM64S9mIFkXKI1EHP%252FScreen_Shot_2020-04-26_at_09_40_48.png%3Falt%3Dmedia%26token%3D563fe662-8ed9-4f78-b564-ccd95cde756c&width=768&dpr=4&quality=100&sign=4322d3ed&sv=2) [PreviousI could not see any HTTP traffic from my NodeJS, Python, or Ruby scripts](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts) [NextI couldn't see any traffics on Proxyman](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman) Last updated 1 year ago * [1\. Problem](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman#id-1.-problem) * [2\. Solution](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman#id-2.-solution) --- # Custom Filters | Proxyman [](https://docs.proxyman.com/advanced-features/custom-filters#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------- From Proxyman 4.11.0 or later, users can create a filter to save current filter configs and access it later. * Able to create a custom Filter button on the Toolbar with the current filter config * Manage the filter buttons: Create new, Override, Delete, and Rename. * Save time ✅ [](https://docs.proxyman.com/advanced-features/custom-filters#id-2.-how-to-use) 2\. How to use --------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/advanced-features/custom-filters#create-new-filter) Create new filter 1. Setup your filter config (Support Single or Multiple filters) 2. Click on the Save button -> Save -> Enter the name 3. A New Filter is added to the Filter Toolbar. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fyx2c3gZS3P33ff8JatAO%252FCleanShot%25202023-09-12%2520at%252010.14.31%25402x.jpg%3Falt%3Dmedia%26token%3Dc9a8fd95-fbed-42c8-8bc3-d7ad9c28e3a8&width=768&dpr=4&quality=100&sign=527a024b&sv=2) Create new custom filter #### [](https://docs.proxyman.com/advanced-features/custom-filters#override) Override 1. Change your filter config 2. Save button -> Override -> Select the filter that you'd like to override ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FppLKKr174R8KSbrONQSc%252F2.jpg%3Falt%3Dmedia%26token%3D9ef21a91-910e-4ad7-a3da-0ec6a836630d&width=768&dpr=4&quality=100&sign=45057b06&sv=2) Override current filter #### [](https://docs.proxyman.com/advanced-features/custom-filters#delete-or-rename) Delete or Rename 1. Right-click on the filter button 2. Delete or Rename ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FGyg5sIOrHdgO6CJzeyxZ%252FScreenshot%25202023-09-12%2520at%252010.15.18.jpg%3Falt%3Dmedia%26token%3D9d65e361-653f-402b-adcd-6a69fb78c44d&width=768&dpr=4&quality=100&sign=91563259&sv=2) Delete or Rename [PreviousMultiple Filters](https://docs.proxyman.com/advanced-features/multiple-filters) [NextPublish to Gist](https://docs.proxyman.com/advanced-features/publish-to-gist) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/custom-filters#id-1.-whats-it) * [2\. How to use](https://docs.proxyman.com/advanced-features/custom-filters#id-2.-how-to-use) --- # Lost data after updating Proxyman app? | Proxyman ### [](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#problem) Problem After updating the app to the latest version, you might encounter: * Your current data, including all debugging tools rules (Map Local, Scripting, Breakpoint, SSL Proxying List, ...) and user settings, etc are wiped out. Proxyman will **guarantee** that your current data **is never lost**. However, it's still better if we have the backup of your valuable data ⚡️. ### [](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#how-to-recover) How to recover 1. Open the backup folder at `~/Library/Application Support/com.proxyman.NSProxy/user-data-backups` 2. Unzip the latest backup file (You can sort by the "Add Date" in the Finder app. It will show the latest backup). 3. Copy each folder of the backup folder to the app folder at `~/Library/Application Support/com.proxyman.NSProxy` For instance: Copy From Copy To ~/Library/Application Support/com.proxyman.NSProxy/user-data-backups/userdata\_proxyman\_3.6.0\_05-24-2022-11-55-20/user-data ~/Library/Application Support/com.proxyman.NSProxy/user-data ~/Library/Application Support/com.proxyman.NSProxy/user-data-backups/userdata\_proxyman\_3.6.0\_05-24-2022-11-55-20/map-local ~/Library/Application Support/com.proxyman.NSProxy/map-local and more... ### [](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#when-does-proxyman-backup-my-data) When does Proxyman backup my data? After you update Proxyman to a newer version, Proxyman might backup your current data and save at `~/Library/Application Support/com.proxyman.NSProxy/user-data-backups` [PreviousCould not change Proxyman App Icons](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons) [NextProxyman consumes too much RAM & unresponsive](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive) Last updated 1 year ago * [Problem](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#problem) * [How to recover](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#how-to-recover) * [When does Proxyman backup my data?](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app#when-does-proxyman-backup-my-data) --- # Could not change Proxyman App Icons | Proxyman ### [](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons#id-1.-problems) 1\. Problems? Proxyman 3.2.0 introduces various new App Icons that help Proxyman to be distinguished from other apps in the Dock. If you've encountered the following issue: * Could not update the icon in Preference -> Theme ### [](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons#id-2.-solution) 2\. Solution 1. Quit Proxyman -> Open Activity Monitor 2. Search "Dock" in the Search Bar 3. Select Dock Extra and Kill it. 4. Relaunch Proxyman and select your favorite App Icon ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FF7YBdj7Sne9qekJ9MMD9%252FScreen_Shot_2022-03-05_at_15_07_41.png%3Falt%3Dmedia%26token%3D56a84cc3-a55f-4d9b-9ab6-96ef7d0baae6&width=768&dpr=4&quality=100&sign=40df7652&sv=2) [Previous\[Breakpoint\] Modify Request/Response by Raw Message](https://docs.proxyman.com/troubleshooting/breakpoint-modify-request-response-by-raw-message) [NextLost data after updating Proxyman app?](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app) Last updated 1 year ago * [1\. Problems?](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons#id-1.-problems) * [2\. Solution](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons#id-2.-solution) --- # Install Certificate | Proxyman [](https://docs.proxyman.com/proxyman-windows/install-certificate#install-certificates-on-windows) Install Certificates on Windows --------------------------------------------------------------------------------------------------------------------------------------- In order to intercept encrypted HTTPS messages (Request or Response), you have to install **Proxyman CA Certificate** on your current Windows Machine. You can install the Proxyman CA Certificate by navigating to * **Certificate** menu -> **Install Certificate on this Windows**... The Proxyman Certificate is a self-signed certificate, which is generated on your machine. Proxyman never stores or transmits any personal data to Proxyman's server or 3rd-party. Please check out the [Privacy Statement](https://proxyman.io/privacy) to understand what Proxyman obtains or not. If you'd like to manually generate a Certificate on your machine then adding to Proxyman. Please check out the [Custom Certificate Doc](https://docs.proxyman.com/advanced-features/custom-certificates#6-how-to-generate-self-signed-certificates-for-custom-root-certificate-that-comply-with-new-apples-security-requirements) [](https://docs.proxyman.com/proxyman-windows/install-certificate#id-1.-automatic-mode) 1\. Automatic mode --------------------------------------------------------------------------------------------------------------- ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FB74UyKOnOUY4V92iOfaI%252FScreenshot%25202023-01-23%2520at%252009.38.09.png%3Falt%3Dmedia%26token%3D9ab1da42-452a-4e95-a9cc-355661bb5cb5&width=768&dpr=4&quality=100&sign=67642c56&sv=2) Auto install the certificate on Windows machine Proxyman provides an automatic script to Install & Trust the Proxyman CA Certificate to the System. * Certificate Menu -> Install Certificate for this Windows -> Click on the "Install & Trust" button * Click YES on the System Prompt ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FDmMaTE3OEbwqHIBUsOIX%252FScreenshot_2023-01-23_at_09_41_41.jpg%3Falt%3Dmedia%26token%3Dd6455c8c-6ade-4f7a-be5a-9f2b53874e26&width=768&dpr=4&quality=100&sign=51ab3ab&sv=2) Grant permission to run the Automatic Script ### [](https://docs.proxyman.com/proxyman-windows/install-certificate#why-do-i-need-to-grant-permission) Why do I need to grant permission? Behind the scene, Proxyman would execute the following command with Admin Mode: [certutil](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/certutil) is a built-in Windows command line to manage the certificate. [](https://docs.proxyman.com/proxyman-windows/install-certificate#id-2.-manual-mode) 2\. Manual Mode --------------------------------------------------------------------------------------------------------- If you don't have permission to execute the script, please do the following step: 1. Close Proxyman 2. Find a Proxyman CA Certificate at "C:\\Users\\\\AppData\\Roaming\\Proxyman\\certificate\\certs\\ca.cer" 3. Double-click to open it 4. Install Certificate -> Select "Current User" -> Select "Place all certificates in the following store" -> "Browse..." ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FjuLJgvdX3SlydNfR7sK9%252F212792551-e3875685-294b-46b4-b563-b3c7051fb29a.jpg%3Falt%3Dmedia%26token%3Dd4a17f38-7322-43ce-972e-f63f872aa087&width=768&dpr=4&quality=100&sign=f171d53f&sv=2) Steps to install the certificate 5\. Select Next -> Finish 6\. Select "YES" on the System Prompt. [PreviousTLS Key Logging](https://docs.proxyman.com/advanced-features/tls-key-logging) [NextWSL](https://docs.proxyman.com/proxyman-windows/wsl) Last updated 1 year ago * [Install Certificates on Windows](https://docs.proxyman.com/proxyman-windows/install-certificate#install-certificates-on-windows) * [1\. Automatic mode](https://docs.proxyman.com/proxyman-windows/install-certificate#id-1.-automatic-mode) * [Why do I need to grant permission?](https://docs.proxyman.com/proxyman-windows/install-certificate#why-do-i-need-to-grant-permission) * [2\. Manual Mode](https://docs.proxyman.com/proxyman-windows/install-certificate#id-2.-manual-mode) Copy $ certutil -addstore "Root" --- # Proxyman consumes too much RAM & unresponsive | Proxyman [](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#problems) Problems -------------------------------------------------------------------------------------------------------------------- If Proxyman is: * Unresponsive after using it for a while. * Consume too much Memory. You might encounter the above problems if you enable SSL Proxying with the following rules: * Use the all \`\*\` wildcard to intercept all traffic from your Mac Machine. * Enable the entire web browser (Google Chrome, Safari, Firefox, etc.). [](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#reason) **Reason** -------------------------------------------------------------------------------------------------------------------- Proxyman will intercept and decrypt all traffic which leads to high memory usage. In the worst scenario, the app can become unresponsive. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FQG6Gb8p4TKIBY3Q30b3l%252FScreen_Shot_2022-08-10_at_14_01_16.png%3Falt%3Dmedia%26token%3De0903e7a-5bfe-419d-a9cf-cc58b893670c&width=768&dpr=4&quality=100&sign=800011a2&sv=2) SSL Proxying List with web browser or \* wildcard can slow your Mac. [](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#solution) Solution -------------------------------------------------------------------------------------------------------------------- 1. ✅ Update to the latest Proxyman version (Memory Leaks has been fixed in the latest builds) 2. Open Tools -> SSL Proxying List 3. Remove all Web Browser or \`\*\` wildcards if they exist. 4. Enable SSL Proxying on particular domains. [PreviousLost data after updating Proxyman app?](https://docs.proxyman.com/troubleshooting/lost-data-after-updating-proxyman-app) Last updated 1 year ago * [Problems](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#problems) * [Reason](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#reason) * [Solution](https://docs.proxyman.com/troubleshooting/proxyman-consumes-too-much-ram-and-unresponsive#solution) --- # Write your own Addons | Proxyman [](https://docs.proxyman.com/scripting/write-your-own-addons#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------ You can write your own Addon to achieve what Proxyman hasn't provided yet. You can do: * Write your own Javascript Addon. * Use [Built-in Libraries](https://docs.proxyman.com/scripting/built-in-js-libraries) . * Write your library and share it with your colleauges. [](https://docs.proxyman.com/scripting/write-your-own-addons#id-2.-how-to-write-an-addon) 2\. How to write an addon? ------------------------------------------------------------------------------------------------------------------------- 1. Open User Addon folder at `~/Library/Application\ Support/com.proxyman.NSProxy/users` or you can open by opening the More Button -> Documentations -> Open Custom Addons Folder... ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MgziXuEudQDPNF3CBS_%252F-MgzivyyrfR93vyj9hMZ%252FScreen%2520Shot%25202021-08-13%2520at%252020.37.39.png%3Falt%3Dmedia%26token%3D2a834f02-f339-422c-80ad-b5520713e876&width=768&dpr=4&quality=100&sign=e5848f45&sv=2) 2\. Duplicate `HelloWorld.js` file and rename it to **MyAwesomeAddon.js** 3\. Open the file and you can see the template. 4\. Change the metadata and write your JS Code * You can import built-in addons by using **require(@"addons/")** Check out the [built-in addons](https://docs.proxyman.com/scripting/addons#2-built-in-addons) that Proxyman provides * You can import a built-in library by using **require(@"lib/")** Check out the [built-in library](https://docs.proxyman.com/scripting/built-in-js-libraries) that Proxyman provides 5\. Save the file 6\. Open your Script in Proxyman app and import the script **require("@users/MyAwesomeAddon.js")** is your addon directory @users is the Custom Addons Folder. [](https://docs.proxyman.com/scripting/write-your-own-addons#id-3.-note) 3\. Note -------------------------------------------------------------------------------------- Your own scripts are stored at **~/Library/Application\\ Support/com.proxyman.NSProxy/users** This folder is safe. It's never overridden or removed by Proxyman. [PreviousBuilt-in JS Libraries](https://docs.proxyman.com/scripting/built-in-js-libraries) [NextSnippet Code](https://docs.proxyman.com/scripting/snippet-code) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/scripting/write-your-own-addons#id-1.-whats-it) * [2\. How to write an addon?](https://docs.proxyman.com/scripting/write-your-own-addons#id-2.-how-to-write-an-addon) * [3\. Note](https://docs.proxyman.com/scripting/write-your-own-addons#id-3.-note) Copy /** { "name":"My Awesome Addon", "description":"The first User Addons", "author":"Proxyman", "tags":"helloworld" } **/ const { md5 } = require("@addons/MD5.js"); const sayHello = () => { var content = "Hello World. My first custom Addon."; var hash = md5(content); return content + ". MD5 = " + hash; }; // Make sure you export the function at the end of method exports.sayHello = sayHello; Copy const { md5 } = require("@addons/MD5.js"); Copy // Import your addon // Make sure you imports the function that you exports in the addons const { sayHello } = require("@users/MyAwesomeAddon.js"); // Usage sayHello(); --- # Allow List | Proxyman [](https://docs.proxyman.com/advanced-features/whitelist#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------- The Allow List Tool is a handy tool to help you define which domains you **allow to appear** on the Proxyman app. The unmatched requests won't go through Proxyman (by-pass) It's useful in the following situations: * Ignore all domains except your debugging domains (e.g. producthunt.com) * Reduce the number of unnecessary requests, and focus on the domains you need to track If you would like to block certain domains, please visit [Block Tool](https://docs.proxyman.com/advanced-features/blacklist) [](https://docs.proxyman.com/advanced-features/whitelist#id-2.-how-to-use) 2\. How to use? ----------------------------------------------------------------------------------------------- * **Tools** menu -> **Allow List** * Right-click on the selected request -> **Tools** -> **Allow List** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M9vMHE6bDvuRRohvya7%252F-M9vMwKLNrpxZ9PLmi7O%252FScreen%2520Shot%25202020-06-16%2520at%252011.24.12.png%3Falt%3Dmedia%26token%3D3acc7dc2-b9d1-4f73-b1f6-1e8700f027e4&width=768&dpr=4&quality=100&sign=e2d0f1c6&sv=2) **⌥⌘\]** to quickly open the Allow List Window [PreviousBlock List](https://docs.proxyman.com/advanced-features/blacklist) [NextCharles Proxy Converter](https://docs.proxyman.com/advanced-features/charles-proxy-converter) Last updated 3 months ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/whitelist#id-1.-whats-it) * [2\. How to use?](https://docs.proxyman.com/advanced-features/whitelist#id-2.-how-to-use) --- # I could not see any HTTP traffic from my NodeJS, Python, or Ruby scripts | Proxyman [](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-1.-problem) 1\. Problem: ---------------------------------------------------------------------------------------------------------------------------------------------------- * I have NodeJS, Ruby, Python, or Golang scripts/servers, which make an internal HTTP/HTTPS request -> However, I don't see any traffic from the Proxyman app. For example: * NodeJS: I'm using the [axios](https://github.com/axios/axios) library (NodeJS) to call a RESTFUL API from my production server (e.g. https://mycompany.com/v1/data). However, there is no traffic recorded from the Proxyman app. * I'm using net/http from Golang, but no requests appear on Proxyman * ... so all [](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-2.-new-automatic-solution-v4.7.0-or-later) 2\. New Automatic Solution (v4.7.0 or later) ✅ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from Python/Ruby/NodeJS/Golang with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * Support many network libraries from NodeJS, Python, Ruby, and Golang ### [](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-2.1-how-to-use) 2.1 How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F4CIEVKhzglYi5T3YHVLT%252FScreenshot%25202025-03-18%2520at%252010.54.37.jpg%3Falt%3Dmedia%26token%3D295c1e9f-10ce-4766-ab65-e08d24f79858&width=768&dpr=4&quality=100&sign=609f0abc&sv=2) Start pre-configured Terminal 1. Accept the Apple Script permission prompt if needed 2. The New Terminal app is launched -> You can start your Python Backend Server, or Run scripts => Proxyman automatically captures all traffic. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FtsBq8JdHXuQU1vL31PYZ%252FCleanShot%25202025-03-18%2520at%252009.56.44%25402x.jpg%3Falt%3Dmedia%26token%3Ddf25804a-c39b-4c87-9422-b52ab338b7a3&width=768&dpr=4&quality=100&sign=ed38baa2&sv=2) Capture HTTPS traffic from Ruby, Python, NodeJS and Golang Server/Scripts 1. Done ✅ [](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-3.-other-problems) 3\. Other Problems ----------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-3.1-i-could-not-see-any-fetch-request-from-nextjs-server-side-component) 3.1 I could not see any `fetch()`request from NextJS - Server Side Component * Solution on this blog: [https://proxyman.com/posts/2024-06-10-Capture-HTTPS-From-NextJS-Server-Components](https://proxyman.com/posts/2024-06-10-Capture-HTTPS-From-NextJS-Server-Components) [PreviousI could not see any requests from my localhost server](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server) [Next\*.local requests do not appear on Proxyman](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman) Last updated 9 months ago * [1\. Problem:](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-1.-problem) * [2\. New Automatic Solution (v4.7.0 or later) ✅](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-2.-new-automatic-solution-v4.7.0-or-later) * [2.1 How to use:](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-2.1-how-to-use) * [3\. Other Problems](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-3.-other-problems) * [3.1 I could not see any fetch()request from NextJS - Server Side Component](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts#id-3.1-i-could-not-see-any-fetch-request-from-nextjs-server-side-component) --- # [Breakpoint] Modify Request/Response by Raw Message | Proxyman WIP [PreviousI couldn't see any requests from 3rd-party network libraries](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries) [NextCould not change Proxyman App Icons](https://docs.proxyman.com/troubleshooting/could-not-change-proxyman-app-icons) Last updated 1 year ago --- # WSL | Proxyman ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-1.-whats-it) 1\. What's it? In order to use Automatic Script for Android Emulator, the following command line must be installed on your Windows machine: * wsl * choco (package manager for Windows) * adb (Android Debug Bridge) ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-2.-install-wsl-on-windows-10-11) 2\. Install WSL on Windows 10/11 1. On Windows 10/11, search: **Command Prompt** app 2. Right-click on the app -> Select **Run as administrator** option. 3. When the App is opened, copy & paste the following command: Copy wsl --install 1. Restart your Windows to take effect -> After restarting, Windows will open the **Command Prompt** which asks the user to create a new Username / Password -> Follow this instruction 2. Open the Command Prompt app again, execute: Copy wsl 1. Verify that the command is successful, with no errors: ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F0KiuitXtLhZlLyIGq2SI%252FCleanShot%25202024-03-29%2520at%25209%25E2%2580%25AF.43.29%25402x.jpg%3Falt%3Dmedia%26token%3Ddb043567-0163-4af1-82d7-725f608c7eeb&width=768&dpr=4&quality=100&sign=7fde5e91&sv=2) 1. Done ✅ ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-2.-install-choco-on-windows-10-11) 2\. Install **Choco** on Windows 10/11 1. Open PowerShell with Run as Administrator 2. Paste and run it: 1. Wait a few seconds for the command to complete. 2. If you don't see any errors, you are ready to use Chocolatey! Type choco or choco -? now, or see Getting Started for usage instructions. Choco Installation Guide: [https://chocolatey.org/install#individual](https://chocolatey.org/install#individual) ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-3.-install-adb-on-windows-10-11) 3\. Install **adb** on Windows 10/11 1. Open PowerShell with Run as Administrator 2. Run: 1. Verify the **adb** is successfully installed and there is no error ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-4.-done.-try-to-use-android-automatic-script-again-on-proxyman-app) 4\. ✅ Done. Try to Use Android Automatic Script again on Proxyman app ### [](https://docs.proxyman.com/proxyman-windows/wsl#id-5.-references) 5\. References: * [https://learn.microsoft.com/en-us/windows/wsl/install](https://learn.microsoft.com/en-us/windows/wsl/install) * [https://pureinfotech.com/install-wsl-windows-11/#install\_wsl2\_single\_command](https://pureinfotech.com/install-wsl-windows-11/#install_wsl2_single_command) [PreviousInstall Certificate](https://docs.proxyman.com/proxyman-windows/install-certificate) [NextScripting](https://docs.proxyman.com/scripting/script) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/proxyman-windows/wsl#id-1.-whats-it) * [2\. Install WSL on Windows 10/11](https://docs.proxyman.com/proxyman-windows/wsl#id-2.-install-wsl-on-windows-10-11) * [2\. Install Choco on Windows 10/11](https://docs.proxyman.com/proxyman-windows/wsl#id-2.-install-choco-on-windows-10-11) * [3\. Install adb on Windows 10/11](https://docs.proxyman.com/proxyman-windows/wsl#id-3.-install-adb-on-windows-10-11) * [4\. ✅ Done. Try to Use Android Automatic Script again on Proxyman app](https://docs.proxyman.com/proxyman-windows/wsl#id-4.-done.-try-to-use-android-automatic-script-again-on-proxyman-app) * [5\. References:](https://docs.proxyman.com/proxyman-windows/wsl#id-5.-references) Copy Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) Copy choco install adb -y --- # Custom Certificates | Proxyman ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-1.-whats-it) 1\. What's it? Proxyman supports Custom **Root Certificate**, **Server Certificates, and** **Client Certificates** that allow you to add your certificate that Proxyman uses to establish the SSL-Connection between your clients, servers, and Proxyman app. Custom Certificate Type Purpose How Proxyman uses **Server Certificate** For intercepting HTTPS Traffic from clients that use SSL-Pinning Use this certificate for SSL-Handshake to your Clients **Client Certificate** For intercepting HTTPS Traffic from clients that use Mutual Authentication Use this certificate for SSL-Handshake to specific Server **Root Certificate** For intercepting HTTPS Traffic from clients and servers without using local Proxyman certificates SSL Handshake for both clients & servers ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MGm2WFKbZjCmxjt4i5S%252F-MGm3TcUSUGtWQX56SNO%252FScreen%2520Shot%25202020-09-09%2520at%252015.52.42.png%3Falt%3Dmedia%26token%3Dae9f847b-5f4d-4849-9dc1-4b5e9eaef3b7&width=768&dpr=4&quality=100&sign=dc7b4fc7&sv=2) Even though the Proxyman Root Certificate is locally generated in your machine, you can manually generate and add to Proxyman. [Read more](https://docs.proxyman.com/advanced-features/custom-certificates#6-how-to-generate-self-signed-certificates-that-meet-apples-requirements) ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-2.-certificate-formats) 2\. Certificate Formats Proxyman accepts the following formats: Custom Certificate PEM or DER PKCS #12 (p12) Root Certificate Not Supported Supported Client Certificate Supported Supported Server Certificate Supported Supported * PKCS #12 (p12). * PEM or DER Private Key and Certificate file. * Proxyman automatically determines the format of the Private Key and Certificate file (Support PEM or DER). * Proxyman will prompt to enter the password if import an encrypted Private Key or PKCS #12 file. * All passphrases are securely stored in Proxyman Keychain. If your certificates are in different formats that Proxyman supports, please convert them to p12 or PEM/DER format before importing. ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-3.-certificate-requirement-on-macos-10.15-and-ios-13) 3\. Certificate Requirement on macOS 10.15+ and iOS 13+ If you're using a custom Root Certificate or Server Certificate on macOS 10.15 or iOS 13, you might encounter the failed handshake on Safari or iOS devices if the following requirements don't meet: * RSA Key must have a key size is greater than 2048 bits * The hash algorithm is SHA-2 family * DNS Name of the server must be present on Subject Alternative Name. Common Name is no longer trusted * Valid certificate (Current day is in Not Before and Not After) * TLS server certificates must contain an ExtendedKeyUsage (EKU) extension containing the **id-kp-serverAuth** OID. Read more [https://support.apple.com/en-us/HT210176](https://support.apple.com/en-us/HT210176) If it's too complicated for you, we recommend letting Proxyman performs it automatically. Please visit Certificate Menu -> Install Certificate on this Mac -> Select **Automatic** Tab. ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-4.-common-issues) 4\. Common issues Problem Solution Private Key and Certificate are not matched Try different certificates and private keys and make sure they are matched Get SSL Handshake Error for custom certificates * Try to add the custom Certificate to System Keychain and Trust it * Certificate doesn't match the requirement from macOS => Read [section 3](https://docs.proxyman.com/advanced-features/custom-certificates#3-certificate-requirement-on-macos-10-15-and-ios-13) * Check expires day of the Certificate Could not import certificate due to invalid passphrase Ask your leader to give the correct passphrase to open the encrypted Private Key or P12 file ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-5.-how-to-use) 5\. How to use * Access from **Certificate Menu** -> **Add Custom Certificate** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MfwiNzMSsWbrhIP0uXH%252F-MfwibXWpHoYDNlEzUpL%252FScreen%2520Shot%25202021-07-31%2520at%252020.21.35.png%3Falt%3Dmedia%26token%3D1fb90e47-c093-4d36-9693-2653bd128811&width=768&dpr=4&quality=100&sign=1791f85b&sv=2) ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-6.-how-to-generate-self-signed-certificates-for-custom-root-certificate-that-comply-with-new-apples) **6\. How to generate self-signed certificates for Custom Root Certificate that comply with new Apple's Security Requirements** Due to [Apple's requirements from iOS 13 and Catalina (10.15)](https://docs.proxyman.com/advanced-features/custom-certificates#3-certificate-requirement-on-macos-10-15-and-ios-13) , It requires extra configuration to generate the self-signed certificate properly. The following steps will guide you on how to do it properly: 1. Prepare a `cert.config` file on the **Desktop folder** * Please update values for C, L, O, CN, and OU parameters. 2\. Generate RSA Key in the Terminal app. (Replace **your\_password** with any password, e.g. 123456) 3\. Generate the self-signed certificate and private key. (Replace **your\_password** with the password in step 2) 4\. Convert to p12 format. (Replace **your\_password** with the password in step 2) 5\. Finally, you would have **root-ca.p12** file and move to the next step If you can't import your custom certificate on macOS 14 (OpenSSL v3) or later, you should use the \`-legacy\` flag in step 4. Ref: [https://stackoverflow.com/questions/70431528/mac-verification-failed-during-pkcs12-import-wrong-password-azure-devops](https://stackoverflow.com/questions/70431528/mac-verification-failed-during-pkcs12-import-wrong-password-azure-devops) ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-7.-import-as-a-custom-root-certificate) 7\. Import as a Custom Root Certificate 1. Go to Certificate Menu -> Custom Certificate -> Select Root Certificate Tab 2. Click **Import** button -> P12 3. Select **root-ca.p12** file and enter the password. 4. Trust your custom certificate in Keychain Access App: * Open Keychain Access App * Search for the certificate you've added. The name might be the common name (CN) of the certificate * Double Click to open and select Always Trust * Click "X" and save the change ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MGm4iuVt7z3J58Y_2Qd%252F-MGm7bagKptMg27z3I-B%252FScreen%2520Shot%25202020-09-09%2520at%252006.30.51.png%3Falt%3Dmedia%26token%3D7e2a9620-67f1-4bbe-9e8e-51fc954474c1&width=768&dpr=4&quality=100&sign=6b41d0f2&sv=2) 5\. Please verify that you can see the Green Tick that shows the certificate is installed and trusted properly. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MGnAtKYFECJc6-DqlVs%252F-MGnB4vOeNn-LubpeLLD%252FScreen%2520Shot%25202020-09-09%2520at%252020.52.39.png%3Falt%3Dmedia%26token%3D21bee69b-c9c6-4873-a77b-b011d7e0a7cd&width=768&dpr=4&quality=100&sign=9767caef&sv=2) Custom Root Certificate is installed and trusted properly. Ready to go! ### [](https://docs.proxyman.com/advanced-features/custom-certificates#id-8.-import-as-a-server-client-certificate) 8\. Import as a Server/Client Certificate For custom Server/Client certificates, you should not generate a self-signed certificate. Please ask your workmate or team lead about the certificate that the company is using. It could be in DER/PEM or P12 format. Then import the certificate as a Server / Client Certificate in Custom Certificate Window. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MAil4GrBFa-_bEYc1Zl%252F-MAioZF7Q4lXuoCI6mKA%252FScreen%2520Shot%25202020-06-26%2520at%252010.54.35.png%3Falt%3Dmedia%26token%3Dd553135e-8e19-479c-9ae4-5f7eebbdeaea&width=768&dpr=4&quality=100&sign=57dbdbb9&sv=2) Import PEM/DER key and private key to Custom Client/Server Certificate You don't need to trust the certificate on System Keychain since it's not a Root Certificate. [PreviousCharles Proxy Converter](https://docs.proxyman.com/advanced-features/charles-proxy-converter) [NextGraphQL](https://docs.proxyman.com/advanced-features/graphql) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/custom-certificates#id-1.-whats-it) * [2\. Certificate Formats](https://docs.proxyman.com/advanced-features/custom-certificates#id-2.-certificate-formats) * [3\. Certificate Requirement on macOS 10.15+ and iOS 13+](https://docs.proxyman.com/advanced-features/custom-certificates#id-3.-certificate-requirement-on-macos-10.15-and-ios-13) * [4\. Common issues](https://docs.proxyman.com/advanced-features/custom-certificates#id-4.-common-issues) * [5\. How to use](https://docs.proxyman.com/advanced-features/custom-certificates#id-5.-how-to-use) * [6\. How to generate self-signed certificates for Custom Root Certificate that comply with new Apple's Security Requirements](https://docs.proxyman.com/advanced-features/custom-certificates#id-6.-how-to-generate-self-signed-certificates-for-custom-root-certificate-that-comply-with-new-apples) * [7\. Import as a Custom Root Certificate](https://docs.proxyman.com/advanced-features/custom-certificates#id-7.-import-as-a-custom-root-certificate) * [8\. Import as a Server/Client Certificate](https://docs.proxyman.com/advanced-features/custom-certificates#id-8.-import-as-a-server-client-certificate) Copy [ ca ] default_ca = CA_default [ CA_default ] default_md = sha256 [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer basicConstraints = critical,CA:true keyUsage=critical,keyCertSign extendedKeyUsage = serverAuth,clientAuth [ req ] prompt = no distinguished_name = req_distinguished_name [ req_distinguished_name ] C=US L=US O=Proxyman LLC CN=proxyman.dev OU=Proxyman Copy cd ~/Desktop openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048 Copy openssl req -x509 -new -nodes -passin pass:your_password -config cert.config -key key.pem -sha256 -extensions v3_ca -days 825 -out root-ca.pem Copy openssl pkcs12 -export -legacy -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password --- # async/await Request | Proxyman [](https://docs.proxyman.com/scripting/async-await-request#id-1.-whats-it) 1\. What's it? ---------------------------------------------------------------------------------------------- From Proxyman macOS v3.5.0 and Windows/Linux v2.11.0 or later, you can use `async / await` to make an HTTP/HTTPS call for retrieving external resources inside your Script. * On macOS: Use \`$http\` * On Windows/Linux: Use built-in \`axios\` #### [](https://docs.proxyman.com/scripting/async-await-request#sample-post-request-with-json-body-macos) Sample: POST Request with JSON Body (macOS) Copy async function onResponse(context, url, request, response) { // Define JSON Body and Header // Make sure "Content-Type" is "application/json" var param = { body: { "user": { "name": "Proxyman" } }, headers: { "Content-Type": "application/json" } } // POST request with await var output = await $http.post("https://httpbin.org/post", param); // Get Status Code console.log(output.statusCode); // Get body console.log(output.body) // Get header console.log(output.headers) // Done return response; } [](https://docs.proxyman.com/scripting/async-await-request#id-2.-how-to-use-on-macos) 2\. How to use on macOS? ------------------------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/async-await-request#method) Method #### [](https://docs.proxyman.com/scripting/async-await-request#output-format) Output format #### [](https://docs.proxyman.com/scripting/async-await-request#sample-code) Sample Code * [GET Request with Query](https://docs.proxyman.com/scripting/snippet-code#get-request-with-query) * [POST Request with JSON Body](https://docs.proxyman.com/scripting/snippet-code#post-request-with-json-body) * [POST Request with application/x-www-form-urlencoded body](https://docs.proxyman.com/scripting/snippet-code#post-request-with-application-x-www-form-urlencoded-body) * [PUT / PATCH / DELETE Request](https://docs.proxyman.com/scripting/snippet-code#put-patch-delete-request) Please checkout the [HTTP Snippet code](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request) for more sample code. [](https://docs.proxyman.com/scripting/async-await-request#id-3.-how-to-use-on-windows-linux) 3\. How to use on Windows/Linux? ----------------------------------------------------------------------------------------------------------------------------------- Proxyman Windows/Linux ships with a built-in [axios](https://github.com/axios/axios) library, it means we can use the axios syntax to make HTTP(s) requests. For example: [](https://docs.proxyman.com/scripting/async-await-request#id-4.-notes) 4\. Notes -------------------------------------------------------------------------------------- * Make sure you defined the **async** function on `onRequest()` and `onResponse()`: * Request Timeout is 10 seconds. * The inline HTTP Request doesn't go through the Proxyman Proxy, so it isn't affected by other debugging tools. * Use can use `await $http.get()` on both `onRequest()` and `onResponse()` * Make sure the Body type is matched with the Content-Type header. **JSON Body with application/json** **Encoded form Body with application/x-www-form-urlencoded** [PreviousScripting](https://docs.proxyman.com/scripting/script) [NextAddons](https://docs.proxyman.com/scripting/addons) Last updated 1 year ago * [1\. What's it?](https://docs.proxyman.com/scripting/async-await-request#id-1.-whats-it) * [2\. How to use on macOS?](https://docs.proxyman.com/scripting/async-await-request#id-2.-how-to-use-on-macos) * [3\. How to use on Windows/Linux?](https://docs.proxyman.com/scripting/async-await-request#id-3.-how-to-use-on-windows-linux) * [4\. Notes](https://docs.proxyman.com/scripting/async-await-request#id-4.-notes) Copy var output = await $http.get("https://httpbin.org/anything"); var output = await $http.post("https://httpbin.org/anything"); var output = await $http.put("https://httpbin.org/anything"); var output = await $http.update("https://httpbin.org/anything"); var output = await $http.delete("https://httpbin.org/anything"); Copy var output = await $http.get("https://httpbin.org/anything"); console.log(output) // print { "statusCode": , "headers": , "body": } Copy async function getUser() { try { const response = await axios.get('/user?ID=12345'); console.log(response); } catch (error) { console.error(error); } } Copy async function onRequest(context, url, request) { var output = await $http.get("https://httpbin.org/get"); return request; } async function onResponse(context, url, request, response) { var output = await $http.get("https://httpbin.org/get"); return response; } Copy var param = { body: { "name": "Proxyman", }, headers: { "Content-Type": "application/json" } } Copy var param = { body: { "key1": "value1", "key2": "value2" }, headers: { "Content-Type": "application/x-www-form-urlencoded" } } --- # I couldn't see any traffics on Proxyman | Proxyman ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-1.-problems) 1\. Problems * After launching the app, the request list is empty * There are no requests captured by Proxyman? * I don't see any requests on the app * I can see some request on my Mac, but no request on my remote devices (iOS, Android) For remote devices (iOS or Android), please check out this [troubleshoot](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy) . ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5oNQOA8eEMdsDo1W4b%252F-M5oNlGIE51483XhMSa4%252FScreen_Shot_2020-04-26_at_09_48_10.png%3Falt%3Dmedia%26token%3Db8e3b7fc-181f-4b03-8d5e-6f2e33f14d7d&width=768&dpr=4&quality=100&sign=a985a8&sv=2) ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.-solution) 2\. Solution ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.1-turn-off-all-vpn-apps-on-your-mac-machine) 2.1 Turn OFF all VPN apps on your Mac machine Some VPN apps accidentally revert the HTTP Proxy in Network as soon as Proxyman overrides it. As a result, HTTP Traffic won't go through Proxyman port at 9090. Close all VPN app if possible and relaunch Proxyman ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.2.-double-check-http-proxy-in-network) 2.2. Double-check HTTP Proxy in Network Proxyman would override or revert the HTTP Proxy at the launch time or exit, but some apps could revert back. Let open System Preference -> Network -> Wifi -> Proxies tab: * Check the **Web Proxy (HTTP)** and **Secure Web Proxy (HTTPS)** * Make sure the port is the same as the Proxyman port * IP is **127.0.0.1** Save and check the requests on Proxyman ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5oNQOA8eEMdsDo1W4b%252F-M5oPPHJI6eMwhUjoubn%252FScreen%2520Shot%25202020-04-26%2520at%252009.54.53.png%3Falt%3Dmedia%26token%3D83d8e206-5bfb-442e-a871-b2fea33fca35&width=768&dpr=4&quality=100&sign=ac8e459f&sv=2) ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.3-install-proxyman-helper-tool) 2.3 Install Proxyman Helper Tool By default, Proxyman attempts to override the system HTTP Proxy by using `networksetup` CLI, but it might be failed in certain scenarios. \=> Let's try to install Proxyman Helper Tool. This tool will override the system HTTP Proxy properly. Please open Proxyman Preference -> Advanced Tab -> Install Helper Tool ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MJPOMkRPevh8tQznx08%252F-MJPPWnJw44Jz-e57Mqi%252FScreen_Shot_2020-10-12_at_08_24_05.png%3Falt%3Dmedia%26token%3D31598950-209a-414d-b018-ae6a20a133d7&width=768&dpr=4&quality=100&sign=1d85d7ce&sv=2) ### [](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.4-some-http-https-requests-are-missing-from-proxyman) 2.4 Some HTTP/HTTPS Requests are missing from Proxyman Alamofire or URLSession might use the cached response for your request. As a result, the actual request doesn't hit the server. Thus, Proxyman could not capture and display it on the app. Solution: * Disable the cache mechanism on URLSession or Alamofre. * Use the [No Caching Tool](https://docs.proxyman.com/advanced-features/no-caching) (⌥⌘N) [Previous\*.local requests do not appear on Proxyman](https://docs.proxyman.com/troubleshooting/.local-doesnt-appear-in-proxyman) [NextI couldn't see any requests from 3rd-party network libraries](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries) Last updated 1 year ago * [1\. Problems](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-1.-problems) * [2\. Solution](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.-solution) * [2.1 Turn OFF all VPN apps on your Mac machine](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.1-turn-off-all-vpn-apps-on-your-mac-machine) * [2.2. Double-check HTTP Proxy in Network](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.2.-double-check-http-proxy-in-network) * [2.3 Install Proxyman Helper Tool](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.3-install-proxyman-helper-tool) * [2.4 Some HTTP/HTTPS Requests are missing from Proxyman](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman#id-2.4-some-http-https-requests-are-missing-from-proxyman) --- # My Remote Devices (iOS/Android) could not connect to Proxyman? | Proxyman [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-problems) **1\.** Problems --------------------------------------------------------------------------------------------------------------------------------------- * ❌ My iOS or Android Devices could not access the Internet after changing the Proxy Config in the Wifi Setting. * ❌ I can't download the certificate from **http://cert.proxyman.io** or **http://proxy.man/ssl** For Android, please follow the [second section](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#android-devices-and-android-emulator) [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-solution-ios-devices) 2\. Solution: iOS devices ------------------------------------------------------------------------------------------------------------------------------------------------------------ Please make sure to double-check the following steps: ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-0.-issue-with-ios-16-physical-devices-simulator) 0\. Issue with iOS 16 Physical Devices / Simulator Some reports from Proxyman's users, that **Proxyman** and **Charles Proxy** could not capture any traffic from iOS 16 devices/simulator, even though they config the HTTP Proxy. It's a bug from iOS, we have to wait for the Apple team to fix it. To workaround: #### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#ios-16-physical-devices) iOS 16 physical devices: * Forget the network and try to connect again. * Use [Atlantis Framework](https://github.com/ProxymanApp/atlantis) to capture the traffic * Use iOS 15 devices #### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#ios-16-simulator) iOS 16 Simulator: * Use iOS 15 Simulators * Use [Atlantis Framework](https://github.com/ProxymanApp/atlantis) to capture the traffic. [iOS 16 and iOS 17 issues](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues) ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-make-sure-your-mac-device-and-ios-android-devices-are-on-the-same-network) 1\. Make sure your Mac device and iOS/Android devices are on the same network If they're on a different network, they are unable to connect to each other. ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-make-sure-the-server-ip-and-port-number-must-match-with-proxyman) 2\. Make sure the server IP and Port number must match with Proxyman ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F5th87NuXdHcJVVHFHdT3%252FIMG_4110.png%3Falt%3Dmedia%26token%3D563df522-8c6e-44ea-85f5-ebe098633432&width=768&dpr=4&quality=100&sign=2e37a713&sv=2) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M23a4e4ytcd0Sr111ZH%252F-M23ea8TqvpuPstOPCt9%252FScreen_Shot_2020-03-10_at_20_37_01.png%3Falt%3Dmedia%26token%3D78e6491f-feb7-44be-ade3-ea0991b9cb43&width=768&dpr=4&quality=100&sign=536475dc&sv=2) ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-3.-turn-off-all-vpn-apps-from-macos-and-ios-android-devices) 3\. Turn OFF all VPN apps from macOS and iOS/Android devices By default, the VPN app will **force** all traffic through the VPN server instead of the Proxyman Proxy server (at 9090). Therefore, there are no requests that appear on the Proxyman app. Turn OFF all VPN apps will fix it: * For **iOS** Devices: Navigate to Settings -> General -> VPN and make sure the VPN status is **OFF** * For **Android** Devices: Find the VPN setting on the Settings app and turn it OFF * For **macOS**: Quit all VPN apps ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-firewall-settings-macos) 4\. Firewall settings (macOS) By default, a Firewall might block all incoming traffic to your mac. Thus, your remote devices might not be able to connect to Proxyman. On **macOS**: Navigate to **System Preference -> Security & Privacy -> Firewall tab -> Option** **Verify that:** * Block All incoming connections is **OFF** * Proxyman app **allows incoming connection** * If there is no Proxyman app, please add the Proxyman app by clicking on + button * Automatically allow built-in software to receive incoming connection is **ON** * Automatically allowing downloaded signed software to receive incoming connections is **ON** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M23a4e4ytcd0Sr111ZH%252F-M23gxs4aNNh1g_KORUo%252FScreen_Shot_2020-03-10_at_20_46_17.png%3Falt%3Dmedia%26token%3Df0304fda-f1e0-4d28-b505-70ed4e16b52c&width=768&dpr=4&quality=100&sign=3af730f&sv=2) Firewall setting on macOS ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-firewall-setting-windows-10-11) 4\. Firewall Setting (Windows 10/11) Windows 10/11 might block Proxyman, and iPhone/Android devices could not connect to the app. To fix it: 1. Search and open the "Windows Defender Firewall" app -> Click the "Advanced Setting" on the left panel 2. Select "Inbound Rules" 3. Find Proxyman.exe -> Double-click to open the setting 4. Select "Allow the Connection" in the General Tab 5. Click OK ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FEMq0r5Sx15yeAwQLJa5x%252FCleanShot%25202023-01-05%2520at%252009.26.50%25402x.png%3Falt%3Dmedia%26token%3D3f47290c-4c90-425f-8f40-4d643ac560ae&width=768&dpr=4&quality=100&sign=9d0ac319&sv=2) Allow Proxyman on Windows Firewall ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-5.-if-youre-using-the-company-network-ask-the-security-team-to-open-proxymans-port-9090) 5\. If you're using the Company Network, ask the Security team to open Proxyman's port 9090 Some companies block certain ports by default. Therefore, your iOS devices couldn't access to Proxyman's port at 9090. ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-6.-use-private-browser-on-safari-to-open-http-cert.proxyman.io-or-http-proxy.man-ssl) 6\. Use Private Browser on Safari to open http://cert.proxyman.io or http://proxy.man/ssl ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-7.-im-still-unable-to-connect) 7\. I'm still unable to connect. If you follow all the above steps and all configuration is correct but it hasn't resolved your cases yet. Please try to **ON/OFF your Wifi, Forget the Wifi Network (iOS),** and **Restart the Computer**. ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-8.-still-does-not-work-ios-app-only) 8\. Still does not work? (iOS app only) Manual Override the HTTP Proxy, install and trust Proxyman on iOS devices is hard. We understand that. Let's try Atlantis, which is an iOS framework that helps you do it automatically. [Atlantis for iOS](https://docs.proxyman.com/atlantis/atlantis-for-ios) [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#android-devices-and-android-emulators) Android Devices and Android Emulators ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-after-setting-http-proxy-in-wifi-setting-i-could-not-open-http-proxy.man-ssl) 1\. After setting HTTP Proxy in Wifi Setting, I could not open http://proxy.man/ssl * [Please follow the above troubleshooting](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#1-make-sure-your-mac-device-and-ios-devices-are-on-the-same-network) ☝️ * Double-check the Wifi Connection in the Emulator. It must be Connected Status (not Limited Connection or No Internet) If it happens, please try to **forget the network** and **re-connect the Wifi.** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FrO7687XSKWXvTi4uD4nU%252FScreen_Shot_2020-09-29_at_8_52_45_PM.png%3Falt%3Dmedia%26token%3D63877cdb-74f4-4f5d-a380-1552ff500f32&width=768&dpr=4&quality=100&sign=9160f090&sv=2) ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-install-and-trust-proxyman-ca-for-android-with-api-30) 2\. Install and trust Proxyman CA for Android with API 30+ From Android Emulator API 30+, it requires extra steps to trust the Proxyman Certificate * Open http://proxy.man/ssl from Google Chrome to download the certificate * Setting app -> Security -> Encryption & Credentials -> Install a Certificate -> CA Certificate -> Install Anyway and Select CA Proxyman Certificate in your storage You can verify that by opening Trusted Credentials -> User Tab ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FAfAc1OhdtkcQHS530Leo%252FScreen_Shot_2020-09-29_at_9_00_46_PM.png%3Falt%3Dmedia%26token%3D1a13c1bb-6f8d-4241-addc-bcd6fc14d3fa&width=768&dpr=4&quality=100&sign=85d9ce4a&sv=2) Trust the Certificate ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-3.-my-android-physical-devices-or-emulator-connection-is-not-stable) 3\. My Android Physical Devices or Emulator connection is not stable. It probably dues to the Android devices/emulators, the only way might fix it is to change the DNS from your Mac or Android Device to **8.8.8.8** * **On macOS**: Open System Preference -> Network -> Select Wifi -> Advanced -> Select DNS Tab -> Enter **8.8.8.8** on DNS Server Table * **On Android Device**: Open Wifi Setting -> Set DNS as **8.8.8.8** Read more at [https://github.com/ProxymanApp/Proxyman/issues/636](https://github.com/ProxymanApp/Proxyman/issues/636) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MJPNG3YAkmXqa3cpCQW%252F-MJPO1WnDIkVjR9DpjcV%252FScreen_Shot_2020-10-12_at_08_18_35.png%3Falt%3Dmedia%26token%3D0fa7e2cf-cf49-4d1e-83ca-afa612f0fd99&width=768&dpr=4&quality=100&sign=2801c26e&sv=2) ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-the-adb-command-not-found-when-using-android-emulator-automatic-script) 4\. The `adb` command not FOUND! when using Android Emulator Automatic Script If you attempt to override Android Emulator and get the following error: Please install the `adb` command line then try again! * [How to install ADB](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator#4-how-does-it-work) ### [](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-5.-if-you-debug-with-android-emulator-and-could-not-know-how-to-install-and-trust-proxyman-certifica) 5\. If you debug with Android Emulator and could not know how to install and trust Proxyman Certificate, please consider using [Automatic Script for Android Emulator](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) [PreviousProxyman does not work with VPN apps](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps) [NextiOS 16 and iOS 17 issues](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues) Last updated 11 months ago * [1\. Problems](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-problems) * [2\. Solution: iOS devices](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-solution-ios-devices) * [0\. Issue with iOS 16 Physical Devices / Simulator](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-0.-issue-with-ios-16-physical-devices-simulator) * [1\. Make sure your Mac device and iOS/Android devices are on the same network](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-make-sure-your-mac-device-and-ios-android-devices-are-on-the-same-network) * [2\. Make sure the server IP and Port number must match with Proxyman](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-make-sure-the-server-ip-and-port-number-must-match-with-proxyman) * [3\. Turn OFF all VPN apps from macOS and iOS/Android devices](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-3.-turn-off-all-vpn-apps-from-macos-and-ios-android-devices) * [4\. Firewall settings (macOS)](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-firewall-settings-macos) * [4\. Firewall Setting (Windows 10/11)](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-firewall-setting-windows-10-11) * [5\. If you're using the Company Network, ask the Security team to open Proxyman's port 9090](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-5.-if-youre-using-the-company-network-ask-the-security-team-to-open-proxymans-port-9090) * [6\. Use Private Browser on Safari to open http://cert.proxyman.io or http://proxy.man/ssl](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-6.-use-private-browser-on-safari-to-open-http-cert.proxyman.io-or-http-proxy.man-ssl) * [7\. I'm still unable to connect.](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-7.-im-still-unable-to-connect) * [8\. Still does not work? (iOS app only)](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-8.-still-does-not-work-ios-app-only) * [Android Devices and Android Emulators](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#android-devices-and-android-emulators) * [1\. After setting HTTP Proxy in Wifi Setting, I could not open http://proxy.man/ssl](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-1.-after-setting-http-proxy-in-wifi-setting-i-could-not-open-http-proxy.man-ssl) * [2\. Install and trust Proxyman CA for Android with API 30+](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-2.-install-and-trust-proxyman-ca-for-android-with-api-30) * [3\. My Android Physical Devices or Emulator connection is not stable.](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-3.-my-android-physical-devices-or-emulator-connection-is-not-stable) * [4\. The adb command not FOUND! when using Android Emulator Automatic Script](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-4.-the-adb-command-not-found-when-using-android-emulator-automatic-script) * [5\. If you debug with Android Emulator and could not know how to install and trust Proxyman Certificate, please consider using Automatic Script for Android Emulator](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy#id-5.-if-you-debug-with-android-emulator-and-could-not-know-how-to-install-and-trust-proxyman-certifica) Copy adb command line could not be found!!! --- # Built-in JS Libraries | Proxyman ### [](https://docs.proxyman.com/scripting/built-in-js-libraries#id-1.-whats-it) 1\. What's it? Proxyman provides certain useful bundled JS Libraries that help you achieve some tasks easily Library Location: **~/Library/Application\\ Support/com.proxyman.NSProxy/addons/libs** ### [](https://docs.proxyman.com/scripting/built-in-js-libraries#id-2.-built-in-libraries) 2\. Built-in Libraries Name Description Source base64.js Contains basic Base64 Encode/Decode \- atob.js window.atob() [https://github.com/jsdom/abab](https://github.com/jsdom/abab) btoa.js window.btoa() [https://github.com/jsdom/abab](https://github.com/jsdom/abab) hashes.js Contains various hashing function: MD5, RIPEMP-160, SHA1, SHA256, SHA512, HMAC [https://github.com/h2non/jshashes](https://github.com/h2non/jshashes) lodash.js Contains various text transformed functions [https://lodash.com](https://lodash.com/) vkBeautify.js pretty-print or minify text in XML, JSON, CSS and SQL formats. [https://github.com/kayhadrin/vkBeautify/](https://github.com/kayhadrin/vkBeautify/) crypto-js.min.js JavaScript implementations of standard and secure cryptographic algorithms, e.g. DES, AES, Rabbit, ... (Version 3.3.0) [https://cryptojs.gitbook.io/docs/](https://cryptojs.gitbook.io/docs/) ### [](https://docs.proxyman.com/scripting/built-in-js-libraries#id-3.-how-to-import-my-own-js-library) 3\. How to import my own JS Library? 1. You can provide your own JS Library, but make sure you bundle all dependencies by using [Browserify](http://browserify.org/) or [WebPack](https://webpack.js.org/) to a single JS file. 2. Make sure you export the func properly. 3. Put the file at **~/Library/Application\\ Support/com.proxyman.NSProxy/addons/libs/your-lib.js** 4. Importing the file by using For instance, You might check built-in libraries for reference at **~/Library/Application\\ Support/com.proxyman.NSProxy/addons/libs/** ### [](https://docs.proxyman.com/scripting/built-in-js-libraries#id-4.-notes) 4\. Notes Thanks to [Ivan Mathy](https://github.com/IvanMathy) for creating Boop app that facilitates Proxyman's built-in add-ons. [PreviousAddons](https://docs.proxyman.com/scripting/addons) [NextWrite your own Addons](https://docs.proxyman.com/scripting/write-your-own-addons) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/scripting/built-in-js-libraries#id-1.-whats-it) * [2\. Built-in Libraries](https://docs.proxyman.com/scripting/built-in-js-libraries#id-2.-built-in-libraries) * [3\. How to import my own JS Library?](https://docs.proxyman.com/scripting/built-in-js-libraries#id-3.-how-to-import-my-own-js-library) * [4\. Notes](https://docs.proxyman.com/scripting/built-in-js-libraries#id-4.-notes) Copy require('@libs/your-lib.js'); Copy const Hashes = require('@libs/hashes.js'); const { cssmin } = require('@libs/vkBeautify.js'); const Lodash = require('@libs/lodash.js'); const { atob } = require('@[email protected]') --- # Access Control | Proxyman [](https://docs.proxyman.com/advanced-features/access-control#id-1.-whats-it) 1\. What's it? ------------------------------------------------------------------------------------------------- It's an advanced feature, which allows you to define how Remote Devices (iPhone, Android, other computers) can connect to the Proxyman app. It's designed for enterprise users for better security. Access via **Tools Menu** -> Proxy Setting -> Access Control. Mode Description Allow All All Remote Connections can connect to Proxyman (Default). Disallow All All Remote Connections are not allow to connect to Proxyman. Specify Remote Device by IP Define which device can connect to the Proxyman app. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FzJwU5MqOdh4icM3PxOlZ%252FScreenshot%25202023-01-23%2520at%252009.25.40.png%3Falt%3Dmedia%26token%3D6718f108-5c53-4922-aec4-0446bfcc624a&width=768&dpr=4&quality=100&sign=cec6473b&sv=2) Access Control UI ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FTv31V8COAJB6hiKoBVZs%252FScreenshot%25202023-01-19%2520at%252014.31.47.png%3Falt%3Dmedia%26token%3D82cfae97-6b48-4e72-ba18-855dfccf58b5&width=768&dpr=4&quality=100&sign=eaf207f1&sv=2) Prompt to allow unauthorized connections [](https://docs.proxyman.com/advanced-features/access-control#id-2.-override-the-access-control-mode-by-command-lines) 2\. Override the Access Control mode by Command Lines --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- From Proxyman 4.4.0, it's possible to override the Access Control by the following CLI. It's useful if your company would enforce the mode without using GUI. [PreviousDiff](https://docs.proxyman.com/advanced-features/diff) [NextDNS Spoofing](https://docs.proxyman.com/advanced-features/dns-spoofing) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/access-control#id-1.-whats-it) * [2\. Override the Access Control mode by Command Lines](https://docs.proxyman.com/advanced-features/access-control#id-2.-override-the-access-control-mode-by-command-lines) Copy $ defaults write ~/Library/Preferences/com.proxyman.NSProxy.plist accessControlModeString "allowAll" $ defaults write ~/Library/Preferences/com.proxyman.NSProxy.plist accessControlModeString "disallowAll" $ defaults write ~/Library/Preferences/com.proxyman.NSProxy.plist accessControlModeString "specificIP" --- # SSL Error from HTTPS Request/Response | Proxyman [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-1.-problems) 1\. Problems ---------------------------------------------------------------------------------------------------------------------------- * You could not see any HTTPS traffic on the Proxyman app * You get SSL Error from HTTPS Requests and Responses. * You get **SSL Handshake Failed** ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5lO1HbZnnLbTXZtxBy%252F-M5lOSoKiG1qXJ0Tqh-L%252FScreen%2520Shot%25202020-04-25%2520at%252019.52.38.png%3Falt%3Dmedia%26token%3D81ddc918-1d2a-4023-a09a-0647858d65e0&width=768&dpr=4&quality=100&sign=2a4d0963&sv=2) [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.-solution) 2\. Solution ---------------------------------------------------------------------------------------------------------------------------- There are many reasons why SSL Handshake Failed, please walk through the below steps to address the problem. [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.1-mobile-devices) 2.1 Mobile devices ----------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#ios-device) iOS Device * Follow this [iOS Setup Guide](https://docs.proxyman.com/debug-devices/ios-device) -> Make sure you've installed & trusted the Proxyman CA Certificate on your device. * If you're intercepting some popular apps (e.g. Facebook, Instagram, Apple, Whatsapp, ...): They are protected by SSL Pinning -> Impossible to intercept them. * Verify that your iOS app doesn't have SSL Pinning. If yes, please disable it. ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#ios-simulator) iOS Simulator Follow this [iOS Simulator Setup Guide](https://docs.proxyman.com/debug-devices/ios-simulator) -> Make sure you've installed & trusted the Proxyman CA Certificate on your device. ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#android-device) Android Device * Follow this [Android Device Setup Guide](https://docs.proxyman.com/debug-devices/android-device) -> Make sure you've installed & trusted the Proxyman CA Certificate on your device. * Verify that the 5th step is completed (by adding your domain to two files: **res/xml/network\_security\_config.xml** and **AndroidManifest.xml**) * If you're trying to intercept Android apps that you're not an owner -> It isn't possible to intercept -> ❌ ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#android-emulator) Android Emulator * Follow this [Android Emulator Setup Guide](https://docs.proxyman.com/debug-devices/android-device/automatic-script-for-android-emulator) -> Make sure you've installed & trusted the Proxyman CA Certificate on your device. * Verify that the 5th step is completed (by adding your domain to two files: **res/xml/network\_security\_config.xml** and **AndroidManifest.xml**) * If you're trying to intercept Android apps that you're not an owner -> It isn't possible to intercept -> ❌ ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#react-native-app) React Native app * If your app is a React Native app, please follow the [React Native Guide](https://docs.proxyman.com/debug-devices/react-native) . ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#flutter) Flutter * Please follow [Flutter Setup Guide](https://docs.proxyman.com/debug-devices/flutter) If you've tried and verified all the above steps, but still get SSL Errors? ### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#verify-that-youre-able-to-see-https-request-response-from-https-google.com-without-any-errors) Verify that you're able to see HTTPS Request/Response from https://google.com without any errors 1. Get your devices 2. Open the Web Browser (Safari on iOS or Google Chrome on Android) 3. Visit **https://google.com** 4. Select "Enable SSL Proxying" on this domain on the Proxyman app for macOS 5. Verify if you're able to see the HTTPS Response or not. #### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#success) ✅ Success 1. You're able to see https://google.com HTTPS Response, which means you set up the Certificate correctly -> It's good ✅ 2. The problem might be from your apps. Let's try again on your domains/apps -> If the SSL Error still happens, a high chance that this app is protected by the SSL Pinning. 3. If you believe that it's not an SSL Pinning case, please open a ticket on [Github](https://github.com/ProxymanApp/Proxyman/issues) (Please mention what device, OS Version, app name, etc) #### [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#failed) ❌ Failed! * It seems Proxyman Certificate is not installed or trusted correctly in your devices. Please go back to the [2.1 Mobile Device](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#2.1-mobile-devices) section and follow it. * If you verify that everything is done, but the SSL Error still happens, please open a ticket on [Github](https://github.com/ProxymanApp/Proxyman/issues) (Please mention what device, OS Version, app name, etc) [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.2-macbook-or-windows-pc) 2.2 Macbook or Windows PC ------------------------------------------------------------------------------------------------------------------------------------------------------- I get SSL Errors from: * **Mac devices (Macbook, Mac Mini, Mac Studio)** -> Install & Trust the Certificate on your Macbook -> Follow [macOS Guide](https://docs.proxyman.com/debug-devices/macos) * **Windows** \-> Install and trust the certificate on your Windows machine -> Follow [Windows guide](https://docs.proxyman.com/proxyman-windows/install-certificate) * Java -> Follow [Java VM Guide](https://docs.proxyman.com/debug-devices/java) * Firefox -> Follow [Firefox Guide](https://docs.proxyman.com/debug-devices/firefox) * Python -> Follow [Python Guide](https://docs.proxyman.com/debug-devices/python) * Ruby -> Follow [Ruby Guide](https://docs.proxyman.com/debug-devices/ruby) Some networking libraries (Ruby, NodeJS, Python, Golang) don't trust the self-signed certificate by default. We have to explicitly tell the library to trust the certificate. \=> To fix it, please google **" self-signed certificate",** a found some answers on StackOverflow. [](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.3-ssl-pinning) 2.3 SSL-Pinning? ------------------------------------------------------------------------------------------------------------------------------------ * You're still unable to see HTTPS Response on your app, it seems that your app is protected by [SSL-Pinning](https://en.wikipedia.org/wiki/HTTP_Public_Key_Pinning) , which prevents MitM apps from seeing the content. All popular apps (Facebook, Apple, Instagram, Messenger, etc.) have this feature. * Please temporarily **disable SSL-Pinning** and try again. Read more about SSL-Pining: [https://www.raywenderlich.com/1484288-preventing-man-in-the-middle-attacks-in-ios-with-ssl-pinning](https://www.raywenderlich.com/1484288-preventing-man-in-the-middle-attacks-in-ios-with-ssl-pinning) If you've tried everything but are not sure what is wrong? Please open a [Github ticket](https://docs.proxyman.com/) . Please also mention: Proxyman macOS/Windows, Proxyman version, your iOS/Android device, etc. [PreviousiOS 16 and iOS 17 issues](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues) [NextI could not see any requests from my localhost server](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server) Last updated 1 year ago * [1\. Problems](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-1.-problems) * [2\. Solution](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.-solution) * [2.1 Mobile devices](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.1-mobile-devices) * [iOS Device](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#ios-device) * [iOS Simulator](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#ios-simulator) * [Android Device](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#android-device) * [Android Emulator](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#android-emulator) * [React Native app](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#react-native-app) * [Flutter](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#flutter) * [Verify that you're able to see HTTPS Request/Response from https://google.com without any errors](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#verify-that-youre-able-to-see-https-request-response-from-https-google.com-without-any-errors) * [2.2 Macbook or Windows PC](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.2-macbook-or-windows-pc) * [2.3 SSL-Pinning?](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response#id-2.3-ssl-pinning) --- # Map Remote | Proxyman [](https://docs.proxyman.com/advanced-features/map-remote#id-1.-whats-it) 1\. What's it? --------------------------------------------------------------------------------------------- Map Remote (**⌘⌥R**) would help the developer to change the HTTP Request's location to a new destination server, per the configured rules, so the HTTP Response is transparently served from your client. Map Remote also supports mapping from HTTP to HTTPS and vice-versa ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MC_ByEFfDEzSzI1C7Zz%252F-MC_DZnVSPfddI4tnDir%252FScreen%2520Shot%25202020-07-19%2520at%252010.17.34.png%3Falt%3Dmedia%26token%3Df468fd18-608d-4841-9c4b-fa47236b4f24&width=768&dpr=4&quality=100&sign=abb8c04e&sv=2) Map Remote Rules Check out common [Map Remote Config](https://docs.proxyman.com/advanced-features/map-remote#7.-common-usages) when mapping from HTTP <-> HTTPS. From Proxyman 4.3.0: Map Remote supports Websocket and Secure Websocket. [](https://docs.proxyman.com/advanced-features/map-remote#id-2.-benefits) 2\. Benefits ------------------------------------------------------------------------------------------- * Use Production Endpoints on your Development website on certain endpoints without changing the source code * Use Development Endpoints on your Production website * Change certain request's URLs to different destinations * Able to replace requests components, such as Protocol, Host, Port, Path, or Query on the fly To boost your productivity, you can use the [Scripting feature](https://docs.proxyman.com/scripting/script#1-whats-it) that allows you to achieve the same result as Map Remote by writing simple Javascript Code For instance, [Snippet code to change Production to Localhost server](https://docs.proxyman.com/scripting/snippet-code#change-request-destination-schema-host-port-path) [](https://docs.proxyman.com/advanced-features/map-remote#id-3.-map-remote-with-graphql-requests) 3\. Map Remote with GraphQL Requests ------------------------------------------------------------------------------------------------------------------------------------------- From Proxyman 2.27.0+, Map Remote can work with GraphQL Request by a specific QueryName. Please check out the following GraphQL Document. [GraphQL](https://docs.proxyman.com/advanced-features/graphql) [](https://docs.proxyman.com/advanced-features/map-remote#id-4.-using-scripting-as-map-remote) 4\. Using Scripting as Map Remote ✅ --------------------------------------------------------------------------------------------------------------------------------------- If you get difficult to set up a complicated Map Remote Rule, you might easily do it by using the [Scripting Tool](https://docs.proxyman.com/scripting/script#1-whats-it) . Please check out [Map Remote Snippet Code](https://docs.proxyman.com/scripting/snippet-code#8-map-remote-with-scripting) to learn how to use Scripting to achieve the same result as Map Remote. For instance, it's straightforward to do the following by Scripting: * Map v1 to v2 endpoints * Map Production to Localhost * Map Localhost to Production * ... [](https://docs.proxyman.com/advanced-features/map-remote#id-5.-matching-rule) 5\. Matching Rule ----------------------------------------------------------------------------------------------------- Proxyman supports [Regular Expression](https://developer.apple.com/documentation/foundation/nsregularexpression#1965590) and Wildcard from the 2.3.0 version. [Check out here](https://docs.proxyman.com/basic-features/regex) We can define matching rules by using [Wildcard or Regular Expression](https://docs.proxyman.com/basic-features/regex) . For matched requests, Proxyman attempts to: * Replace Protocol, Host, Port, Path, and Query if it available * If the component is empty, it won't change the matched request's component ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MC_ByEFfDEzSzI1C7Zz%252F-MC_GHgRHPy8AUEjilO4%252FScreen%2520Shot%25202020-07-19%2520at%252010.17.44.png%3Falt%3Dmedia%26token%3Dc380ce78-9b3f-4ee8-be9e-6e6ee31d3e76&width=768&dpr=4&quality=100&sign=d9e0640b&sv=2) * Leave the Text Field blank to keep it unchanged from the matched request * The wildcard is not allow ### [](https://docs.proxyman.com/advanced-features/map-remote#debugging) Debugging To determine what Map Remote matches your URL, you can open The Request -> Summary Tab: 1. Select your request 2. Summary Tab -> Debugging Tools 3. Check the Map URL ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FTzEwgRO7nyDgIKosKmVt%252FCleanShot%25202023-02-15%2520at%252009.23.58%25402x.jpg%3Falt%3Dmedia%26token%3Debb58d8c-e24a-4871-8e07-aa86719a0407&width=768&dpr=4&quality=100&sign=3c8e4298&sv=2) How to debug the Map Remote ### [](https://docs.proxyman.com/advanced-features/map-remote#preserve-host-header) Preserve Host Header By default, Proxyman attempts to override the Host Header to match with the new Host in Remote Map. It's crucial to successfully make a request. If you would like to preserve the original Host Header, please check ON in the "Preserve Host Header" checkbox when creating a new entry. Proxyman will preserve the Host value. [](https://docs.proxyman.com/advanced-features/map-remote#id-6.-how-to-use) 6\. How to use ----------------------------------------------------------------------------------------------- * Right Click on selected Request -> Tools -> Map Remote: Proxyman will fill in the necessary data from the selected request ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5kcNLYKkRb4y_kT34H%252F-M5kcjUlp-pVHTWFPxse%252FScreen%2520Shot%25202020-04-25%2520at%252016.18.59.png%3Falt%3Dmedia%26token%3Da017a353-ca92-46f3-be11-5e93ff3b9300&width=768&dpr=4&quality=100&sign=37a9fc1f&sv=2) Create a Map Remote [](https://docs.proxyman.com/advanced-features/map-remote#id-7.-common-usages) 7\. Common Usages ----------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/advanced-features/map-remote#id-7.1-map-localhost-http-to-production-https) 7.1 Map Localhost (HTTP) to Production (HTTPS) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FR7NQOMFyCWhHRUfDeFF0%252FScreenshot%25202023-02-15%2520at%252009.34.02.png%3Falt%3Dmedia%26token%3Db1494d3a-6ac6-4f67-bee9-625a51ca2f33&width=768&dpr=4&quality=100&sign=65193c8f&sv=2) Map Remote Config **Result:** Original URL To URL http://localhost:3000 https://proxyman.io http://localhost:3000/pricing https://proxyman.io/pricing http://localhost:3000/v1/user?id=123&name=proxyman https://proxyman.io/v1/user?id=123&name=proxyman **POST** http://localhost:3000/login **POST** https://proxyman.io/login ### [](https://docs.proxyman.com/advanced-features/map-remote#id-7.2-map-production-https-to-localhost-http) 7.2 Map Production (HTTPS) to localhost (HTTP) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FlU5CIPBw57UrmzIKqG46%252FScreenshot%25202023-02-15%2520at%252009.39.50.png%3Falt%3Dmedia%26token%3D6f97c5ae-4b29-4a1a-b9b3-70b0e448c58f&width=768&dpr=4&quality=100&sign=eb462cf&sv=2) Map Remote Config Original URL To URL https://proxyman.io http://localhost:3000 https://proxyman.io/v1/user?id=123&name=proxyman http://localhost:3000/v1/user?id=123&name=proxyman **POST** https://proxyman.io/login **POST** http://localhost:3000/login ### [](https://docs.proxyman.com/advanced-features/map-remote#id-7.3-map-certain-url-to-another-host) 7.3 Map certain URL to another host * Rule: **https://proxyman.io/v1/user** (for instance) * Select **Any** and **Wildcard** * **Un-Check Include all subpaths of this URL:** Un-check means it doesn't map other subpaths **Map To:** * Protocol: **https** * Host: New Host (e.g staging.proxyman.io) * Port: **443** (your local port) * Leave Path and Query Empty **Result:** Original URL To URL https://proxyman.io https://proxyman.io (does not map the rule) https://proxyman.io/v2/setting https://proxyman.io/v2/setting (does not map the rule) https://proxyman.io/v1/user?id=123&name=proxyman https://staging.proxyman.io/v1/user?id=123&name=proxyman ### [](https://docs.proxyman.com/advanced-features/map-remote#id-7.4-map-websocket-from-localhost-to-production) 7.4 Map Websocket from localhost to Production ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FPykBG136twG3JAI6sD66%252FScreenshot%25202023-02-15%2520at%252009.29.05.png%3Falt%3Dmedia%26token%3D00035108-d6b0-462e-9e68-735b3cd6d023&width=768&dpr=4&quality=100&sign=6e54406c&sv=2) Map Remote Config Original URL To URL ws://localhost:4000 wss://ws.postman-echo.com ws://localhost:4000/websocket wss://ws.postman-echo.com/websocket ### [](https://docs.proxyman.com/advanced-features/map-remote#id-7.5-map-websocket-from-production-to-localhost) 7.5 Map Websocket from Production to Localhost ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FNXK51fNuurLw5j3ob8qE%252FScreenshot%25202023-02-15%2520at%252009.38.19.png%3Falt%3Dmedia%26token%3Dfd1dfa8a-477d-4369-b4a1-a6060b93ed71&width=768&dpr=4&quality=100&sign=71e37820&sv=2) Map Remote Config Original URL to URL wss://ws.postman-echo.com ws://localhost:3000 wss://ws.postman-echo.com/websocket ws://localhost:3000/websocket [PreviousMap Local (Directory)](https://docs.proxyman.com/advanced-features/map-local-directory) [NextExternal Proxy](https://docs.proxyman.com/advanced-features/external-proxy) Last updated 2 years ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/map-remote#id-1.-whats-it) * [2\. Benefits](https://docs.proxyman.com/advanced-features/map-remote#id-2.-benefits) * [3\. Map Remote with GraphQL Requests](https://docs.proxyman.com/advanced-features/map-remote#id-3.-map-remote-with-graphql-requests) * [4\. Using Scripting as Map Remote ✅](https://docs.proxyman.com/advanced-features/map-remote#id-4.-using-scripting-as-map-remote) * [5\. Matching Rule](https://docs.proxyman.com/advanced-features/map-remote#id-5.-matching-rule) * [Debugging](https://docs.proxyman.com/advanced-features/map-remote#debugging) * [Preserve Host Header](https://docs.proxyman.com/advanced-features/map-remote#preserve-host-header) * [6\. How to use](https://docs.proxyman.com/advanced-features/map-remote#id-6.-how-to-use) * [7\. Common Usages](https://docs.proxyman.com/advanced-features/map-remote#id-7.-common-usages) * [7.1 Map Localhost (HTTP) to Production (HTTPS)](https://docs.proxyman.com/advanced-features/map-remote#id-7.1-map-localhost-http-to-production-https) * [7.2 Map Production (HTTPS) to localhost (HTTP)](https://docs.proxyman.com/advanced-features/map-remote#id-7.2-map-production-https-to-localhost-http) * [7.3 Map certain URL to another host](https://docs.proxyman.com/advanced-features/map-remote#id-7.3-map-certain-url-to-another-host) * [7.4 Map Websocket from localhost to Production](https://docs.proxyman.com/advanced-features/map-remote#id-7.4-map-websocket-from-localhost-to-production) * [7.5 Map Websocket from Production to Localhost](https://docs.proxyman.com/advanced-features/map-remote#id-7.5-map-websocket-from-production-to-localhost) --- # iOS 16 and iOS 17 issues | Proxyman ### [](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-1.-problem) 1\. Problem * iOS 16 or iOS 17 physical devices could not set HTTP Proxy to Proxyman. Setting app -> Current Wifi -> Configure Proxy -> Manual Proxy. * Proxyman might not capture the traffic from iOS 16/17 devices. \=> It's an Apple bug. This issue happens with **Charles Proxy**, Wireshark, Fiddler Everywhere, and other Web Debugging Proxy apps too. Some users report that it's fixed on iOS 16.3 and later ✅ iOS 17 might have the same problem. **Forget this Network** might fix it. See [Section 4](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#4.-solution-for-ios-16.3-or-later) for details. ### [](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-2.-how-do-i-know-its-a-bug-from-apple-not-proxyman) 2\. How do I know it's a bug from Apple, not Proxyman? * You can test it by following below steps: 1. Close all Proxyman app 2. Get your iPhone (iOS 16 or later) -> Setting app -> Wifi -> Your Wifi -> Configure Proxy -> Manual Proxy 3. Set any random IP, e.g. 192.168.3.111 4. Set any random Port, e.g 9999 5. Save 6. Open Safari app -> Visit https://google.com 7. Confirm that you can access the Internet. Since the IP and Port is **invalid**, but you can access the Internet, it indicates that it's Apple's bug 🆘 ### [](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-3.-solution-for-ios-16.3-or-earlier) 3\. Solution for iOS 16.3 or earlier * Try to forget the Wi-Fi hotspot and restart the device might help. * Use [Atlantis Framework](https://github.com/ProxymanApp/atlantis) to inspect the network. * Try to use iOS 15 physical devices. * Try to use the iOS 16 **Simulator** ### [](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-4.-solution-for-ios-16.3-ios-17-or-later) 4\. ✅ Solution for iOS 16.3, iOS 17 or later 1. Setting App -> WiFi -> Your WiFi -> **Forget this Network.** 2. Setting app -> Wifi -> Your Wifi -> Configure Proxy -> Manual Proxy -> Enter the IP & Port -> Save. 3. Double-check the Configure Proxy Setting ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F77ll6iOxkgjRyUjkd94j%252FIMG_7734727B4024-1.jpeg%3Falt%3Dmedia%26token%3D917edce1-b5d5-49f8-b5d7-1aa35e732915&width=768&dpr=4&quality=100&sign=1d14cf26&sv=2) 1. Make sure it's \`Manual\`, If it's OFF, try again and Save. Sometimes, the proxy setting is not saved. ### [](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-4.-further-discussions) 4\. Further discussions * [https://github.com/ProxymanApp/Proxyman/issues/1293](https://github.com/ProxymanApp/Proxyman/issues/1293) [PreviousMy Remote Devices (iOS/Android) could not connect to Proxyman?](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy) [NextSSL Error from HTTPS Request/Response](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response) Last updated 1 year ago * [1\. Problem](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-1.-problem) * [2\. How do I know it's a bug from Apple, not Proxyman?](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-2.-how-do-i-know-its-a-bug-from-apple-not-proxyman) * [3\. Solution for iOS 16.3 or earlier](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-3.-solution-for-ios-16.3-or-earlier) * [4\. ✅ Solution for iOS 16.3, iOS 17 or later](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-4.-solution-for-ios-16.3-ios-17-or-later) * [4\. Further discussions](https://docs.proxyman.com/troubleshooting/ios-16-devices-issues#id-4.-further-discussions) --- # WebSocket | Proxyman [](https://docs.proxyman.com/advanced-features/websocket#id-1.-whats-it) 1\. What's it? -------------------------------------------------------------------------------------------- Proxyman could capture WebSocket (WS) and Secure WebSocket (WSS) traffic and easily preview it. * Capture WS/WSS from iOS Physical devices and iOS Simulator (Required [Atlantis framework](https://github.com/ProxymanApp/atlantis) ) * Capture WS/WSS from Web Browser and Mac applications. * Capture WS/WSS from Android Physical devices or Android Emulators. * Prettier WebSocket Message. * Filter All / Sent / Received messages. * See the content in JSON / Tree Preview / HEX format. * Customize Columns: Frame, Length, Data, Time, ... * Auto-decode Binary Message to JSON if possible * Open WebSocket messages by external Editors, such as Sublime, VSCode [](https://docs.proxyman.com/advanced-features/websocket#id-2.-capture-ws-wss-from-ios) 2\. Capture WS/WSS from iOS ------------------------------------------------------------------------------------------------------------------------ If your iOS app is using **URLSessionWebSocketTask** or iOS WebSocket libraries, e.g. Starscream, SocketRocket, etc. Proxyman might not be able to capture WS/WSS traffic. * **Reason**: Apple's intention. **URLSessionWebSocketTask** doesn't respect the System HTTP Proxy. All WS/WSS traffic goes directly to the Internet. Thus, Proxyman or Charles Proxy can't capture it. * Example Ap: [https://github.com/ProxymanApp/websocket-example-ios-app](https://github.com/ProxymanApp/websocket-example-ios-app) ### [](https://docs.proxyman.com/advanced-features/websocket#solution-1-recommended-for-ios-17-or-later) ✅ Solution 1 (Recommended for iOS 17 or later) 1. Follow the Setup guide for your [iOS Devices](https://docs.proxyman.com/debug-devices/ios-device) or [iOS Simulators](https://docs.proxyman.com/debug-devices/ios-simulator) (Make sure we installed and trusted the certificate on your device) 2. Proxyman Setup: Tools > Proxy Settings > SOCKS Proxy settings -> Enable it (Take note of the port) 3. On the main Proxyman app -> Take note of a current IP in the Proxyman Tools bar ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FdYPaZhjGUBzUgxu9Z6Xx%252Fproxyman_capture_websocket_4.jpeg%3Falt%3Dmedia%26token%3D74d8aab6-5b85-4fc9-a753-00d1844d9190&width=768&dpr=4&quality=100&sign=2b8f0523&sv=2) Get Proxyman current IP 1. On your app: Configure a SOCK Proxy in your App, make sure this is only available for debug builds by implementing a switch or something, you might not want your release build with this configuration. * For NWConnection * For URLSession and URLSessionWebSocketTask 1. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FMlP1FUS4JbXjhNvqO5g1%252FScreenshot%25202024-11-29%2520at%25201.17.23%25E2%2580%25AFPM.jpg%3Falt%3Dmedia%26token%3Da4bf61f2-fe72-42f3-a1e6-9b5b1e2c1ac7&width=768&dpr=4&quality=100&sign=4bcfeaa0&sv=2) Capture Websocket from iOS with Proxyman * Credit to [**FranklinSamboni**](https://github.com/FranklinSamboni) **->** [https://github.com/ProxymanApp/Proxyman/issues/586#issuecomment-2125082129](https://github.com/ProxymanApp/Proxyman/issues/586#issuecomment-2125082129) * Tutorial: [https://proxyman.io/posts/2019-10-18-WebSocket-Debugging](https://proxyman.io/posts/2019-10-18-WebSocket-Debugging) ### [](https://docs.proxyman.com/advanced-features/websocket#solution-2) ✅ Solution 2 Use [Atlantis Framework](https://github.com/ProxymanApp/atlantis#features) (developed by Proxyman) to capture WS/WSS **URLSessionWebSocketTask** traffic from iOS. Read more at [https://github.com/ProxymanApp/atlantis](https://github.com/ProxymanApp/atlantis#wswss-traffic) [](https://docs.proxyman.com/advanced-features/websocket#id-3.-capture-websockets-from-your-web-browser-chrome-safari-etc) 3\. Capture WebSockets from your Web Browser (Chrome, Safari, etc) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Proxyman can capture WS/WSS from a Web Browser out of the box. No need to configure anything. * How to use: Open Google Chrome -> Visit your website that makes a WS/WSS connection -> Open Proxyman -> Find your websocket domains -> On the Response Panel -> Click Enable SSL Proxying on these domains. Open your Browser, and reload your website -> Proxyman will capture and decrypt WS/WSS ✅ [](https://docs.proxyman.com/advanced-features/websocket#id-4.-capture-websocket-from-nodejs-golang-python-server) 4\. Capture Websocket from NodeJS, Golang, Python Server -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Proxyman can capture WS/WSS from your NodeJS, Golang, Python, and Ruby server. * How to use: Read [Automatic Setup](https://docs.proxyman.com/automatic-setup/automatic-setup) to start your server on this Terminal -> Make a WS/WSS connection -> Proxyman automatically captures and decyrpts it ✅ [](https://docs.proxyman.com/advanced-features/websocket#id-5.-map-websocket-from-localhost-less-than-greater-than-production) 5\. Map Websocket from Localhost <-> Production ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- It's possible to map the WebSocket Traffic from localhost <-> Production. Please check out the [Map Remote Tool.](https://docs.proxyman.com/advanced-features/map-remote#7.4-map-websocket-from-localhost-to-production) [PreviousProtobuf](https://docs.proxyman.com/advanced-features/protobuf) [NextClear Session](https://docs.proxyman.com/advanced-features/clear-session) Last updated 7 months ago * [1\. What's it?](https://docs.proxyman.com/advanced-features/websocket#id-1.-whats-it) * [2\. Capture WS/WSS from iOS](https://docs.proxyman.com/advanced-features/websocket#id-2.-capture-ws-wss-from-ios) * [✅ Solution 1 (Recommended for iOS 17 or later)](https://docs.proxyman.com/advanced-features/websocket#solution-1-recommended-for-ios-17-or-later) * [✅ Solution 2](https://docs.proxyman.com/advanced-features/websocket#solution-2) * [3\. Capture WebSockets from your Web Browser (Chrome, Safari, etc)](https://docs.proxyman.com/advanced-features/websocket#id-3.-capture-websockets-from-your-web-browser-chrome-safari-etc) * [4\. Capture Websocket from NodeJS, Golang, Python Server](https://docs.proxyman.com/advanced-features/websocket#id-4.-capture-websocket-from-nodejs-golang-python-server) * [5\. Map Websocket from Localhost <-> Production](https://docs.proxyman.com/advanced-features/websocket#id-5.-map-websocket-from-localhost-less-than-greater-than-production) Copy let parameters = webSocketURL.scheme == "wss" ? NWParameters.tls : NWParameters.tcp let options = NWProtocolWebSocket.Options() options.autoReplyPing = true parameters.defaultProtocolStack.applicationProtocols.insert(options, at: 0) if #available(iOS 17.0, *) { let socksv5Proxy = NWEndpoint.hostPort(host: "x.x.x.x", port: 8889) // Please x.x.x.x with a real Proxyman IP let config = ProxyConfiguration.init(socksv5Proxy: socksv5Proxy) let context = NWParameters.PrivacyContext(description: "my socksv5Proxy") context.proxyConfigurations = [config] parameters.setPrivacyContext(context) } let connection = NWConnection(to: .url(webSocketURL), using: parameters) connection.start(queue: .main) Copy private lazy var urlSession: URLSession = { let config = URLSessionConfiguration.default if #available(iOS 17.0, *) { let socksv5Proxy = NWEndpoint.hostPort(host: "x.x.x.x", port: 8889) // Please x.x.x.x with a real Proxyman IP let proxyConfig = ProxyConfiguration.init(socksv5Proxy: socksv5Proxy) config.proxyConfigurations = [proxyConfig] } return URLSession(configuration: config, delegate: nil, delegateQueue: nil) }() --- # GraphQL | Proxyman [](https://docs.proxyman.com/advanced-features/graphql#id-1.-use-debugging-tools-with-graphql-requests) 1\. Use Debugging Tools with GraphQL Requests ---------------------------------------------------------------------------------------------------------------------------------------------------------- From Proxyman 2.27.0, we can use debugging tools with GraphQL Requests by specifying the GraphQL Query Name. Matching by GraphQL QueryName works with Breakpoint, Map Local, Map Remote, Block List, Allow List, and the Scripting Tool. #### [](https://docs.proxyman.com/advanced-features/graphql#how-to-use) How to use 1. Open the debugging tool (e.g. Breakpoint) 2. Create new Rule 3. Click on Use "Wildcard Dropdown" -> Advanced -> Check GraphQL QueryName. 4. Enter the GraphQL QueryName By doing this way, the debugging tool will match the original matching rule firstly, then match the GraphQL QueryName. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MacgPHEbYY2MrgWPuxX%252F-MacgUeszvheTmIlUrlG%252FScreen_Shot_2021-05-26_at_15_46_13.png%3Falt%3Dmedia%26token%3D0315198b-0784-4fb5-a749-3116495ed320&width=768&dpr=4&quality=100&sign=26e376f1&sv=2) Enable GraphQL QueryName ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MacgPHEbYY2MrgWPuxX%252F-MachGDOOk0ERFBap4p-%252FScreen_Shot_2021-05-26_at_15_48_17.png%3Falt%3Dmedia%26token%3D513ed723-3395-40e0-b4b7-5c7109852545&width=768&dpr=4&quality=100&sign=4c933a6a&sv=2) Specify the GraphQL QueryName From build 3.0.0, Proxyman automatically fills the GraphQL Query Name when we create a debugging tool rule. [](https://docs.proxyman.com/advanced-features/graphql#id-2.-graphql-prettier) 2\. GraphQL Prettier -------------------------------------------------------------------------------------------------------- From Proxyman 2.33.0, Proxyman can prettify/beautify GraphQL's Query Value. To do it, please open Tools Menu -> Custom Previewer Tab -> Check GraphQL checkbox. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MjJ69ff1vDV4wU6dKAD%252F-MjJ6Jbk2YKgmnqmYc6u%252FScreen_Shot_2021-09-11_at_15_58_08.png%3Falt%3Dmedia%26token%3D71007b3f-4f6c-44e8-a3b8-1e51393163bf&width=768&dpr=4&quality=100&sign=cdb1fb5&sv=2) Beautify GraphQL Query [](https://docs.proxyman.com/advanced-features/graphql#id-3.-show-graphql-query-name-on-the-main-table-view) 3\. Show GraphQL Query Name on the main table view -------------------------------------------------------------------------------------------------------------------------------------------------------------------- It's possible to extract and display the Query Name. Please Right-click on the Column Header and enable it. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MVepXPi2YNzkeoVqOWB%252F-MVetX1HGlYXY9NQS7A3%252FScreen_Shot_2021-03-13_at_16_20_42.png%3Falt%3Dmedia%26token%3Df7f16b9c-d200-4742-b158-db9f23cdd42b&width=768&dpr=4&quality=100&sign=a9eb2898&sv=2) Query Name from GrapQL Request [Custom Header Column](https://docs.proxyman.com/basic-features/custom-header-column) [](https://docs.proxyman.com/advanced-features/graphql#id-4.-debug-graphql-requests-legacy-proxyman-2.26.0-and-below) 4\. Debug GraphQL Requests (Legacy - Proxyman 2.26.0 and below) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ GraphQL uses the same URL to query different responses from the server, current debugging tools (e.g. Map Local, Breakpoint, Map Remote) doesn't work well. However, by using the Scripting Tool, we can easily achieve: * Map Local for the response depends on QueryName * Manipulate the query, body, header for GraphQL Requests and Response ### [](https://docs.proxyman.com/advanced-features/graphql#map-local-with-the-scripting-tool) Map Local with the Scripting Tool We can use the Scripting tool to map 1. Open Proxyman 2. Enable SSL Proxying on the GraphQL domain 3. Verify that you can see HTTPS requests from your domain 4. Right-Click on the flow -> Tool -> Scripting to create a script with the given URL 5. To import a local file: Click the More button -> Import JSON or Other files -> Then selecting your file 6. Use the following script shows you how to set a Local File to a GraphQL request with QueryName="user" ### [](https://docs.proxyman.com/advanced-features/graphql#manipulate-headers-query-body) Manipulate Headers, Query, Body 1. Use the same code and change the queryName 2. Please use [the snipped code](https://docs.proxyman.com/scripting/snippet-code#2-common-on-request-and-response) to change the values [PreviousCustom Certificates](https://docs.proxyman.com/advanced-features/custom-certificates) [NextNetwork Conditions](https://docs.proxyman.com/advanced-features/network-throttling) Last updated 1 year ago * [1\. Use Debugging Tools with GraphQL Requests](https://docs.proxyman.com/advanced-features/graphql#id-1.-use-debugging-tools-with-graphql-requests) * [2\. GraphQL Prettier](https://docs.proxyman.com/advanced-features/graphql#id-2.-graphql-prettier) * [3\. Show GraphQL Query Name on the main table view](https://docs.proxyman.com/advanced-features/graphql#id-3.-show-graphql-query-name-on-the-main-table-view) * [4\. Debug GraphQL Requests (Legacy - Proxyman 2.26.0 and below)](https://docs.proxyman.com/advanced-features/graphql#id-4.-debug-graphql-requests-legacy-proxyman-2.26.0-and-below) * [Map Local with the Scripting Tool](https://docs.proxyman.com/advanced-features/graphql#map-local-with-the-scripting-tool) * [Manipulate Headers, Query, Body](https://docs.proxyman.com/advanced-features/graphql#manipulate-headers-query-body) Copy // Import file from More Button -> Import JSON or Other files const file = require("@users/B02D96D5.default_message_32E64A5B.json"); function onRequest(context, url, request) { // 1. Extract the queryName from the request var queryName = request.body.query.match(/\S+/gi)[1].split('(').shift(); // Or extract the operationName var operationName = request.body.operationName // 2. Save to sharedState sharedState.queryName = queryName sharedState.operationName = operationName // Done return request; } function onResponse(context, url, request, response) { // 3. Check if it's the request we need to map if (sharedState.queryName == "user") { // 4. Import the local file by Action Button -> Import // Get the local JSON file and set it as a body (like Map Local) response.headers["Content-Type"] = "application/json"; response.body = file; } // Done return response; } --- # I could not see any requests from my localhost server | Proxyman [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-1.-problem) 1\. Problem -------------------------------------------------------------------------------------------------------------------------- I develop a local NodeJS, Ruby, or Python Backend at **http://localhost:3000**, but when I visit **http://localhost:3000** from Google Chrome or Safari, there is no traffic on the Proxyman app. **Why does this happen?** By default, on macOS, all localhost requests don't go through the System HTTP Proxy. Therefore, there is no traffic recorded by the Proxyman app. ![Proxyman can not capture any http localhost traffic](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FoMIYOFiGojtc8gDuKPhQ%252Fcapture_http_localhost_chrome_2.jpeg%3Falt%3Dmedia%26token%3D20ccba33-5a02-412d-b50d-0683ae1865bb&width=768&dpr=4&quality=100&sign=b2ff0390&sv=2) [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.-solution) 2\. Solution ---------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.1-new-solution-for-v6.3.0) 2.1 ✅ New Solution for v6.3.0 From Proxyman macOS v6.3.0, Proxyman can: * Capture `http://locahost:3000` or any localhost traffic in Google Chrome / Firefox without modifying the /etc/host file * Works with a single click * Tutorial: [https://proxyman.com/posts/how-to-capture-http-localhost-traffic-from-google-chrome](https://proxyman.com/posts/how-to-capture-http-localhost-traffic-from-google-chrome) ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#how-to-do-it) How to do it 1. In Proxyman app -> Go to the Setup Menu -> Automatic Setup -> Click on the "Google Chrome" button 2. New Google Chrome will appear 3. Done. Visit http://localhost:3000 and Proxyman can capture it ![capture HTTPS traffic from Google Chrome with Proxyman](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252F202Ww1pkI0lKkmSwkzgh%252Fcapture_http_localhost_chrome_1.jpeg%3Falt%3Dmedia%26token%3Dab79aa40-2b97-401d-8475-a30467d93fea&width=768&dpr=4&quality=100&sign=95058449&sv=2) [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.2-old-solution) 2.2 Old solution ------------------------------------------------------------------------------------------------------------------------------------- There are two solutions to fix it: You should follow either one of the following solutions. ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#solution-1-map-localhost-to-the-domain-name-in-etc-hosts) Solution 1: Map **localhost** to the domain name in `/etc/hosts` 1. Open `etc/hosts` file with Vim or VS Code. 2\. Add Domain Name with both **IPv4** and **IPv6** (You can change the `proxyman.debug` with your name) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FYl0L3IBWwwG0MXIHxK6i%252FScreenshot%25202023-09-01%2520at%252022.11.30.png%3Falt%3Dmedia%26token%3Da6c5c1ae-0cc7-42fc-9f05-49c090f4fbb4&width=768&dpr=4&quality=100&sign=a478ce44&sv=2) Add proxyman.debug in /etc/host 3\. Save the file with `sudo` permission 4\. Access your localhost server by **http://proxyman.debug:3000** (replace 3000 with your localhost ports) 6\. Enjoy debugging! ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-M5khYgr9Ma-4XAPDv1_%252F-M5kkqMh_FCLKY6nHCUw%252FScreen%2520Shot%25202020-04-25%2520at%252016.55.18.png%3Falt%3Dmedia%26token%3D4ccc7500-8491-421b-be95-a4e74c10059d&width=768&dpr=4&quality=100&sign=76aec821&sv=2) If you use a `local` as a suffix, e.g. proxyman.local, make sure to remove the \`\*.local\` from the Bypass Proxy List ([Instruction](https://docs.proxyman.io/troubleshooting/.local-doesnt-appear-in-proxyman#2-solution) ). ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#solution-2-use-localhost.proxyman.io-instead-of-localhost) Solution 2: Use **localhost.proxyman.io** instead of **localhost** Proxyman uses Cloudflare and sets the DNS of **localhost.proxyman.io** to 127.0.0.1 (localhost). As a result, Proxyman can capture the local traffic as usual ✅ For example: Old URL New URL localhost:3000 localhost.proxyman.io:3000 localhost:8080 localhost.proxyman.io:8080 ... ... [PreviousSSL Error from HTTPS Request/Response](https://docs.proxyman.com/troubleshooting/get-ssl-error-from-https-request-and-response) [NextI could not see any HTTP traffic from my NodeJS, Python, or Ruby scripts](https://docs.proxyman.com/troubleshooting/i-could-not-see-any-http-traffic-from-my-nodejs-python-or-ruby-scripts) Last updated 5 days ago * [1\. Problem](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-1.-problem) * [2\. Solution](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.-solution) * [2.1 ✅ New Solution for v6.3.0](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.1-new-solution-for-v6.3.0) * [How to do it](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#how-to-do-it) * [2.2 Old solution](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#id-2.2-old-solution) * [Solution 1: Map localhost to the domain name in /etc/hosts](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#solution-1-map-localhost-to-the-domain-name-in-etc-hosts) * [Solution 2: Use localhost.proxyman.io instead of localhost](https://docs.proxyman.com/troubleshooting/couldnt-see-any-request-from-localhost-server#solution-2-use-localhost.proxyman.io-instead-of-localhost) Copy $ sudo vim /etc/hosts Copy 127.0.0.1 proxyman.debug ::1 proxyman.debug --- # Addons | Proxyman [](https://docs.proxyman.com/scripting/addons#id-1.-whats-it) 1\. What's it? --------------------------------------------------------------------------------- Proxyman provides a list of handy built-in add-ons that help you to do many common tasks, such as MD5, SHA1 Hashing, Base64 Encode/Decode, Beautify XML, JSON, .... ### [](https://docs.proxyman.com/scripting/addons#id-2.-built-in-addons) 2\. Built-in Addons You can find sample code for all addons at [Addons Snippet Code](https://docs.proxyman.com/scripting/snippet-code) Name Description [Base64.js](https://docs.proxyman.com/scripting/snippet-code#use-base64-addon) Base64 Encoding/Decode. Support Native atob/btoa function CamelCase.js Convert text to Camel Case CryptoJS.js DES, AES, Rabbit encryption/decryption algorithm. A small wrapper of CryptoJS DateToTimestamp.js Convert String Date to Timestamp DateToUTC.js Convert String Date to UTC String DecodeURI.js Decode percent-encoded String EncodeURI.js Encode to percent-encoded String FormatCSS.js Beautify CSS String FormatJSON.js Beautify JSON String BeautifyJSON.js Convert JSON Obj to beauty JSON String UglifyJSON.js Convert JSON Obj to ugly JSON String FormatXML.js Beautify XML String HelloWorld.js Hello World Hex2rgb.js Convert #000000 string to RGB string JsonToQuery.js Convert JSON Objc to Query String JSONValidator.js Validate JSON String [JWTDecode.js](https://docs.proxyman.com/scripting/snippet-code#jwt-decode) Decode JWT Token KebabCase.js Conver to Kebab String [MD5.js](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md-5-sha-1-sha-256-sha-512) Hash MD5 MinifyCSS.js Minify CSS String MinifyJSON.js Minify JSON String MinifyXML.js Minify XML String QueryToJson.js Convert Query String to JSON Object [Pako.js](https://docs.proxyman.com/scripting/snippet-code#deflate-inflate-and-gzip-ungzip) Deflate/Inflate and GZip/UnGZip [SHA1.js](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md-5-sha-1-sha-256-sha-512) Hash SHA1 [SHA256.js](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md-5-sha-1-sha-256-sha-512) Hash SHA256 [SHA512.js](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md-5-sha-1-sha-256-sha-512) Hash SHA512 SnakeCase.js Convert to Snake Case StartCase.js Convert to Start Case [UUID.js](https://docs.proxyman.com/scripting/snippet-code#use-uuid-v4-addon) Generate Unique UUID-v4 string [](https://docs.proxyman.com/scripting/addons#id-3.-how-to-use-addons) 3\. How to use addons? -------------------------------------------------------------------------------------------------- Each addon will export the function that you can import by using the `require` function To illustrate, Base64.js addon looks like: Then, you can use it in the script: You can find all addons code at **~/Library/Application\\ Support/com.proxyman.NSProxy/addons** [](https://docs.proxyman.com/scripting/addons#id-4.-notes) 4\. Notes ------------------------------------------------------------------------- The `require` function is not a built-in function from [JavascriptCore framework](https://developer.apple.com/documentation/javascriptcore) , it's a custom function that Proxyman provides to allows the user to import the addons/libs easily. Thanks to [Ivan Mathy](https://github.com/IvanMathy) for creating Boop app that facilitates Proxyman's built-in add-ons. Addons folder will be overridden for every new Proxyman Update. Make sure you don't edit the addon. If need to modify, please copy to the **users** folder [Previousasync/await Request](https://docs.proxyman.com/scripting/async-await-request) [NextBuilt-in JS Libraries](https://docs.proxyman.com/scripting/built-in-js-libraries) Last updated 4 years ago * [1\. What's it?](https://docs.proxyman.com/scripting/addons#id-1.-whats-it) * [2\. Built-in Addons](https://docs.proxyman.com/scripting/addons#id-2.-built-in-addons) * [3\. How to use addons?](https://docs.proxyman.com/scripting/addons#id-3.-how-to-use-addons) * [4\. Notes](https://docs.proxyman.com/scripting/addons#id-4.-notes) Copy // Base64.js const Base64 = require('@libs/base64.js'); const { atob } = require("@libs/atob.js"); const { btoa } = require("@libs/btoa.js"); // atob / btoa // They're equivalent with window.atob and window.btoa exports.atob = atob; exports.btoa = btoa; // Basic Base64 exports.base64Decode = (input) => { return Base64.decode(input) }; exports.base64Encode = (input) => { return Base64.encode(input); }; Copy const { atob, btoa } = require("@addons/Base64.js") function onRequest(context, url, request) { // Encode base64 by using the export function var text = btoa("Hello World"); console.log(text) // => SGVsbG8gV29ybGQ= } --- # Scripting | Proxyman ### [](https://docs.proxyman.com/scripting/script#id-1.-whats-it) 1\. What's it? Proxyman offers a scripting feature that the developer could write the JS code to manipulate the Request/Response in a flexible way. ### [](https://docs.proxyman.com/scripting/script#id-2.-benefits) 2\. Benefits * Implement Map Local / Map Remote / Breakpoint by JS Code. **100x Faster** * Change 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, and 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 from Charles Proxy * Assign and receive shared States between each script or current session with [ShareState or Environment Variables](https://docs.proxyman.com/scripting/environment-variables) ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FVb8s7zn5QOh5E3mH7USO%252FScreenshot%25202024-01-07%2520at%252014.52.47.jpg%3Falt%3Dmedia%26token%3D944dfb39-f5ae-4cbd-9db8-4d313fe7c743&width=768&dpr=4&quality=100&sign=1f4e8bc9&sv=2) Scripting Tool [Snippet Code](https://docs.proxyman.com/scripting/snippet-code) ### [](https://docs.proxyman.com/scripting/script#id-3.-how-to-use-it) 3\. How to use it? You can access the Scripting Tool by: * Script Menu -> Script List (⌥⌘I) * Open Menu Context from Right Click on the Flow -> Tools -> Scripting Please check out the [Snippet Code](https://docs.proxyman.com/scripting/snippet-code) to see a collection of snippet JS codes for the Scripting Tool. ### [](https://docs.proxyman.com/scripting/script#id-4.-scripting-with-graphql-requests) 4\. Scripting with GraphQL Requests From Proxyman 2.27.0+, the Scripting Tool can work with a GraphQL Request by a specific QueryName. Please check out the following GraphQL Document. [GraphQL](https://docs.proxyman.com/advanced-features/graphql) ### [](https://docs.proxyman.com/scripting/script#id-4.1-scripting-with-websocket) 4.1 Scripting with Websocket From Proxyman v6.2.0 or later, it's possible to use the Script to * Modify the Websocket Request URL & Header * Modify the Websocket Response Headers * ❌ Can not modify the websocket message. Only URL and Headers are supported. * Refer to this snippet code. ### [](https://docs.proxyman.com/scripting/script#id-5.-examples) 5\. Examples The following guide will show you how to write JS code to change the Request domain from Production to Localhost and change the Response Body 1. Make sure you enable SSL for this domain before creating the script. 2. Open the Scripting Tool and create a new Script Entry (⌘N). You can right-click on the Request -> Tools -> Scripting => Proxyman will create a Script too 3. Give the name and define a Matching Rule. 4. Ex: **Name**\=Test on Localhost endpoint, **URL**\=https://proxyman.io 5. Enable Run Script on **Request** and **Response** **checkbox** 6. Start writing JS code for `onRequest` function **onRequest(context, url, request) {}** ### [](https://docs.proxyman.com/scripting/script#onrequest-object-format) onRequest() Object Format `context`, `url` and `request` Objects are defined by: You can change any value of the request obj except `rawBody` If the **body** variable is invalid format due to incorrect Content-Type in the Header. Please consider using the **rawBody** and manually parse the string. The type of `request.body` replies on the Content-Type Header. Content-Type Header request.body application/json or JSON families Javascript Object application/x-www-form-urlencoded Javascript Object plain-text or text-based Content-Type, Ex: application/js, text/css, text/html, ... String The rest: Binary Data (application/zip, application/octet-stream) Uint8Array Check out common JS code from Snipped Code Page [Snippet Code](https://docs.proxyman.com/scripting/snippet-code) 7\. Start writing code on `onResponse` function ### [](https://docs.proxyman.com/scripting/script#onresponse-objects-format) onResponse() Objects Format `context`, `url`, `request`, and `response` objects are defined by: You can change `statusCode`, `headers` and `body` from the response Obj If the **body** variable is invalid format due to incorrect Content-Type in the Header. Please consider using **rawBody** and manually parse the string. The type of `response.body` replies on the Content-Type Header Content-Type Header request.body application/json or JSON families Javascript Object application/x-www-form-urlencoded Javascript Object plain-text or text-based Content-Type, Ex: application/js, text/css, text/html, ... String The rest (application/zip, application/octet-stream) Uint8Array You must return `request` and `response` object in `onRequest` and `onResponse` function ### [](https://docs.proxyman.com/scripting/script#id-6.-built-in-addons-and-libraries) 6\. Built-in Addons and Libraries Proxyman provides plenty of addons and libraries that help you achieve common tasks: Hashing, Encode/Decode, ... [Addons](https://docs.proxyman.com/scripting/addons) [Built-in JS Libraries](https://docs.proxyman.com/scripting/built-in-js-libraries) [Snippet Code](https://docs.proxyman.com/scripting/snippet-code) ### [](https://docs.proxyman.com/scripting/script#id-7.-debugging-js-error) 7\. Debugging JS Error On certain occasions, you might encounter Javascript errors due to syntax errors, invalid code, ... You can debug by looking at error messages on the console or using `console.log().` ### [](https://docs.proxyman.com/scripting/script#id-8.-use-scripting-as-a-mock-api) 8\. Use Scripting as a Mock API From Proxyman 2.32.0, we can use the Scripting Tool as a Mock API. It means your request would never hit the server, and you have to define a Response Body. This behavior is the same with Map Local. This feature is useful when the actual Restful API is not available yet. You can define and test it locally. To enable the Mock API: 1. Open the Scripting Tool -> Select the Script 2. Enable Run as Mock API checkbox. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-Mjmmr-T8SfIzLTD4zSD%252F-MjmnK40Iy1mMdQaU3mL%252FScreen_Shot_2021-09-17_at_14_59_30.png%3Falt%3Dmedia%26token%3D6e35265f-1a40-4578-9178-ca40c4eb5143&width=768&dpr=4&quality=100&sign=7a9c4485&sv=2) Enable Mock API Then you can define a Response as usual: ### [](https://docs.proxyman.com/scripting/script#id-9.-notes) 9\. Notes * You must return `request` and `response` Object in `onRequest` and `onResponse` function. * **Proxyman 4.16.0 or later**: Proxyman now converts the Binary Data to **Uint8Array** * Proxyman 4.15.0 or earlier: Since Javascript doesn't have the Data object type, the Data Body will convert to **Base64 Encoded String** in Javascript. To pass Uint8Array, blob, or ArrayBuffer to the body, make sure you convert to **Base64 Encoded String.** [PreviousWSL](https://docs.proxyman.com/proxyman-windows/wsl) [Nextasync/await Request](https://docs.proxyman.com/scripting/async-await-request) Last updated 1 month ago * [1\. What's it?](https://docs.proxyman.com/scripting/script#id-1.-whats-it) * [2\. Benefits](https://docs.proxyman.com/scripting/script#id-2.-benefits) * [3\. How to use it?](https://docs.proxyman.com/scripting/script#id-3.-how-to-use-it) * [4\. Scripting with GraphQL Requests](https://docs.proxyman.com/scripting/script#id-4.-scripting-with-graphql-requests) * [4.1 Scripting with Websocket](https://docs.proxyman.com/scripting/script#id-4.1-scripting-with-websocket) * [5\. Examples](https://docs.proxyman.com/scripting/script#id-5.-examples) * [onRequest() Object Format](https://docs.proxyman.com/scripting/script#onrequest-object-format) * [onResponse() Objects Format](https://docs.proxyman.com/scripting/script#onresponse-objects-format) * [6\. Built-in Addons and Libraries](https://docs.proxyman.com/scripting/script#id-6.-built-in-addons-and-libraries) * [7\. Debugging JS Error](https://docs.proxyman.com/scripting/script#id-7.-debugging-js-error) * [8\. Use Scripting as a Mock API](https://docs.proxyman.com/scripting/script#id-8.-use-scripting-as-a-mock-api) * [9\. Notes](https://docs.proxyman.com/scripting/script#id-9.-notes) Copy // Import UUID addons const { uuidv4 } = require("@addons/UUID.js"); function onRequest(context, url, request) { // print log console.log(request); // Change Production domain -> Localhost request.method = "GET"; request.scheme = "http"; request.host = "localhost"; request.port = 8000; // Add new header request.headers["X-New-Header"] = "Hello From Scripting feature"; request.headers["UUID"] = uuidv4(); // generate random UUIDv4 delete request.headers["Key-Need-Delete"]; // Update or Add a new Query request.queries["name"] = "Proxyman"; // Update Body var body = request.body; body["name"] = "Proxyman"; request.body = body; // Or Map the body with a local file (Proxyman 2.25.0+) // request.bodyFilePath = "~/Desktop/mockdata.json"; // Done return request; } Copy // context (readonly) { "scriptName": " Your Script Name", "matchingRule": " Your Matching Rule", "matchingMethod": " Method", "isEnableOnRequest": "Bool", "isEnableOnResponse": "Bool", "filePath": " Script path", "flow": { // Availble from 2.16.0+ "serverPort": "443", "serverIpAddress": "104.18.230.83", "clientIpAddress": "192.168.0.102", "remoteDeviceName": "iPhone XR", "remoteDeviceIP": "192.168.0.102", "id": "51", "clientPath": null, "clientPort": "51494", "clientName": null, "mapRemoteOriginalURL": " Original URL before Map Remote modification (nullable)" }, } // url (readonly) url: String // => Present the full URL // request { "method": " HTTP Method. Accept string method. Ex: GET, POST, ...", "scheme": " Accept http or https", "host": " Host of the request. Ex: api.proxyman.io, localhost, ...", "path": ": Path of the URL. Ex: /v1/data", "port": " Accept int port number. Ex: 443, 8080, ..", "queries": "<[String: Any]> A JS Object (Dictionary) contains key values of the query", "headers": "<[String: Any]> A JS Object (Dictionary) contains key values of the header", "body": "Depend on the Content-Type header. It might be a dictionary for JSON and form, Plain Text or Uint8Array", "bodyFilePath": " Set a body with a local file. See example in Snippet Code Page" "rawBody": ": A raw body String or Uint8Array", "preserveHostHeader": " Preserve the Host", "isURLEncoding": " Determine if Proxyman will perform URLEncoding when constructing the final URL. Default is True" } Copy function onResponse(context, url, request, response) { console.log(response); // Update or Add a new header response.headers["Content-Type"] = "application/json"; // Update status Code response.statusCode = 500; // Update Body var body = response.body; body["new-key"] = "Proxyman"; response.body = body; // Or Map the body with a local file (Proxyman 2.25.0+) // response.bodyFilePath = "~/Desktop/mockdata.json"; // Done return response; } Copy // context (readonly): Same with onRequest // url (readonly): Same with onRequest // request (readonly): Same with onRequest // response { "statusCode": " Status Code. Ex: 200, 400, 404,...", "httpVersion": " The HTTP Version", "statusPhrase": " HTTP Status Phrase. Ex Not Found, OK, ...", "headers": "<[String: Any]> A JS Object (Dictionary) contains key values of the header", "body": "Depend on the Content-Type header. It might be a dictionary for JSON and form, PlainText or Uint8Array", "rawBody": ": A raw body String or Uint8Array", "bodyFilePath": " Set a body with a local file. See example in Snippet Code Page" } Copy function onResponse(context, url, request, response) { // Init new body var body = {}; body["new-key"] = "Proxyman"; response.body = body; // Or map from a file // response.bodyFilePath = "~/Desktop/myfile.json" // Done return response; } --- # Proxyman does not work with VPN apps | Proxyman In general, VPN apps might conflict with all Web Debugging Proxy apps, including Proxyman, Charles Proxy, Fiddler, and Wireshark. This troubleshooting would describe which VPN services work and do not work with Proxyman and how to fix them. [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#problems) Problems --------------------------------------------------------------------------------------------------------- Proxyman cannot capture any HTTP/HTTPS traffic when you're using corporate VPNs. [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#how-to-fix-it-in-general) How to fix it in general ----------------------------------------------------------------------------------------------------------------------------------------- Basically, the VPN app would force all traffic that goes through the VPN Server instead of the Proxyman Local Server (127.0.0.1:9090). Therefore, Proxyman could not capture the traffic. In order to fix it * Open your VPN's Settings and try to find a text field where you can override the HTTP/HTTPS Proxy. * If it's available, let override to the address: **127.0.0.1** at Port **9090** * If it's not available, please Google " config HTTP Proxy" and see how to do it. Then, Proxyman can capture and work with your VPN app. [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#new-solution-for-ios-atlantis--proxyman) ✅ New Solution for iOS: Atlantis + Proxyman --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * Works with any VPN. * Capture all HTTP/HTTPS or Websocket traffic from your iOS app * No need to set up a Proxy or install any certificate * Works with iOS Simulators and iOS Physical Devices ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#how-to-use-atlantis) 👉 How to use Atlantis? * Check out the [Atlantis README](https://github.com/ProxymanApp/atlantis) * Blog: [https://proxyman.com/posts/capture-https-ios-app-with-company-vpn](https://proxyman.com/posts/capture-https-ios-app-with-company-vpn) [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#list-of-vpns-that-work-with-proxyman-charlesproxy-fiddler) List of VPNs that work with Proxyman/CharlesProxy/Fiddler ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-1.-tunnelblick) 1\. Tunnelblick Works fine without any configuration. ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-2.-forticlient) 2\. FortiClient Work fine if set HTTP Proxy to Proxyman. Please follow this guideline [https://docs.fortinet.com/document/forticlient/6.2.0/xml-reference-guide/179671/proxy-settings](https://docs.fortinet.com/document/forticlient/6.2.0/xml-reference-guide/179671/proxy-settings) ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-3.-anyconnect) 3\. AnyConnect * Try to set HTTP Proxy if it's available in AnyConnect's Preference * Enter your host in "Bypass proxy settings for these Hosts & Domains" in section in System Preferences -> Network -> Wi-Fi > Advanced -> Proxies (Ref: [https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-816093447](https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-816093447) ) ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-4.-pulse-secure-and-global-protect-vpn) 4\. Pulse Secure and Global Protect VPN **Solution 1:** First, you need to install [OpenConnect](https://casper.infradead.org/openconnect/index.html) . You need to obtain the installation path for `openconnect` After that, don't forget to edit `/etc/sudoers` Add this line and replace `` with your binary path. Now, you can connect to your secured proxy using Juniper SSL / Pulse Connect Secure protocol. Once connected, launch Proxyman and it will work like a charm. Credit: @florentmorin, from [https://github.com/ProxymanApp/Proxyman/issues/1203](https://github.com/ProxymanApp/Proxyman/issues/1203) Please consult with your Security Team before using the **sudo** command. **Solution 2:** It might work if we follow the following process: 1. Connect to the VPN and Verify it works 2. Open Proxyman app 3. Reset the VPN Connection Credit: @AddictiveColors ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-5.-viscosity) 5\. **Viscosity** 1. Follow the documentation to [override the http-https proxy](https://www.sparklabs.com/support/kb/article/advanced-configuration-commands/#proxy-http) on Viscosity VPN app. Sample Configure: Alternative Solution for Viscosity VPN 1. Under Advanced Tab in the Setting -> Add this to the Connection Setting: 1. Start Proxyman -> Done Reference: [https://stackoverflow.com/a/42515317/3127477](https://stackoverflow.com/a/42515317/3127477) ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-6.-cisco-vpn) 6\. Cisco VPN 1. Disconnect your VPN 2. Open Proxyman 3. Go to Tools → Proxy Settings → Bypass Proxy Settings… 4. Add a vpn server domain (e.g., vpn.yourcompay.com etc). Tap on Done 5. Connect your VPN now Reference: [https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-2317101771](https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-2317101771) ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-7.-nord-vpn) 7\. Nord VPN * For NordVPN you can use the below to set up a local http/https proxy that will router through NordVPN and then use that proxy server as an external proxy in Proxyman * [https://github.com/edgd1er/nordlynx-proxy](https://github.com/edgd1er/nordlynx-proxy) Credit to @seidnerj from [https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-2416373960](https://github.com/ProxymanApp/Proxyman/issues/264#issuecomment-2416373960) ### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-8.-zscaler) 8\. Zscaler Please follow this [workaround](https://github.com/ProxymanApp/Proxyman/issues/1307#issuecomment-1236202303) from the Zscaler team [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#list-of-vpns-that-do-not-work-with-proxyman-charlesproxy-fiddler) List of VPNs that do not work with Proxyman/CharlesProxy/Fiddler ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-1.-sophos) 1\. Sophos Sophos doesn't work with all Web Debugging Proxy apps. It's a known issue from Sophos and there is no solution to fix it. Please try to ask your Security Team to try to set the HTTP/HTTPS Proxy from Sophos. Update: **Sophos 10.0.4** (A/V Endpoint Protection) might work with Proxyman with a new network proxy extension, but it has a known issue that causes massive CPU Spikes. It's going to fix in the upcoming EAP. Credit: @AddictiveColors [PreviousEnvironment Variables](https://docs.proxyman.com/scripting/environment-variables) [NextMy Remote Devices (iOS/Android) could not connect to Proxyman?](https://docs.proxyman.com/troubleshooting/my-ios-devices-couldnt-connect-to-proxyman-via-proxy) Last updated 8 months ago * [Problems](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#problems) * [How to fix it in general](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#how-to-fix-it-in-general) * [✅ New Solution for iOS: Atlantis + Proxyman](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#new-solution-for-ios-atlantis--proxyman) * [👉 How to use Atlantis?](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#how-to-use-atlantis) * [List of VPNs that work with Proxyman/CharlesProxy/Fiddler](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#list-of-vpns-that-work-with-proxyman-charlesproxy-fiddler) * [1\. Tunnelblick](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-1.-tunnelblick) * [2\. FortiClient](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-2.-forticlient) * [3\. AnyConnect](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-3.-anyconnect) * [4\. Pulse Secure and Global Protect VPN](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-4.-pulse-secure-and-global-protect-vpn) * [5\. Viscosity](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-5.-viscosity) * [6\. Cisco VPN](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-6.-cisco-vpn) * [7\. Nord VPN](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-7.-nord-vpn) * [8\. Zscaler](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#id-8.-zscaler) * [List of VPNs that do not work with Proxyman/CharlesProxy/Fiddler](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps#list-of-vpns-that-do-not-work-with-proxyman-charlesproxy-fiddler) Copy brew install openconnect Copy whereis -b openconnect Copy sudo visudo -f /etc/sudoers Copy %admin ALL=(ALL) NOPASSWD: Copy sudo openconnect --protocol nc -u Copy #viscosity proxy-http localhost 9090 #viscosity proxy-https localhost 9090 Copy dhcp-option HTTPPROXY 127.0.0.1:9090 dhcp-option HTTPSPROXY 127.0.0.1:9090 --- # I couldn't see any requests from 3rd-party network libraries | Proxyman ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#undefined) [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-1.-problem) 1\. Problem -------------------------------------------------------------------------------------------------------------------------------------- * I can see other requests on Proxyman but not from my website, NodeJS, iOS, or Android, .... which use 3rd-party network libraries, such as [fetch](https://github.com/github/fetch) , [axios](https://github.com/axios/axios) , [Alamofire](https://github.com/Alamofire/Alamofire) , [Ktor Apache HttpClient](https://ktor.io/) , curl... [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-2.-new-automatic-solution-v4.7.0-or-later) 2\. New Automatic Solution (v4.7.0 or later) ✅ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Proxyman v4.7.0 or later can capture HTTP/HTTPS traffic from Python with 1-click. * 1-click solution: No need to manually set HTTP Proxy config or trust the self-signed certificate. * Support NodeJS, Ruby and Python. ### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#how-to-use) How to use: 1. Open Proxyman -> Setup Menu -> Automatic Setup 2. Click on "Open New Terminal" 3. Accept the Apple Script permission prompt if needed 4. The New Terminal app is launched -> You can start your Python Backend Server, or Run scripts => Proxyman automatically captures all traffic. 5. Done ✅ ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252Fqnvkq53VSSsS3XGDAjtn%252FCleanShot%25202023-04-22%2520at%252015.18.19%25402x.jpg%3Falt%3Dmedia%26token%3D352a3df3-d6f6-4c48-ae19-70f46abe7778&width=768&dpr=4&quality=100&sign=6a8b053b&sv=2) [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-3.-old-solution-not-recommended) 3\. Old Solution (Not recommended ❌) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ In general, we have to manually config the network library to use HTTP Proxy and point to Proxyman Port (Default at 9090) List of possible solutions: * Fetch: [https://stackoverflow.com/questions/44524236/using-proxy-like-fiddler-with-fetch-api](https://stackoverflow.com/questions/44524236/using-proxy-like-fiddler-with-fetch-api) * cURL: Use _\--proxy_ flag. For example: Read more: [https://stackoverflow.com/a/9445516/3127477](https://stackoverflow.com/a/9445516/3127477) * Ktor: [https://ktor.io/clients/http-client/features/proxy.html](https://ktor.io/clients/http-client/features/proxy.html) * Alamofire: [https://stackoverflow.com/a/42754358/3127477](https://stackoverflow.com/a/42754358/3127477) #### [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#axios) Axios You can explicitly set HTTP Proxy on Axios. All traffic will appear on Proxyman. For the host and port value, you can find it in [iOS Device Windows](https://docs.proxyman.com/debug-devices/ios-device#ios-setup-guide) [PreviousI couldn't see any traffics on Proxyman](https://docs.proxyman.com/troubleshooting/i-couldnt-see-any-traffics-on-proxyman) [Next\[Breakpoint\] Modify Request/Response by Raw Message](https://docs.proxyman.com/troubleshooting/breakpoint-modify-request-response-by-raw-message) Last updated 1 year ago * [](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#undefined) * [1\. Problem](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-1.-problem) * [2\. New Automatic Solution (v4.7.0 or later) ✅](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-2.-new-automatic-solution-v4.7.0-or-later) * [How to use:](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#how-to-use) * [3\. Old Solution (Not recommended ❌)](https://docs.proxyman.com/troubleshooting/couldnt-see-any-requests-from-3rd-party-network-libraries#id-3.-old-solution-not-recommended) Copy $ curl -v "https://httpbin.org/get?id=123" --proxy localhost:9090 Copy axios.get({ url: '/v1/user/data', // 'proxy' defines the hostname and port of the proxy server // Use `false` to disable proxies, ignoring environment variables. // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and // supplies credentials. // This will set an `Proxy-Authorization` header, overwriting any existing // `Proxy-Authorization` custom headers you have set using `headers`. proxy: { host: '127.0.0.1', port: 9090 } }); --- # Environment Variables | Proxyman [](https://docs.proxyman.com/scripting/environment-variables#id-1.-shared-state) 1\. Shared State ------------------------------------------------------------------------------------------------------ This feature is only available on **macOS 10.15+**. Prior to macOS 10.15, it might be crashed. It's possible to share states from the **onRequest()** and the **onResponse()** from **different scripts** when the script is executed with the global object: **sharedState** * The **sharedState** is a JS Object (Dictionary), so you can assign any keys and values from **onRequest()**, then receive the data on the **onResponse()** or from **different scripts**. The following code demonstrates: * Get the global counter and increase it as soon as the script is executed * Share data between Request and Response Copy function onRequest(context, url, request) { // Save some state to sharedState sharedState.url = url; sharedState.data = "custom"; sharedState.info = {"username": "Proxyman"}; // Increase the global counter var count = sharedState.count ?? 0; count += 1; sharedState.count = count; // Log console.log(sharedState); return request; } function onResponse(context, url, request, response) { // Receive it console.log("Custom data = " + sharedState.dataa); console.log("sharedState.count = " + sharedState.count); // Done return response; } From Proxyman 2.25.0+, the **sharedState** is available across different scripts. It is only released when quitting Proxyman app or using \`clearSharedState()\` function. Prior to Proxyman 2.24.0**,** the **sharedState** is only alive on the current flow that executes the script and it's released when the script is run over. To clear all data, please consider using \`clearSharedState\` function. [](https://docs.proxyman.com/scripting/environment-variables#id-2.-environment-variables) 2\. Environment Variables ------------------------------------------------------------------------------------------------------------------------ Environment Variables feature is introduced from **Proxyman 3.8.0** and later. * Scripts can access system env. * Support bash or zsh. #### [](https://docs.proxyman.com/scripting/environment-variables#how-to-use) How to use 1. Define an env in your `~/.zshrc` or `~/.bashrc` 2\. Open any scripts -> More button -> Environment Variables -> Allow all scripts to access env. 3\. Reload the ENV to get the env update. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-LlPt_6BePnJ3oK3saP1%252Fuploads%252FIcgfL1mDXNZMSwnBiNie%252FScreen_Shot_2022-07-31_at_10_48_26.jpg%3Falt%3Dmedia%26token%3Db74c43a0-6c9b-442c-8158-1fb155daefee&width=768&dpr=4&quality=100&sign=9c2c698&sv=2) Enable env on scripts 4\. Access env from your script with a prefix `$` [](https://docs.proxyman.com/scripting/environment-variables#id-3.-additions) 3\. Additions ------------------------------------------------------------------------------------------------ * Manually Reload the System Env (Available on Proxyman macOS 4.15.0 or later). Make sure we enable the permission first, in the More Button -> Environment Variables -> Allow all scripts to read env. [PreviousSnippet Code](https://docs.proxyman.com/scripting/snippet-code) [NextProxyman does not work with VPN apps](https://docs.proxyman.com/troubleshooting/proxyman-does-not-work-with-vpn-apps) Last updated 2 years ago * [1\. Shared State](https://docs.proxyman.com/scripting/environment-variables#id-1.-shared-state) * [2\. Environment Variables](https://docs.proxyman.com/scripting/environment-variables#id-2.-environment-variables) * [3\. Additions](https://docs.proxyman.com/scripting/environment-variables#id-3.-additions) Copy // Clear all data from sharedState object clearSharedState(); Copy export ACCESS_TOKEN=AAABBBCCC export PROXYMAN_PATH=/Users/my_user/Desktop/file-mapper Copy async function onResponse(context, url, request, response) { console.log($PATH); console.log($ACCESS_TOKEN); console.log($PROXYMAN_PATH); // Done return response; } Copy async function onRequest(context, url, request) { // manually reload to get the latest changes _reloadEnv(); // get env console.log($PROXYMAN_ID) // Done return request; } --- # Snippet Code | Proxyman [](https://docs.proxyman.com/scripting/snippet-code#id-1.-whats-it) 1\. What's it? --------------------------------------------------------------------------------------- A collection of snippet Javascript code for the Scripting Tool. Could not find the Snippet Code you are looking for? Please open a ticket at [https://github.com/ProxymanApp/Proxyman](https://github.com/ProxymanApp/Proxyman) , we will get back to help you ⭐️ [](https://docs.proxyman.com/scripting/snippet-code#id-2.-common-on-request-and-response) 2\. Common on Request and Response --------------------------------------------------------------------------------------------------------------------------------- * [Update Headers of Request or Response](https://docs.proxyman.com/scripting/snippet-code#http-header) * [Update Request Query](https://docs.proxyman.com/scripting/snippet-code#request-query) * [Update URLEncoded Form Request Body](https://docs.proxyman.com/scripting/snippet-code#urlencoded-form-body) * [Update JSON Request or Response Body](https://docs.proxyman.com/scripting/snippet-code#json-body) * [Map a local file to Response's Body like Map Local Tool](https://docs.proxyman.com/scripting/snippet-code#map-a-local-file-to-responses-body-like-map-local-tool-proxyman-2.25.0+) * [Change Request Scheme, Host, Port, Path](https://docs.proxyman.com/scripting/snippet-code#change-request-destination-scheme-host-port-path) * [HTTP to HTTPS](https://docs.proxyman.com/scripting/snippet-code#http-to-https) * [HTTPS to HTTP](https://docs.proxyman.com/scripting/snippet-code#http-to-https-1) * [Change Request Method](https://docs.proxyman.com/scripting/snippet-code#change-response-http-status-code) * [Change Response Status Code](https://docs.proxyman.com/scripting/snippet-code#change-response-http-status-code) * [Logging](https://docs.proxyman.com/scripting/snippet-code#logging) * [Use JSON File as a Body of Request or Response](https://docs.proxyman.com/scripting/snippet-code#use-json-file-as-a-body-of-request-or-response) * [Use multiple JSON files](https://docs.proxyman.com/scripting/snippet-code#use-multiple-json-files) * [Local Map for GraphQL](https://docs.proxyman.com/scripting/snippet-code#map-local-with-graphql) * [Use ArrayBuffer in Request/Response Body](https://docs.proxyman.com/scripting/snippet-code#use-arraybuffer-in-request-response-body) * [Preserve the Host](https://docs.proxyman.com/scripting/snippet-code#preserve-the-host) * [Comment & Highlight with color](https://docs.proxyman.com/scripting/snippet-code#comment-and-highlight-with-color) * [Abort (close) the request/response connection (Like Block List Tool)](https://docs.proxyman.com/scripting/snippet-code#abort-the-request-response-like-block-list-tool) [](https://docs.proxyman.com/scripting/snippet-code#id-3.-addons) 3\. Addons --------------------------------------------------------------------------------- * [Base64 Encoding/Decoding or atob/btoa](https://docs.proxyman.com/scripting/snippet-code#use-base64-addon) * [Hashing Addon (MD5, SHA1, SHA256, SHA512)](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md-5-sha-1-sha-256-sha-512) * [UUIDv4 Generator](https://docs.proxyman.com/scripting/snippet-code#use-uuid-v4-addon) * [Deflate/Inflate or GZip/UnGZip](https://docs.proxyman.com/scripting/snippet-code#deflate-inflate-and-gzip-ungzip) * [JWT Decode](https://docs.proxyman.com/scripting/snippet-code#jwt-decode) [](https://docs.proxyman.com/scripting/snippet-code#id-4.-regex) 4\. Regex ------------------------------------------------------------------------------- * [Check if a given string contains only numbers](https://docs.proxyman.com/scripting/snippet-code#regex) * [Regex to get the Scheme, Host, Port, Path, and Query of the URL](https://docs.proxyman.com/scripting/snippet-code#regex-to-get-the-scheme-host-port-path-and-query-of-the-url) [](https://docs.proxyman.com/scripting/snippet-code#id-5.-import-export-files) 5\. Import / Export Files ------------------------------------------------------------------------------------------------------------- * [Import JSON File](https://docs.proxyman.com/scripting/snippet-code#json) * [Import Binary Data (Image)](https://docs.proxyman.com/scripting/snippet-code#binary-file) * [Import Text-based file (css, html, js....)](https://docs.proxyman.com/scripting/snippet-code#text-based-file) * [Import Files without using the "Import Tool"](https://docs.proxyman.com/scripting/snippet-code#import-file-without-using-the-import-tool) * [Write / Export to a local file](https://docs.proxyman.com/scripting/snippet-code#write-export-to-a-local-file) * [Check file exist](https://docs.proxyman.com/scripting/snippet-code#check-if-the-first-exist) * [Read a Local File](https://docs.proxyman.com/scripting/snippet-code#read-a-file) * [Use Response as Mock API](https://docs.proxyman.com/scripting/snippet-code#use-as-mock-api) [](https://docs.proxyman.com/scripting/snippet-code#id-6.-miscellaneous) 6\. Miscellaneous ----------------------------------------------------------------------------------------------- * [By-pass CORS](https://docs.proxyman.com/scripting/snippet-code#by-pass-cors) * [Inject a Header to the Request or Response](https://docs.proxyman.com/scripting/snippet-code#inject-header-to-request-response) * [Response delay with sleep() function](https://docs.proxyman.com/scripting/snippet-code#response-delay-with-sleep-function) [](https://docs.proxyman.com/scripting/snippet-code#id-7.-encryption-decryption) 7\. Encryption/Decryption --------------------------------------------------------------------------------------------------------------- * [AES](https://docs.proxyman.com/scripting/snippet-code#aes-encryption-decryption) * [DES](https://docs.proxyman.com/scripting/snippet-code#des-encryption-decryption) [](https://docs.proxyman.com/scripting/snippet-code#id-8.-map-remote-with-scripting) 8\. Map Remote with Scripting ----------------------------------------------------------------------------------------------------------------------- * [Map v1 to v2 Endpoints](https://docs.proxyman.com/scripting/snippet-code#map-v1-to-v2-endpoints) * [Map Localhost to Production](https://docs.proxyman.com/scripting/snippet-code#map-localhost-to-production) * [Map Production to Localhost](https://docs.proxyman.com/scripting/snippet-code#map-production-to-localhost) [](https://docs.proxyman.com/scripting/snippet-code#id-9.-make-async-await-http-request-macos) 9\. Make Async/await HTTP Request (macOS) --------------------------------------------------------------------------------------------------------------------------------------------- * [GET Request with Query](https://docs.proxyman.com/scripting/snippet-code#get-request-with-query) * [POST Request with JSON Body](https://docs.proxyman.com/scripting/snippet-code#post-request-with-json-body) * [POST Request with application/x-www-form-urlencoded](https://docs.proxyman.com/scripting/snippet-code#post-request-with-application-x-www-form-urlencoded-body) * [PUT / PATCH / DELETE Request](https://docs.proxyman.com/scripting/snippet-code#put-patch-delete-request) [](https://docs.proxyman.com/scripting/snippet-code#id-9.1.-make-async-await-http-request-windows-linux) 9.1. Make Async/await HTTP Request (Windows/Linux) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- * [Make a request with the Axios library](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request-windows-linux) [](https://docs.proxyman.com/scripting/snippet-code#id-10.-url-and-urlsearchparams) 10\. URL and URLSearchParams --------------------------------------------------------------------------------------------------------------------- * [URL and URLSearchParams](https://docs.proxyman.com/scripting/snippet-code#url-and-urlsearchparams) [](https://docs.proxyman.com/scripting/snippet-code#id-11.-access-environment-variables) 11\. Access Environment Variables ------------------------------------------------------------------------------------------------------------------------------- * [Manually read system environment variables](https://docs.proxyman.com/scripting/snippet-code#reload-system-environment-variables) [](https://docs.proxyman.com/scripting/snippet-code#websocket) Websocket ----------------------------------------------------------------------------- * [Change the Websocket URL, Headers](https://docs.proxyman.com/scripting/snippet-code#change-websocket-url-requests-response-header) [](https://docs.proxyman.com/scripting/snippet-code#http-header) HTTP Header --------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#add-update-request-or-response-header) Add/Update: Request or Response Header #### [](https://docs.proxyman.com/scripting/snippet-code#delete-request-or-response-header) Delete: Request or Response Header [](https://docs.proxyman.com/scripting/snippet-code#request-query) Request Query ------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#add-update) Add/Update #### [](https://docs.proxyman.com/scripting/snippet-code#delete) Delete [](https://docs.proxyman.com/scripting/snippet-code#urlencoded-form-body) URLEncoded Form Body --------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#add-update-1) Add/Update #### [](https://docs.proxyman.com/scripting/snippet-code#delete-1) Delete [](https://docs.proxyman.com/scripting/snippet-code#change-request-destination-scheme-host-port-path) Change Request Destination (scheme, host, port, path) ---------------------------------------------------------------------------------------------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#http-to-https) HTTP to HTTPS ------------------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#https-to-http) HTTPS to HTTP ------------------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#change-http-request-method) Change HTTP Request Method --------------------------------------------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#change-response-http-status-code) Change Response HTTP Status Code --------------------------------------------------------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#json-body) JSON Body ----------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#on-request) On Request #### [](https://docs.proxyman.com/scripting/snippet-code#on-response) On Response #### [](https://docs.proxyman.com/scripting/snippet-code#map-a-local-file-to-responses-body-like-map-local-tool-proxyman-2.25.0) Map a local file to Response's Body like Map Local Tool (Proxyman 2.25.0+) It's a convenient way to directly set a local file to a Body by using `bodyFilePath` property #### [](https://docs.proxyman.com/scripting/snippet-code#use-json-file-as-a-body-of-request-or-response) Use JSON File as a Body of Request or Response It's possible to use your JSON file and set it as a Request/Response's body Please follow this [tutorial](https://docs.proxyman.com/scripting/snippet-code#json) . #### [](https://docs.proxyman.com/scripting/snippet-code#use-multiple-json-files) Use multiple JSON files You can use set a different body for each matching endpoint by using the IF statement. 1. Follow this [tutorial](https://docs.proxyman.com/scripting/snippet-code#json) to understand how to import a JSON file to the script 2. Set Script Rule with wildcard or Regex pattern that can match many endpoints. E.g https://my-domain.com/v\* 3. Use \`includes()\` to check whether or not the endpoint is matched #### [](https://docs.proxyman.com/scripting/snippet-code#map-local-with-graphql) Map Local with GraphQL Read more at [https://github.com/ProxymanApp/Proxyman/issues/412#issuecomment-697101594](https://github.com/ProxymanApp/Proxyman/issues/412#issuecomment-697101594) #### [](https://docs.proxyman.com/scripting/snippet-code#use-arraybuffer-in-request-response-body) Use ArrayBuffer in Request/Response Body Since Javascript doesn't have the Data object type, the Data Body will convert to **Base64 Encoded String** in Javascript. To pass **Uint8Array**, **blob**, or **ArrayBuffer** to the body, make sure you convert to **Base64 Encoded String** and set the ContentType to `application/octet-stream` Proxyman will convert Base64 Encoding to ArrayBuffer, so the client will receive the data properly. #### [](https://docs.proxyman.com/scripting/snippet-code#preserve-the-host) Preserve the Host #### [](https://docs.proxyman.com/scripting/snippet-code#comment-and-highlight-with-color) Comment & Highlight with color Use `comment` or `color` to highlight on the main table view. ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MgxJIoiTOTPanlYNYGS%252F-MgxL1JqOH7m5LREXl8i%252FScreen_Shot_2021-08-13_at_09_27_36.png%3Falt%3Dmedia%26token%3Db0fa34f7-4324-4383-a63b-82c6db7f8b8e&width=768&dpr=4&quality=100&sign=ede161c3&sv=2) Use Scripting for Color and Comment [](https://docs.proxyman.com/scripting/snippet-code#import-files-with-require) Import Files with require() --------------------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#json) JSON 1. Prepare a JSON file and save it to your Desktop 2\. More -> Import JSON or Other Files. Then selecting your file ![](https://docs.proxyman.com/~gitbook/image?url=https%3A%2F%2F1856518738-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-legacy-files%2Fo%2Fassets%252F-LlPt_6BePnJ3oK3saP1%252F-MYriPPhhUjbTxhRaJ2S%252F-MYrj03fD9OTiOu_w1VK%252FScreen%2520Shot%25202021-04-22%2520at%252010.59.46.png%3Falt%3Dmedia%26token%3Db3c13a51-e5c9-4794-a67f-8ce3fc0e2aec&width=768&dpr=4&quality=100&sign=4fb28e6e&sv=2) 3\. Proxyman will add the import code to the top of the script The selected file is copied to **~/Library/Application\\ Support/com.proxyman.NSProxy/users** folder. To support other format files, such as image, text, pdf. Make sure you have correct **Header Content-Type** #### [](https://docs.proxyman.com/scripting/snippet-code#binary-file) Binary File 1. Follow the same above instruction (Select your Binary File) 2. Set it as a body #### [](https://docs.proxyman.com/scripting/snippet-code#text-based-file) Text-Based File 1. Follow the same above instruction (Select your Binary File) 2. Set it as a body #### [](https://docs.proxyman.com/scripting/snippet-code#import-file-without-using-the-import-tool) Import File without using the "Import Tool" From Proxyman 2.24.0+, you can import any files without using the "Import File". * If the file has ".js" as an extension => Proxyman will execute it as a JS Script * Otherwise, Proxyman will import it as normal Only files that are imported by using the "Import Tool", are included when exporting the script to your colleague. #### [](https://docs.proxyman.com/scripting/snippet-code#use-as-mock-api) Use as Mock API You can use Scripting as a Mock API by following this [guideline](https://docs.proxyman.io/scripting/script#8-use-scripting-as-a-mock-api) . [](https://docs.proxyman.com/scripting/snippet-code#using-addons) Using Addons ----------------------------------------------------------------------------------- [Full list of built-in addons](https://docs.proxyman.com/scripting/addons) #### [](https://docs.proxyman.com/scripting/snippet-code#use-base64-addon) Use Base64 Addon #### [](https://docs.proxyman.com/scripting/snippet-code#use-hashing-addon-md5-sha1-sha256-sha512) Use Hashing Addon (MD5, SHA1, SHA256, SHA512) #### [](https://docs.proxyman.com/scripting/snippet-code#use-uuid-v4-addon) Use UUID-v4 Addon [](https://docs.proxyman.com/scripting/snippet-code#deflate-inflate-and-gzip-ungzip) Deflate/Inflate and GZip/UnGZip ------------------------------------------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#deflate-inflate) Deflate/inflate #### [](https://docs.proxyman.com/scripting/snippet-code#gzip-ungzip) GZip/UnGZip #### [](https://docs.proxyman.com/scripting/snippet-code#jwt-decode) JWT Decode [](https://docs.proxyman.com/scripting/snippet-code#logging) Logging ------------------------------------------------------------------------- [](https://docs.proxyman.com/scripting/snippet-code#regex) Regex --------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#only-number) Only number #### [](https://docs.proxyman.com/scripting/snippet-code#regex-to-get-the-scheme-host-port-path-and-query-of-the-url) Regex to get the Scheme, Host, Port, Path, and Query of the URL [](https://docs.proxyman.com/scripting/snippet-code#miscellaneous) Miscellaneous ------------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#by-pass-cors) By-pass CORS #### [](https://docs.proxyman.com/scripting/snippet-code#inject-header-to-request-response) Inject Header to Request / Response #### [](https://docs.proxyman.com/scripting/snippet-code#response-delay-with-sleep-function) Response delay with sleep() function the It's useful for simulating the "Slow Network" on a particular Request or Response. You can check out the [Network Conditions tool](https://docs.proxyman.com/advanced-features/network-throttling#1.-whats-it) for GUI. * macOS * Windows/Linux #### [](https://docs.proxyman.com/scripting/snippet-code#aes-encryption-decryption) AES Encryption/Decryption #### [](https://docs.proxyman.com/scripting/snippet-code#des-encryption-decryption) DES Encryption/Decryption #### [](https://docs.proxyman.com/scripting/snippet-code#write-export-to-a-local-file) Write / Export to a local file * Override Mode * Append Mode (Only for Proxyman 3.6.2+) #### [](https://docs.proxyman.com/scripting/snippet-code#check-if-the-first-exist) Check if the first exist * Available: Proxyman macOS 5.4.0+ #### [](https://docs.proxyman.com/scripting/snippet-code#read-a-file) Read a file * If it's text-based -> Return a **String** * Otherwise -> Return **Uint8Array** * Available: Proxyman macOS 5.4.0+ [](https://docs.proxyman.com/scripting/snippet-code#map-remotes) Map Remotes --------------------------------------------------------------------------------- #### [](https://docs.proxyman.com/scripting/snippet-code#map-v1-to-v2-endpoints) Map v1 to v2 endpoints #### [](https://docs.proxyman.com/scripting/snippet-code#map-localhost-to-production) Map localhost to production #### [](https://docs.proxyman.com/scripting/snippet-code#map-production-to-localhost) Map production to localhost [](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request-macos) Make async/await HTTP Request (macOS) ----------------------------------------------------------------------------------------------------------------------------------- This feature \`$http\` is available on the macOS version. To use on Windows, please check the next part. #### [](https://docs.proxyman.com/scripting/snippet-code#get-request-with-query) GET Request with Query #### [](https://docs.proxyman.com/scripting/snippet-code#post-request-with-json-body) POST Request with JSON Body #### [](https://docs.proxyman.com/scripting/snippet-code#post-request-with-application-x-www-form-urlencoded-body) POST Request with application/x-www-form-urlencoded body #### [](https://docs.proxyman.com/scripting/snippet-code#put-patch-delete-request) PUT / PATCH / DELETE Request [](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request-windows-linux) Make async/await HTTP Request (Windows/Linux) --------------------------------------------------------------------------------------------------------------------------------------------------- Windows/Linux ships with a built-in [Axios](https://github.com/axios/axios) library. You can easily make HTTP(s) requests with \`Axios\` syntax. ### [](https://docs.proxyman.com/scripting/snippet-code#abort-the-request-response-like-block-list-tool) Abort the request/response like Block List Tool * Only available for Proxyman 3.11.0 and later #### [](https://docs.proxyman.com/scripting/snippet-code#abort-the-request) Abort the request #### [](https://docs.proxyman.com/scripting/snippet-code#abort-the-response) Abort the response ### [](https://docs.proxyman.com/scripting/snippet-code#url-and-urlsearchparams) URL and URLSearchParams From Proxyman 4.13.0 or later, [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) and [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) are natively supported. ### [](https://docs.proxyman.com/scripting/snippet-code#reload-system-environment-variables) Reload System Environment Variables Proxyman macOS 4.15.0 or later. Make sure we enable the permission first, in the More Button -> Environment Variables -> Allow all scripts to read env. ### [](https://docs.proxyman.com/scripting/snippet-code#change-websocket-url-requests-response-header) Change Websocket URL, Requests/Response Header * Supported from macOS 6.2.0 or later * ❌ Can NOT modify the Websocket Message. Only URL and Headers are supported. **Map from localhost to production** * Rule ws://proxyman.debug:3000 **Production to localhost** * Rule wss://echo.websocket.org [PreviousWrite your own Addons](https://docs.proxyman.com/scripting/write-your-own-addons) [NextEnvironment Variables](https://docs.proxyman.com/scripting/environment-variables) Last updated 1 month ago * [1\. What's it?](https://docs.proxyman.com/scripting/snippet-code#id-1.-whats-it) * [2\. Common on Request and Response](https://docs.proxyman.com/scripting/snippet-code#id-2.-common-on-request-and-response) * [3\. Addons](https://docs.proxyman.com/scripting/snippet-code#id-3.-addons) * [4\. Regex](https://docs.proxyman.com/scripting/snippet-code#id-4.-regex) * [5\. Import / Export Files](https://docs.proxyman.com/scripting/snippet-code#id-5.-import-export-files) * [6\. Miscellaneous](https://docs.proxyman.com/scripting/snippet-code#id-6.-miscellaneous) * [7\. Encryption/Decryption](https://docs.proxyman.com/scripting/snippet-code#id-7.-encryption-decryption) * [8\. Map Remote with Scripting](https://docs.proxyman.com/scripting/snippet-code#id-8.-map-remote-with-scripting) * [9\. Make Async/await HTTP Request (macOS)](https://docs.proxyman.com/scripting/snippet-code#id-9.-make-async-await-http-request-macos) * [9.1. Make Async/await HTTP Request (Windows/Linux)](https://docs.proxyman.com/scripting/snippet-code#id-9.1.-make-async-await-http-request-windows-linux) * [10\. URL and URLSearchParams](https://docs.proxyman.com/scripting/snippet-code#id-10.-url-and-urlsearchparams) * [11\. Access Environment Variables](https://docs.proxyman.com/scripting/snippet-code#id-11.-access-environment-variables) * [Websocket](https://docs.proxyman.com/scripting/snippet-code#websocket) * [HTTP Header](https://docs.proxyman.com/scripting/snippet-code#http-header) * [Request Query](https://docs.proxyman.com/scripting/snippet-code#request-query) * [URLEncoded Form Body](https://docs.proxyman.com/scripting/snippet-code#urlencoded-form-body) * [Change Request Destination (scheme, host, port, path)](https://docs.proxyman.com/scripting/snippet-code#change-request-destination-scheme-host-port-path) * [HTTP to HTTPS](https://docs.proxyman.com/scripting/snippet-code#http-to-https) * [HTTPS to HTTP](https://docs.proxyman.com/scripting/snippet-code#https-to-http) * [Change HTTP Request Method](https://docs.proxyman.com/scripting/snippet-code#change-http-request-method) * [Change Response HTTP Status Code](https://docs.proxyman.com/scripting/snippet-code#change-response-http-status-code) * [JSON Body](https://docs.proxyman.com/scripting/snippet-code#json-body) * [Import Files with require()](https://docs.proxyman.com/scripting/snippet-code#import-files-with-require) * [Using Addons](https://docs.proxyman.com/scripting/snippet-code#using-addons) * [Deflate/Inflate and GZip/UnGZip](https://docs.proxyman.com/scripting/snippet-code#deflate-inflate-and-gzip-ungzip) * [Logging](https://docs.proxyman.com/scripting/snippet-code#logging) * [Regex](https://docs.proxyman.com/scripting/snippet-code#regex) * [Miscellaneous](https://docs.proxyman.com/scripting/snippet-code#miscellaneous) * [Map Remotes](https://docs.proxyman.com/scripting/snippet-code#map-remotes) * [Make async/await HTTP Request (macOS)](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request-macos) * [Make async/await HTTP Request (Windows/Linux)](https://docs.proxyman.com/scripting/snippet-code#make-async-await-http-request-windows-linux) * [Abort the request/response like Block List Tool](https://docs.proxyman.com/scripting/snippet-code#abort-the-request-response-like-block-list-tool) * [URL and URLSearchParams](https://docs.proxyman.com/scripting/snippet-code#url-and-urlsearchparams) * [Reload System Environment Variables](https://docs.proxyman.com/scripting/snippet-code#reload-system-environment-variables) * [Change Websocket URL, Requests/Response Header](https://docs.proxyman.com/scripting/snippet-code#change-websocket-url-requests-response-header) Copy function onRequest(context, url, request) { // Add or update Request Header request.headers["X-Proxyman-Key"] = "My-Value"; request.headers.name = "Proxyman"; return request; } function onResponse(context, url, request, response) { // Add or update Response Header response.headers["X-Proxyman-Key"] = "My-Value"; response.headers.id = 100; return response; } Copy function onRequest(context, url, request) { delete request.headers["X-Proxyman-Key"]; return request; } function onResponse(context, url, request, response) { delete response.headers["X-Proxyman-Key"]; return response; } Copy function onRequest(context, url, request) { request.queries["name"] = "Proxyman"; request.queries["platform"] = "macOS"; // => http://proxyman.io?name=Proxyman&platform=macOS return request; } Copy function onRequest(context, url, request) { delete request.queries["name"]; delete request.queries["platform"]; return request; } Copy function onRequest(context, url, request) { // Make sure the Response Header is application/x-www-form-urlencoded // Content-Type: application/x-www-form-urlencoded var formBody = request.body; formBody["name"] = "Proxyman"; formBody["flatform"] = "macOS"; request.body = formBody; // => name=Proxyman&platform=macOS return request; } Copy function onRequest(context, url, request) { // Content-Type: application/x-www-form-urlencoded var formBody = request.body; delete formBody["name"]; delete formBody["flatform"]; request.body = formBody; return request; } Copy function onRequest(context, url, request) { request.scheme = "http"; request.host = "proxyman.dev"; request.port = 9090; request.path = "v1/data/user"; return request; } Copy function onRequest(context, url, request) { request.scheme = "http"; request.port = 80; // Don't forget to override the port return request; } Copy function onRequest(context, url, request) { request.scheme = "https"; request.port = 443; // Don't forget to override the port return request; } Copy function onRequest(context, url, request) { request.method = "POST"; return request; } Copy function onResponse(context, url, request, response) { response.statusCode = 404; return response; } Copy function onRequest(context, url, request) { // Set JSON content request.headers["Content-Type"] = "application/json"; // Get Request body var jsonBody = request.body; // Modify data jsonBody["name"] = "Proxyman"; jsonBody["flatform"] = "macOS"; jsonBody["info"] = { "website": "proxyman.io", "region": "Earth" }; // Set it again request.body = jsonBody; return request; } Copy function onResponse(context, url, request, response) { // Set JSON content response.headers["Content-Type"] = "application/json"; // Get Request body var jsonBody = response.body; // Modify data jsonBody["name"] = "Proxyman"; jsonBody["flatform"] = "macOS"; jsonBody["info"] = { "website": "proxyman.io", "region": "Earth" }; // Set it again response.body = jsonBody; return response; } Copy // For request request.bodyFilePath = "~/Desktop/image.png"; // For response response.bodyFilePath = "~/Desktop/image.png"; Copy function onResponse(context, url, request, response) { response.headers["Content-Type"] = "image/png"; response.bodyFilePath = "~/Desktop/image.png"; // Done return response; } Copy function onResponse(context, url, request, response) { response.headers["Content-Type"] = "application/json"; response.bodyFilePath = "~/Desktop/my_response.json"; // Done return response; } Copy const file_1 = require("@users/myfile_1.json"); const file_2 = require("@users/myfile_2.json"); const file_3 = require("@users/myfile_3.json"); function onResponse(context, url, request, response) { // Set JSON content response.headers["Content-Type"] = "application/json"; // Check if (url.includes("v1/data")) { response.body = file_1 } else if (url.includes("v2/login")) { response.body = file_2 } else if (url.includes("v3/user")) { response.body = file_3 } // Done return response; } Copy // Import your JSON file here const file = require("@users/B02D96D5.default_message_32E64A5B.json"); function onRequest(context, url, request) { // 1. Extract the queryName from the request var queryName = request.body.query.match(/\S+/gi)[1].split('(').shift(); // 2. Save to sharedState sharedState.queryName = queryName // Done return request; } function onResponse(context, url, request, response) { // 3. Check if it's the request we need to map if (sharedState.queryName == "user") { // 4. Import the local file by Action Button -> Import // Get the local JSON file and set it as a body (like Map Local) response.headers["Content-Type"] = "application/json"; response.body = file; } // Done return response; } Copy // Import const { btoa } = require('@addons/Base64.js'); function onResponse(context, url, request, response) { // Construct the ArrayBuffer const buffer = new ArrayBuffer(256) const view = new Uint8Array(buffer) for (let i = 0; i < view.length; i++) { view[i] = i } // Convert ArrayBuffer to Base64String var newBody = btoa(String.fromCharCode.apply(null, new Uint8Array(buffer))); // Set new body response.body = newBody; response.statusCode = 200 response.headers['Content-Type'] = 'application/octet-stream' // Done return response; } Copy function onRequest(context, url, request) { request.preserveHostHeader = true return request } Copy function onRequest(context, url, request) { request.comment = "It's a Request" request.color = "red" // red, blue, yellow, purple, gray, green return request } function onResponse(context, url, request, response) { response.comment = "It's a Response" response.color = "yellow" // red, blue, yellow, purple, gray, green return response } Copy // myfile.json { "name": "Proxyman", "platform": "macOS", "info": { "website": "proxyman.io", "region": "Earth" } } Copy // ~/Library/Application Support/com.proxyman.NSProxy/users/myfile.json const file = require("@users/myfile.json"); function onResponse(context, url, request, response) { // 1. Set header to JSON if need response.headers["Content-Type"] = "application/json"; // 2. Set Body as a imported file response.body = file; return response; } Copy // ~/Library/Application Support/com.proxyman.NSProxy/users/myscreenshot.png const file = require("@users/myscreenshot.png"); function onResponse(context, url, request, response) { // Set header response.headers["Content-Type"] = "image/png"; // Set Body response.body = file; return response; } Copy // ~/Library/Application Support/com.proxyman.NSProxy/users/main.css const file = require("@users/main.css"); function onResponse(context, url, request, response) { // Set header response.headers["Content-Type"] = "text/css"; // Set Body response.body = file; return response; } Copy // Import your file from your Desktop folder const file = require("~/Desktop/myfile.json"); function onResponse(context, url, request, response) { // 1. Set header to JSON if need response.headers["Content-Type"] = "application/json"; // 2. Set Body as a imported file response.body = file; return response; } Copy // Encode Base64 const { btoa } = require("@addons/Base64.js") // Usage: var text = "HelloWorld"; var encodedText = btoa(text); Copy // Decode Base64 const { atob } = require("@addons/Base64.js") // Usage: var text = atob("aGVsbG8="); Copy // Hash MD5 const { md5 } = require("@addons/MD5.js") // Usage: var hashedText = md5("Hello World"); Copy // Hash SHA1 const { sha1 } = require("@addons/SHA1.js") // Usage: var hashedText = sha1("Hello World"); Copy // Hash MD5 const { uuidv4 } = require("@addons/UUID.js") // Usage: var uuid = uuidv4(); Copy const { inflate, deflate } = require("@addons/Pako.js") // Compress var input = "Hello World from Pako!!!" var result = deflate(input); console.log(result); // eJzzSM3JyVcIzy/KSVFIK8rPVQhIzM5XVFQEAGsMB/8= // Decompress var text = 'eJzzSM3JyVcIzy/KSVFIK8rPVQhIzM5XVFQEAGsMB/8='; var rawText = inflate(text); console.log(rawText); // Hello World from Pako!!! Copy const { ungzip, gzip } = require("@addons/Pako.js") // Compress var text = 'HelloWorld'; var result = gzip(text); console.log(result); // H4sIAAAAAAAAA/NIzcnJD88vykkBAHkMd3cKAAAA // Decompress var text = 'H4sIAAAAAAAAA/NIzcnJD88vykkBAHkMd3cKAAAA'; var rawText = ungzip(text); console.log(rawText); // HelloWorld Copy const { jwtDecode } = require('@addons/JWTDecode.js'); var text = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; var jSONObject = jwtDecode(text) Copy // Print the obj const myObj = {}; console.log(myObj); // Print type of the obj console.log(typeof(myObj)); Copy //Init Regex var reg = /^-?\d*\.?\d*$/; if (reg.test("123123123")) { console.log("Matched"); } Copy function onRequest(context, url, request) { console.log(url); // Get each part const regex = /^(https?):\/\/([^:\/\n]+)(?::(\d+))?([^#\n?]+)(?:\?([^#\n]+))?/; const [, scheme, host, port, path, query] = url.match(regex); // Assign again request.scheme = scheme; request.host = host; if (port !== undefined) { request.port = parseInt(port); } request.path = path; // Log console.log("----------"); console.log(scheme); console.log(host); console.log(port); console.log(path); // Done return request; } Copy function onResponse(context, url, request, response) { // Allow all response.headers["Access-Control-Allow-Origin"] = "*"; response.headers["Access-Control-Allow-Headers"] = "*"; response.headers["Access-Control-Allow-Methods"] = "*"; // Done return response; } Copy function onRequest(context, url, request) { // add header request.headers["My-Injected-Header"] = "Proxyman"; return request } function onResponse(context, url, request, response) { // add header response.headers["My-Injected-Header"] = "Proxyman"; return response; } Copy function onResponse(context, url, request, response) { console.log("Start sleep"); // Sleep 5 seconds sleep(5000); // Done return response; } Copy async function onResponse(context, url, request, response) { console.log("Start sleep"); // Sleep 5 seconds // Must use `await` keyword on Windows/Linux await sleep(5000); // Done return response; } Copy const { encryptAES, decryptAES } = require("@addons/CryptoJS.js") function onRequest(context, url, request) { // Encrypt var message = 'my message from Proxyman'; var password = 'secret key 123'; var ciphertext = encryptAES(message, password); // Decrypt var originalText = decryptAES(ciphertext, password); // Done return request; } Copy const { encryptDES, decryptDES } = require("@addons/CryptoJS.js") function onRequest(context, url, request) { // Encrypt var message = 'my message from Proxyman'; var password = 'secret key 123'; var ciphertext = encryptDES(message, password); // Decrypt var originalText = decryptDES(ciphertext, password); // Done return request; } Copy function onResponse(context, url, request, response) { // Write to single file writeToFile(response.body, "~/Desktop/body.json"); // Write the Body to file with flow ID writeToFile(response.body, "~/Desktop/sample-" + context.flow.id); // Done return response; } Copy async function onResponse(context, url, request, response) { // Append to the existed file // Or create a new file if it doesn't exist var opt = {appendFile: true} writeToFile(response.body, "~/Desktop/body.json", opt); // Done return response; } Copy async function onRequest(context, url, request) { const filePath = "~/Desktop/myfile.json" // check if the file exists if (isFileExists(filePath)) { console.log("File exists"); } else { console.log("File NOT exists"); } // Done return request; } Copy async function onRequest(context, url, request) { // console.log(request); const textFilePath = "~/Desktop/myfile.json"; // check exist if (isFileExists(filePath)) { // read from file const text = readFromFile(textFilePath); // pares string to JSON Object const obj = JSON.parse(text); } // Read binary file const binaryFilePath = "~/Desktop/screenshot.png"; const binaryFile = readFromFile(binaryFilePath); // Uint8Array // Done return request; } Copy function onRequest(context, url, request) { // Replace v1 to v2 in URL Path var newPath = request.path.replace("v1", "v2"); request.path = newPath // Done return request; } Copy function onRequest(context, url, request) { // Use production URL request.scheme = "https"; request.host = "proxyman.io"; request.port = 443; // Done return request; } Copy function onRequest(context, url, request) { // Use production URL request.scheme = "http"; request.host = "localhost"; request.port = 3000; // Done return request; } Copy async function onResponse(context, url, request, response) { // GET Request with Query var url = "https://httpbin.proxyman.app/get?id=proxyman&country=united%20states"; var output = await $http.get(url); // Get Status Code console.log(output.statusCode); // Get body console.log(output.body) // Get header console.log(output.headers) // Done return response; } Copy async function onResponse(context, url, request, response) { // Define JSON Body and Header // Make sure "Content-Type" is "application/json" var param = { body: { "user": { "name": "Proxyman" } }, headers: { "Content-Type": "application/json" } } // POST request with await var output = await $http.post("https://httpbin.proxyman.app/post", param); // Get Status Code console.log(output.statusCode); // Get body console.log(output.body) // Get header console.log(output.headers) // Done return response; } Copy async function onResponse(context, url, request, response) { // Define form Body and Header // Make sure "Content-Type" is "application/x-www-form-urlencoded" var param = { body: { "key1": "value1", "key2": "value2" }, headers: { "Content-Type": "application/x-www-form-urlencoded" } } // POST request with await var output = await $http.post("https://httpbin.proxyman.app/post", param); // Get Status Code console.log(output.statusCode); // Get body console.log(output.body) // Get header console.log(output.headers) // Done return response; } Copy async function onRequest(context, url, request) { var param = { body: { "user": { "name": "Proxyman" } }, headers: { "Content-Type": "application/json" } var output = await $http.post("https://httpbin.proxyman.app/post", param); var output = await $http.put("https://httpbin.proxyman.app/put", param); var output = await $http.delete("https://httpbin.proxyman.app/delete", param); // Done return request; } Copy async function getUser() { try { const response = await axios.get('https://httpbin.proxyman.app/user?ID=12345'); console.log(response); } catch (error) { console.error(error); } } Copy function onRequest(context, url, request) { // drop the connection abort(); } Copy function onRequest(context, url, request) { // Use the if to abort on certain conditions if (true) { abort(); return; // Must return a void to stop the func } // Done return request; } Copy function onResponse(context, url, request, response) { // drop the connection abort(); } Copy function onRequest(context, url, request) { // URL const urlObj = new URL("https://proxyman.io/api/v1/user?id=123"); console.log(urlObj.hostname); console.log(urlObj.search); console.log(urlObj.searchParams); // URLSearchParmas const params1 = new URLSearchParams("foo=1&bar=2"); // Done return request; } Copy async function onRequest(context, url, request) { // manually reload to get the latest changes _reloadEnv(); // get env console.log($PROXYMAN_ID) // Done return request; } Copy async function onRequest(context, url, request) { // console.log(request); console.log(url); request.scheme = "wss"; request.host = "wss.httpbin-proxyman.xyz" request.port = 443 // Done return request; } Copy async function onRequest(context, url, request) { // console.log(request); console.log(url); request.scheme = "ws"; request.host = "proxyman.debug" request.port = 3000 // Done return request; } ---