Universal HLS/M3U8 Proxy & Stream Extractor A powerful, lightweight proxy server designed to handle HLS, M3U8, and DASH (MPD) streams. It includes specialized extractors for popular streaming services, DRM support, and an integrated DVR system.
- π Universal Proxy: Seamlessly handles HLS, M3U8, MPD (DASH), and static video files.
- π DRM Support: ClearKey decryption via legacy mode.
- π Specialized Extractors: Native support for Vavoo, DaddyliveHD, Sportsonline, VixSrc, DoodStream, EmbedSports, and more.
- πΌ Integrated DVR: Record live streams while watching or schedule background recordings.
- π οΈ Playlist Builder: Web interface to combine, manage, and proxy entire M3U playlists.
- βοΈ Cloud Ready: Optimized for HuggingFace, Render, Koyeb, and other free-tier platforms.
On Windows nothing needs to be installed (no Python, no Docker, no external tools):
- Download
EasyProxy-windows-amd64.zipfrom the Releases section. - Extract the ZIP into a folder of your choice.
- Launch
EasyProxy.exe. - Open the dashboard in your browser at
http://localhost:7860.
All required components are preconfigured and bundled: Wireproxy (WARP/WireGuard), Tor (Snowflake) and FlareSolverr (portable Chromium with automatic Turnstile solving).
π Built-in auto-update:
EasyProxy.exeupdates itself with one click from the Web control panel (/admin) as soon as a new version is released on GitHub, or from a terminal withEasyProxy.exe --update.
The Docker image includes EasyProxy plus integrated CF Turnstile Solver for maximum compatibility.
To run the container and persist config/recordings on your host machine, mount the /data directory:
docker run -d -p 7860:7860 -v ./data:/data --name EasyProxy ghcr.io/realbestia1/easyproxy:latestEasyProxy plus solvers is fully supported on Android via Termux + Ubuntu proot.
The setup supports proot-distro 5 and earlier releases, and installs Python dependencies in an isolated virtual environment at /root/EasyProxy/.venv.
For Termux, full functionality requires a 64-bit Android device. On 32-bit devices, some components and solvers may not work.
The setup also installs wireproxy (arm64/armv7) and the pinned WARP registration
script inside the Ubuntu guest, so Cloudflare WARP and the NordVPN/custom WireGuard
SOCKS5 tunnels work on Termux too. The first start registers WARP once and saves the
profile in /data/warp.conf; enable_warp in the Admin Panel only controls routing.
- Install Termux from F-Droid (do NOT use Play Store version).
- Run the One-Shot Setup:
curl -fsSL --retry 3 "https://raw.githubusercontent.com/realbestia1/EasyProxy/main/termux_setup.sh?$(date +%s)" | bash
- Prevent Termux from Sleeping:
- Wake Lock: Swipe down your notification bar and click "Acquire wake-lock" on the Termux notification.
- Battery Optimization: Go to your Phone Settings -> Apps -> Termux -> Battery -> Set to "Unrestricted".
- Commands:
easyproxy: Start the full stack.easyproxy-update: Update code and dependencies.easyproxy-stop: Stop all services.easyproxy-logs: Follow the EasyProxy application log (Ctrl+Cexits without stopping EasyProxy).easyproxy-logs --termux: Follow the Termux/screen log.easyproxy-logs --attach: Attach to the running screen session (Ctrl+A, thenDto detach).easyproxy-logs --help: Show all logging options.
If easyproxy-update reports CANNOT LINK EXECUTABLE "curl", repair the
partially upgraded Termux packages first, then retry the update:
apt update && apt full-upgrade -y
easyproxy-updateAccess the dashboard at http://localhost:7860
| Method | Description |
|---|---|
| Windows Standalone | Portable, self-contained executable (EasyProxy.exe) with Tor, WARP and FlareSolverr bundled. No prerequisites. |
| Docker | Standard docker build . uses the single Dockerfile with solvers included. |
| Docker Compose | Run the complete stack (Proxy + Solvers) with docker-compose up -d. |
| HuggingFace | Use Dockerfile-hf for seamless deployment on HF Spaces. |
| Termux | Support for Android via Python. |
Most configuration settings (including Cloudflare WARP, DVR, and Proxy settings) are now managed directly from the Admin Panel at http://localhost:7860/admin.
Only basic environment variables need to be set in your .env file or container settings:
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 7860 |
API_PASSWORD |
Password to protect the proxy API and the API-facing pages (builder, URL generator, recordings) | ep |
ADMIN_PASSWORD |
Password for the admin panel and /api/admin/*. When set, it overrides API_PASSWORD for admin access |
API_PASSWORD |
The Docker image includes a pinned WARP registration script and wireproxy, providing a
userspace WireGuard SOCKS5 relay. The generated profile is saved in /data/warp.conf
and reused on subsequent starts.
It requires no NET_ADMIN, privileged mode, /dev/net/tun, kernel module, or
sysctl.
You can enable and configure WARP, customize the excluded domains list, and enter your license key directly from the Admin Panel.
EasyProxy supports multiple local SOCKS5 proxies running in parallel alongside Cloudflare WARP (127.0.0.1:1080). Each service runs its own isolated process, port, and log stream. Bind addresses can be customized directly in the panel.
| Panel | Profile Source | Default Endpoint |
|---|---|---|
/admin/nordvpn |
NordLynx profile generated via NordVPN access token | socks5h://127.0.0.1:1081 |
/admin/wireguard |
Custom pasted WireGuard configuration | socks5h://127.0.0.1:1082 |
/admin/torproxy |
Tor client managed by EasyProxy | socks5h://127.0.0.1:9050 |
- On-Demand: Pre-installed; starts only when activated from
/admin/torproxy. - Static Circuits: Automatic rotation is suppressed up to Tor's 30-day limit. Click Request new IP for a manual
NEWNYM. - Geo-Pinning: Live country lists are fetched via Onionoo. Selecting an exit country pins the circuit to that country until manually refreshed.
- Use Case: TCP-only. Best suited for specific route targeting rather than primary streaming traffic.
Admin speed tests perform real TCP throughput measurements via curl across all routes (including Direct):
- Displays verified egress IP.
- Strictly avoids fallback to alternative routes.
- Runs dedicated 10-second download and 10-second upload tests per route.
Pasted profiles are auto-sanitized before the interface is created:
- Missing parameters filled:
DNS(1.1.1.1),MTU(1420),PersistentKeepalive(25). - Stripped elements: IPv6 addresses and
wg-quickdirectives (Table,PostUp,PostDown, etc.). - Limitation: Endpoints are strictly TCP-only (UDP is not proxied).
The Docker image includes FlareSolverr, Chromium, and Xvfb, operating entirely on-demand to optimize resource usage:
- On-Demand Execution: Launched only when a Cloudflare challenge is detected, and terminates immediately after completion.
- Route Integration: Inherits the currently selected proxy or WARP route.
- Session Handover: Automatically captures and applies the resulting cookies and User-Agent.
- Fail-Closed Security: If WARP is active and the solver route is unavailable, requests fail closed rather than falling back to a direct connection.
For detailed API documentation and testing, use the built-in Interactive Docs available at:
http://localhost:7860/docs(Swagger UI)http://localhost:7860/redoc(ReDoc)
Prefix any stream URL with the proxy endpoint to handle headers and DRM.
http://localhost:7860/proxy/manifest.m3u8?url=<URL>
Options:
&clearkey=KID:KEY: Provide keys for DASH streams.&warp=off: Force the request to bypass the WARP VPN and use the server's real IP (Direct Connection).&proxy=off|torproxy|nordvpn|cwg: Bypass all configured proxies (off) or force the whole stream through Tor (torproxy), NordVPN (nordvpn) or the custom WireGuard tunnel (cwg). Omit for automatic routing.&host=<HOST>: Force a specific extractor instead of auto-detection (e.g.,&host=vavoo).&max_res=true: Serve only the highest video variant.&h_<Header Name>=<Value>: Pass custom headers (e.g.,&h_User-Agent=VLC).
Extract direct video links from supported websites.
http://localhost:7860/extractor/video?d=<URL>&redirect_stream=true
Tip: Open http://localhost:7860/extractor in your browser for a list of all parameters and supported hosts.
Manage your recordings via the /recordings web UI or API.
/record?url=<URL>&name=<NAME>: Start recording and watch simultaneously.- Optional parameters:
extractor=<HOST>(force a specific extractor instead of auto-detection),max_res=1(record only the highest video variant),duration=<SECONDS>,key_id=<KID>&key=<KEY>(ClearKey DRM),proxy=off|torproxy|nordvpn|cwg(bypass or force a proxy route). /api/recordings/start: Trigger a background recording (JSON body accepts the same options:extractor,max_res).
- Playlist Builder (
/builder): A visual tool to create custom M3U playlists with proxied links. - Server Info (
/info): Check status, public IP, and version information.
Contributions are welcome!
- Fork the repository.
- Commit your changes (features, extractors, or bug fixes).
- Open a Pull Request to the main branch.
Found a bug? Open an Issue!
Distributed under the MIT License. See LICENSE for more information.
β If this project helped you, please give it a star! β