Proxyman
HomepageDownload
  • Overview
  • Changelog
  • License
  • License Manager
  • Raycast
  • Command-line
  • Security Compliance
  • Proxyman iOS
    • Proxyman for iOS
    • Map Local for iOS
    • Breakpoint for iOS
    • Tutorial for iOS
      • Map Local for iOS Tutorial
      • Breakpoint for iOS Tutorial
  • Debug on Devices
    • macOS
    • iOS Device
    • iOS Simulator
    • tvOS & watchOS
    • Android Device & Emulator
      • Automatic Script for Android Emulator
      • Sample Android Project
    • Firefox
    • Java VMs
    • Python
    • Ruby
    • NodeJS
    • Rust
    • Golang
    • React Native
    • Flutter
    • HTTP Clients
    • Docker
    • ElectronJS
    • NextJS (fetch)
  • Automatic Setup
    • Automatic Setup
    • Manual Setup
    • Troubleshooting
  • Atlantis
    • Atlantis for iOS
  • BASIC FEATURES
    • Proxyman Proxy Helper Tool
    • Request / Response Previewer
    • SSL Proxying
    • Bypass Proxy List
    • Import / Export
    • Content Filter
    • Multiple Tabs
    • Horizontal/Vertical/Window Layout
    • Copy as
    • Custom Previewer Tab
    • Custom Header Column
    • Regex (Regular Expression)
    • Filter JSON Response
    • Highlight by Color and Add Comment
    • Import / Export Settings
    • Multipart Form-Data Previewer
    • JSONPath
    • Customize Toolbar
    • Localization
    • Quick Preview
  • ADVANCED FEATURES
    • Repeat
    • Edit & Repeat
    • Compose new Request
    • No Caching
    • Breakpoint
    • Breakpoint Templates
    • Map Local (File)
    • Map Local (Directory)
    • Map Remote
    • External Proxy
    • Save Session
    • Protobuf
    • WebSocket
    • Clear Session
    • Block List
    • Allow List
    • Charles Proxy Converter
    • Custom Certificates
    • GraphQL
    • Network Conditions
    • Multiple Filters
    • Custom Filters
    • Publish to Gist
    • Reverse Proxy
    • Code Generator
    • Diff
    • Access Control
    • DNS Spoofing
    • SOCKS Proxy
    • Swagger OpenAPI
    • TLS Key Logging
  • Proxyman Windows
    • Install Certificate
    • WSL
  • Scripting
    • Scripting
    • async/await Request
    • Addons
    • Built-in JS Libraries
    • Write your own Addons
    • Snippet Code
    • Environment Variables
  • Troubleshooting
    • Proxyman does not work with VPN apps
    • My Remote Devices (iOS/Android) could not connect to Proxyman?
    • iOS 16 and iOS 17 issues
    • SSL Error from HTTPS Request/Response
    • I could not see any requests from my localhost server
    • I could not see any HTTP traffic from my NodeJS, Python, or Ruby scripts
    • *.local requests do not appear on Proxyman
    • I couldn't see any traffics on Proxyman
    • I couldn't see any requests from 3rd-party network libraries
    • [Breakpoint] Modify Request/Response by Raw Message
    • Could not change Proxyman App Icons
    • Lost data after updating Proxyman app?
    • Proxyman consumes too much RAM & unresponsive
Powered by GitBook
On this page
  • 1. Problems
  • 2. Solution: Automatic Setup
  • Benefit:
  • How to use:
  • Notes:
  • Support Libraries:
  • 3. Advanced: How does it work?
  • 4. Troubleshooting
  1. Automatic Setup

Automatic Setup

1-click to capture HTTP/HTPS traffic from NodeJS, Ruby and Python

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 ❌

2. Solution: Automatic Setup

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

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 ✅

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.

ElectronJS

  1. Open the Automatic Terminal

  2. Use this command line:

open ~/Applications/your_electron_app.app

Support Libraries:

Proxyman (with Automatic Setup) can work out of the box with the following network libraries.

  • 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.

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:

set -a && source "$HOME/.proxyman/proxyman_env_automatic_setup.sh" && set +a
  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.

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

4. Troubleshooting

PreviousNextJS (fetch)NextManual Setup

Last updated 2 months ago

NodeJS: , (v18+), , , , and

Ruby: , , , , and , fastlane

Python: , , http.client, urllib3 and httpx

Monkey-patching the node with a package, which supports HTTP Proxy for axios, and fetch out of the box

See the page

axios
fetch
node-fetch
got
https
superagent
http
net/http
net/https
httparty
faraday
request
aiohttp
global-agent
Troubleshooting
Start the pre-configured Terminal app
New Terminal app is launched