🔄 socks-to-http-proxy

Rust 🦀 hyper ⚡ SOCKS5 → HTTP Tor / Shadowsocks ready
Convert any SOCKS5 proxy into a standard HTTP proxy — works with every app, terminal, and tool.

sthp creates an HTTP proxy that tunnels traffic through a SOCKS5 backend (Tor, Shadowsocks, OpenSSH dynamic forwarding, or any custom SOCKS5). No more struggling with torsocks or LD_PRELOAD hacks — just point your apps to http://127.0.0.1:8080 and everything works.

💡 Perfect for: Tor, Shadowsocks, WireGuard + SOCKS, corporate SOCKS proxies — use them in any HTTP‑aware client (curl, wget, npm, apt, Docker, browsers via PAC, etc.).

⚡ Quick install (recommended)

git clone https://github.com/journalehsan/socks-to-http-proxy.git
cd socks-to-http-proxy

# User install (no sudo)
./scripts/install.sh

# System-wide install
sudo ./scripts/install.sh

The installer auto-detects your environment, builds the binary if needed, installs a systemd service, and adds handy set-proxy/unset-proxy helpers to your shell.

🚀 Run manually (no install)

sthp -p 8080 -s 127.0.0.1:1080

This starts an HTTP proxy on 127.0.0.1:8080 forwarding to SOCKS5 at 127.0.0.1:1080 (Tor's default). Change IP/port as needed.

🔧 All options

sthp --help
OptionDescription
-p, --portHTTP proxy listen port (default: 8080)
--listen-ipBind address (default: 127.0.0.1)
-s, --socks-addressSOCKS5 address (default: 127.0.0.1:1080)
-u, --usernameSOCKS5 auth username
-P, --passwordSOCKS5 auth password
--allowed-domainsComma-separated list of allowed domains (whitelist)
--http-basicHTTP Basic Auth "user:passwd"
-d, --detachedDaemon mode (Unix only)
⚠️ Since v0.5 default listen IP is 127.0.0.1 (local only). Use --listen-ip 0.0.0.0 to expose to network (be careful).

📦 Systemd service (after install)

# User service
systemctl --user start sthp
systemctl --user enable sthp

# System service
sudo systemctl start sthp
sudo systemctl enable sthp

Configuration file: /etc/sthprc (system) or ~/.config/sthprc (user) — edit HTTP_PORT and SOCKS_PORT.

🎯 Terminal helpers

set-proxy      # exports http_proxy, https_proxy -> http://127.0.0.1:8080
unset-proxy    # removes all proxy env vars

🐧 Why use sthp instead of torsocks / proxychains?

📘 Note: The --socks-address flag uses SOCKS5h (remote DNS). No schema needed. Example: -s 192.168.1.10:9050

🛠 Build from source

cargo build --release
./target/release/sthp -p 8080 -s 127.0.0.1:1080

🌍 Real‑world scenarios

🔄 socks-to-http-proxy

Rust 🦀 hyper ⚡ SOCKS5 → HTTP سازگار با Tor و Shadowsocks
تبدیل هر پروکسی SOCKS5 به یک پروکسی HTTP استاندارد — بدون دردسر torsocks، قابل استفاده در تمام برنامه‌ها و ترمینال

sthp یک پروکسی HTTP می‌سازد که ترافیک را از طریق پروکسی SOCKS5 هدایت می‌کند (Tor، Shadowsocks، OpenSSH، و غیره). دیگر خبری از torsocks یا تداخل LD_PRELOAD نیست — کافی است برنامه‌ها را به http://127.0.0.1:8080指向 کنید.

💡 کاربرد ایده‌آل: Tor، Shadowsocks، هر سرور SOCKS5 شرکتی — از آن در curl، npm، apt، Docker، مرورگر (با PAC) استفاده کنید.

⚡ نصب سریع (پیشنهادی)

git clone https://github.com/journalehsan/socks-to-http-proxy.git
cd socks-to-http-proxy

# نصب برای کاربر (بدون sudo)
./scripts/install.sh

# نصب سیستمی (همه کاربران)
sudo ./scripts/install.sh

اسکریپت نصب به‌طور خودکار محیط شما را تشخیص می‌دهد، باینری را می‌سازد، سرویس systemd نصب می‌کند و دستورات set-proxy/unset-proxy را به شل شما اضافه می‌کند.

🚀 اجرای دستی (بدون نصب)

sthp -p 8080 -s 127.0.0.1:1080

یک پروکسی HTTP روی 127.0.0.1:8080 ایجاد می‌کند که به SOCKS5 روی 127.0.0.1:1080 (پیش‌فرض Tor) متصل می‌شود.

🔧 همه گزینه‌ها

sthp --help
گزینهتوضیح
-p, --portپورت شنود HTTP (پیش‌فرض: 8080)
--listen-ipآدرس Bind (پیش‌فرض: 127.0.0.1)
-s, --socks-addressآدرس SOCKS5 (پیش‌فرض: 127.0.0.1:1080)
-u, --usernameنام کاربری احراز هویت SOCKS5
-P, --passwordرمز عبور SOCKS5
--allowed-domainsلیست دامنه‌های مجاز (جداشده با کاما)
--http-basicاحراز هویت HTTP Basic به فرم "user:passwd"
-d, --detachedاجرا در پس‌زمینه (فقط یونیکس)
⚠️ از نسخه v0.5 به بعد آدرس پیش‌فرض 127.0.0.1 است (فقط لوکال). برای دسترسی از شبکه از --listen-ip 0.0.0.0 استفاده کنید.

📦 سرویس systemd (بعد از نصب)

# سرویس کاربر
systemctl --user start sthp
systemctl --user enable sthp

# سرویس سیستمی
sudo systemctl start sthp
sudo systemctl enable sthp

فایل تنظیمات: /etc/sthprc (سیستمی) یا ~/.config/sthprc (کاربر). متغیرهای HTTP_PORT و SOCKS_PORT را ویرایش کنید.

🎯 دستورات کمکی ترمینال

set-proxy      # تنظیم http_proxy و https_proxy روی 127.0.0.1:8080
unset-proxy    # پاک کردن تمام متغیرهای پروکسی

🐧 چرا sthp به جای torsocks / proxychains؟

📘 نکته: پرچم --socks-address از SOCKS5h استفاده می‌کند (DNS در سمت سرور). نیازی به http:// یا socks5:// نیست. مثال: -s 192.168.1.10:9050

🛠 ساخت از سورس

cargo build --release
./target/release/sthp -p 8080 -s 127.0.0.1:1080

🌍 سناریوهای واقعی