ShadowFire
A Free Fire-optimized MITM proxy, forked from mitmproxy. ShadowFire combines a full-featured HTTPS interception proxy with a dedicated Free Fire bypass pipeline.
Features
Core Proxy (forked from mitmproxy)
- Interactive console UI, headless dump mode, and web UI
- HTTP/1, HTTP/2, HTTP/3, and WebSocket interception
- TLS interception with dynamic certificate generation
- TCP, UDP, and DNS proxy modes
- Scriptable via Python addons
- Full mitmproxy addon ecosystem compatibility
Free Fire Bypass Addon
- Login interception — hooks into Free Fire API domains (
loginbp.ggblueshark.com,prod-api.reward.ff.garena.com, etc.) - UID blocking — inspect raw TCP streams and block connections by UID
- Fingerprint masking — strips proxy-detection headers (
Via,X-Forwarded-For, etc.) and rewrites User-Agent - JWT forwarding — integrates with the access_jwt token mutation service
- Runtime commands —
ff.block_uid,ff.unblock_uid,ff.list_blocked
Backend Pipeline
- Raw TCP forwarder on
:9999— bidirectional byte-level proxy with game-layer AES decrypt - JWT mutation service on
:1080— template-based protobuf payload rewriting - Admin HTTP API on
:5000— UID management, stats, health checks - UID sync loop — pulls blocklists from remote API every 120s
Architecture
Emulator → Raw Forwarder (:9999) → ShadowFire Proxy (:8080) → Game Servers
↕
access_jwt Service (:1080)
(JWT mutation)
Quick Start
# Install
pip install shadowfire
# Start the proxy
shadowfire
# Start the web UI
shadowfire web
# Start headless dump mode
shadowfire dump
Free Fire Pipeline
# Terminal 1: Start the backend services
cd new/python
pip install -r requirements.txt
python main.py
# Terminal 2: Start ShadowFire with the bypass addon
shadowfire -s shadowfire/addons/firebypass.py --set ff_bypass=true
Configure your emulator to use the proxy at the host machine's LAN IP on port 8080, and the raw forwarder on port 9999.
Configuration
ShadowFire reads ~/.shadowfire/config.yaml on startup. Key options:
| Option | Default | Description |
|---|---|---|
listen_port |
8080 | Proxy listen port |
mode |
regular | Proxy mode (regular, transparent, socks5, reverse, upstream) |
ssl_insecure |
false | Disable upstream TLS verification |
ff_bypass |
true | Enable Free Fire bypass addon |
ff_blocked_uids |
[] | UIDs to block |
ff_access_jwt_url |
http://127.0.0.1:1080 | JWT mutation service URL |
ff_mask_fingerprint |
true | Strip proxy fingerprints |
Building
PyInstaller (standalone binary)
pyinstaller release/specs/standalone.spec --clean
# Output: release/dist/shadowfire.exe
MSIX Installer (Windows Store)
pyinstaller release/specs/onedir.spec --clean
python release/build.py msix-installer
InstallBuilder Installer (Windows)
pyinstaller release/specs/onedir.spec --clean
python release/build.py installbuilder-installer
Docker
docker build -t shadowfire release/docker/
docker run -p 8080:8080 -p 8081:8081 shadowfire
Development
# Install with uv
uv sync
# Run tests
uv run pytest
# Run linter
uv run ruff check shadowfire/
# Type check
uv run mypy shadowfire/
Project Structure
shadowfire/ # Main proxy package
├── addons/ # Addon modules
│ ├── firebypass.py # Free Fire bypass addon
│ └── onboardingapp/ # Certificate installation portal
├── proxy/ # Proxy core
├── tools/ # CLI entry points
│ ├── main.py # shadowfire_cli dispatcher
│ ├── console/ # Console UI (curses)
│ ├── dump/ # Headless dump mode
│ └── web/ # Web UI (React SPA)
├── net/ # Network protocols
├── io/ # I/O and serialization
├── contentviews/ # Content decoders
└── utils/ # Utilities
web/ # React/TypeScript web UI frontend
release/ # Build & installer configs
new/python/ # Free Fire backend pipeline
├── main.py # Orchestrator (forwarder, API, UID sync)
└── access_jwt/ # JWT mutation service
License
MIT — see LICENSE.
Credits
ShadowFire is a fork of mitmproxy. The original project is maintained by the mitmproxy contributors and licensed under the MIT license.
Metadata
Release files for shadowfire 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shadowfire-1.0.0.tar.gz | 396.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shadowfire-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 885.2 kB
Release files / shadowfire-1.0.0.tar.gz
| Download URL | shadowfire-1.0.0.tar.gz |
|---|---|
| Size | 396.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e3ed88505e2cdd9e6afe882d34543d6e6a1794819a787b912249db09b44b53a6
|
|
BLAKE2b-256 checksum How to use checksums |
cbb6120636f1024d9019d426e7fc183952d55fa50418b67b9d14b519db01377a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / shadowfire-1.0.0-py3-none-any.whl
| Download URL | shadowfire-1.0.0-py3-none-any.whl |
|---|---|
| Size | 488.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
883efe3e6726a94d5e1c3a2236b8bd2d9d4d99e5abb222fb0a1a949b6b741a9c
|
|
BLAKE2b-256 checksum How to use checksums |
b6109024995800019599da24d79be5999943d6218d6c5730ae77280fab7c9c15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|