Rotate your IP on demand using Tor. Each named instance runs its own independent Tor process + HTTP bridge on isolated ports, so you can have different terminals using different egress IPs simultaneously.
Terminal A --proxyon term-a--> HTTP :8081 --> Tor A --> IP 96.x.x.x
Terminal B --proxyon term-b--> HTTP :8082 --> Tor B --> IP 45.x.x.x
Terminal C --proxyon term-c--> HTTP :8083 --> Tor C --> IP 185.x.x.x
Each instance is a completely independent Tor daemon -- separate process, separate circuit, separate exit IP. Rotating one has zero effect on others.
# Start instances (each gets its own ports + IP)
proxyman start term-a
proxyman start term-b
# Set a terminal to use a specific instance
proxyon term-a
curl ifconfig.me # Shows term-a's Tor IP
# Another terminal, different instance
proxyon term-b # Different IP
# Rotate one instance independently
proxyman rotate term-a # Only term-a's IP changes
# Check all running instances
proxyman list
# Check a specific instance
proxyman status term-a
# Run one command through an instance
proxyman exec term-b curl ifconfig.me
# Open a subshell through an instance
proxyman shell term-c
# Stop specific instances
proxyman stop term-b
proxyman stop --all # Stop everythingAdd to ~/.bashrc:
proxyman() {
python /d/Programming/proxy-tool/proxyman.py "$@"
}
proxyon() {
local name="${1:-default}"
eval "$(proxyman on "$name")"
echo "OK Tor [$name] -- HTTP_PROXY set to $HTTP_PROXY"
}
proxyoff() {
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
echo "OK Proxy disabled -- back to direct connection"
}Or source the wrapper:
source /d/Programming/proxy-tool/proxyman.bashRun once:
.\setup.ps1Then open a new PowerShell window and use the same commands.
| Command | Description |
|---|---|
proxyman list |
List all instances |
proxyman start [name] |
Start an instance (default: "default") |
proxyman start <name> --http PORT |
Start with explicit HTTP port |
proxyman status [name] |
Show instance status & Tor IP |
proxyman stop <name> |
Stop a specific instance |
proxyman stop --all |
Stop all instances |
proxyman rotate [name] |
Force new circuit (new IP) |
proxyman on [name] |
Get export commands for bash |
proxyman on [name] --powershell |
Get export commands for PowerShell |
proxyman exec [name] <cmd> |
Run a command through the instance |
proxyman shell [name] |
Open subshell through the instance |
proxyon [name] |
Shortcut: set HTTP_PROXY for instance |
proxyoff |
Unset HTTP_PROXY |
For simple single-instance use:
proxyman start # Starts "default" instance
proxyon # Same as proxyon default
curl ifconfig.me # Shows Tor IP
proxyman rotate # New IP
proxyoff # Back to normal# -- Terminal A --
proxyman start term-a
proxyon term-a
python my_script.py # API calls exit from Tor IP A
# -- Terminal B --
proxyman start term-b
proxyon term-b
python another_script.py # API calls exit from Tor IP B
# Rotate only Terminal A
proxyman rotate term-a # Terminal B unaffectedEach instance has three ports:
- HTTP (8080, 8081, ...): set HTTP_PROXY to this
- SOCKS5 (9050, 9051, ...): Tor's native SOCKS proxy
- Control (9500, 9501, ...): for sending NEWNYM rotation signals
Ports are auto-assigned when you start an instance. Use proxyman list
to see what's running.
- Python 3.7+ with
pysocks(pip install pysocks) - Tor Expert Bundle at
tor/tor/tor.exe- Download: https://www.torproject.org/download/tor/
- Extract into
D:\Programming\proxy-tool\tor\
- Windows (git-bash or PowerShell)
D:\Programming\proxy-tool\
proxyman.py # Main CLI tool
proxyman.bash # Bash wrapper
setup.ps1 # PowerShell installer
README.md # This file
tor/tor/tor.exe # Tor binary
.proxyman/
instances/
default/ # Default instance state
term-a/ # Named instance state
term-b/