
टर्मिनल-आधारित HTTP इंटरसेप्टिंग प्रॉक्सी, जिसमें रीयल टाइम में रिक्वेस्ट को कैप्चर, इंस्पेक्ट और मॉडिफाई करने के लिए TUI है, साथ ही रिक्वेस्ट को दोबारा भेजने और ट्वीक करने के लिए एक Repeater भी है।
न्यूनतम टर्मिनल-आधारित HTTP/HTTPS इंटरसेप्टिंग प्रॉक्सी।
https://github.com/user-attachments/assets/94f9c9ae-5842-4b19-9f5b-84dedb9430e6
विशेषताएँ · इंस्टॉलेशन · HTTPS समर्थन · उपयोग · यह कैसे काम करता है
Roxy, Rust में लिखा गया एक हल्का इंटरसेप्टिंग प्रॉक्सी है जो HTTP और HTTPS के लिए टर्मिनल यूज़र इंटरफ़ेस (TUI) प्रदान करता है। यह अनुरोधों को रीयल टाइम में कैप्चर, निरीक्षण और संशोधित करता है, इससे पहले कि वे सर्वर तक पहुँचें, और यह सब आपके टर्मिनल के अंदर से होता है। इसे रोज़मर्रा के ट्रैफ़िक विश्लेषण के लिए Burp Suite का एक न्यूनतम, टर्मिनल-नेटिव विकल्प मान सकते हैं।
CONNECT के माध्यम से पूर्ण MITM समर्थन, प्रमाणपत्र स्वचालित रूप से जनरेट होते हैं।$EDITOR के साथ तुरंत संशोधित करें।--host और --port के साथ लिसनिंग पता सेट करें, और तय करें कि कौन से होस्ट इंटरसेप्ट होंगे या पासथ्रू होंगे।इसे सोर्स से बनाने के लिए आपको चाहिए:
| आवश्यकता | नोट्स |
|---|---|
| Rust 1.85 या नया | rustc --version से जाँचें। |
| एक C कंपाइलर | gcc या clang। |
$EDITOR | केवल अनुरोध संपादन सुविधा के लिए आवश्यक। |
git clone https://github.com/vid4l-07/Roxy.git
cd Roxy
cargo build --release
बाइनरी target/release/roxy पर उपलब्ध होगी।
cargo install --git https://github.com/vid4l-07/Roxy.git
बाइनरी ~/.cargo/bin/roxy पर उपलब्ध होगी।
[!note] यदि HTTPS पासथ्रू सक्षम है, तो HTTPS समर्थन की आवश्यकता नहीं है।
| क्या | स्थान | नोट्स |
|---|---|---|
| CA प्रमाणपत्र और कुंजी | ~/.config/roxy/ca.crt, ~/.config/roxy/ca.key | पहली बार HTTPS अनुरोध इंटरसेप्ट होने पर आलसी रूप से बनाए जाते हैं। |
| प्रति होस्ट लीफ़ प्रमाणपत्र | /tmp/roxy_certs/<host>.crt, /tmp/roxy_certs/<host>.key | मांग पर जारी और कैश किए जाते हैं। नया CA जनरेट होने पर कैश मिटा दिया जाता है। |
Roxy Roxy CA नाम का एक स्व-हस्ताक्षरित CA जनरेट करता है।
[!Warning] जब तक क्लाइंट द्वारा CA पर भरोसा नहीं किया जाता, हर HTTPS अनुरोध सत्यापन में विफल होगा।
~/.config/roxyca.crt को अपने ब्राउज़र या सिस्टम में इंस्टॉल करें।
आप इसे http://roxy (या http://<host>:<port>) पर बने अंतर्निहित वेब पेज से भी डाउनलोड कर सकते हैं।
Firefox / Chrome:
Settings → Privacy & Security → Certificates → View Certificates।~/.config/roxy/ca.crt चुनें।सिस्टम CA स्टोर curl जैसे टूल्स के लिए।
# Debian / Ubuntu
sudo cp ~/.config/roxy/ca.crt /usr/local/share/ca-certificates/roxy.crt
sudo update-ca-certificates
# Fedora / RHEL / Arch
sudo cp ~/.config/roxy/ca.crt /etc/pki/ca-trust/source/anchors/roxy.crt
sudo update-ca-trust extract
इसे फिर से हटाने के लिए, फ़ाइल हटाएँ और संबंधित कमांड दोबारा चलाएँ।
rm -rf ~/.config/roxy
Roxy अगले HTTPS अनुरोध पर एक नया CA जनरेट करता है और अपने कैश किए गए सभी लीफ़ प्रमाणपत्र हटा देता है। आपको नए CA पर फिर से भरोसा करना होगा। पुराने CA को अपने ब्राउज़र और सिस्टम स्टोर से हटाना याद रखें।
| विकल्प | विवरण |
|---|---|
-h, --host <HOST> | लिसनिंग होस्ट। डिफ़ॉल्ट 127.0.0.1। |
-p, --port <PORT> | लिसनिंग पोर्ट। डिफ़ॉल्ट 8080। |
--passthrough | हर होस्ट के लिए HTTPS को बिना डिक्रिप्ट किए टनल करें। |
--passthrough-host <HOSTS> | --passthrough जैसा ही, लेकिन केवल सूचीबद्ध होस्ट के लिए। |
--intercept-https <HOSTS> | पासथ्रू मोड में भी इन होस्ट को इंटरसेप्ट करें। |
--help | सहायता संदेश प्रिंट करें। |
# Pass every host through untouched except the one you want to inspect
roxy --passthrough --intercept-https <HOSTS>
| कुंजी | क्रिया |
|---|---|
q | बाहर निकलें |
Tab | Proxy और Repeater स्क्रीन के बीच स्विच करें |
? | वर्तमान स्क्रीन के लिए सहायता पॉपअप खोलें |
| कुंजी | क्रिया |
|---|---|
i | इंटरसेप्ट ON/OFF टॉगल करें |
Enter | इंटरसेप्ट किए गए अनुरोध को आगे भेजें |
e | बाहरी एडिटर में अनुरोध संपादित करें |
u | संपादन पूर्ववत करें |
U | संपादन दोबारा करें |
r | अनुरोध Repeater को भेजें |
↑/k | ऊपर स्क्रॉल करें |
↓/j | नीचे स्क्रॉल करें |
| कुंजी | क्रिया |
|---|---|
Enter | वर्तमान अनुरोध भेजें |
e | बाहरी एडिटर में अनुरोध संपादित करें |
u | संपादन पूर्ववत करें |
U | संपादन दोबारा करें |
r | वर्तमान टैब का नाम बदलें |
n | अगला repeater टैब |
p | पिछला repeater टैब |
x | वर्तमान टैब बंद करें |
z | फ़ोकस किए गए पैनल पर ज़ूम टॉगल करें |
↑/k | ऊपर स्क्रॉल करें |
↓/j | नीचे स्क्रॉल करें |
←/h / →/l | Request और Response पैनल के बीच फ़ोकस टॉगल करें |
H | Request पैनल की चौड़ाई घटाएँ |
L | Request पैनल की चौड़ाई बढ़ाएँ |
जब आप e दबाते हैं, तो कच्चा अनुरोध एक अस्थायी फ़ाइल में लिखा जाता है और $EDITOR द्वारा परिभाषित बाइनरी के साथ खोला जाता है। इसे संपादित करें, सहेजें, और बाहर निकलें।
संशोधित अनुरोध मूल को प्रतिस्थापित कर देता है और Content-Length स्वचालित रूप से पुनर्गणना हो जाता है।
127.0.0.1:8080 पर कनेक्शन स्वीकार करता है, जिसे --host और --port से कॉन्फ़िगर किया जा सकता है, और प्रत्येक को अपने अलग async टास्क में संभालता है।CONNECT अनुरोध को 200 Connection Established के साथ उत्तर दिया जाता है, TLS को स्थानीय रूप से अनुरोधित होस्ट के लिए जारी प्रमाणपत्र के साथ समाप्त किया जाता है, और डिक्रिप्ट किए गए अनुरोध को सामान्य HTTP अनुरोध के रूप में पढ़ा जाता है। पासथ्रू विकल्पों से मेल खाने वाले होस्ट को TLS समाप्त किए बिना वास्तविक सर्वर को रिले किया जाता है।Host हेडर से हल किया जाता है।tokio::mpsc चैनल के माध्यम से TUI में भेजा जाता है और कनेक्शन एक oneshot चैनल पर प्रतीक्षा करता है जब तक उपयोगकर्ता इसे आगे नहीं भेजता। अनुरोध को जैसा है वैसा आगे भेजा जा सकता है, पहले संपादित किया जा सकता है, या Repeater को भेजा जा सकता है।webpki-roots के विरुद्ध सत्यापित TLS), अनुरोध लिखता है, और कच्ची प्रतिक्रिया को क्लाइंट को स्ट्रीम करता है।Enter दबाते हैं तो संग्रहीत अनुरोध दोबारा भेजता है, अनुरोध जिस प्रोटोकॉल के साथ कैप्चर किया गया था उसके आधार पर ट्रांसपोर्ट चुनता है, और प्रतिक्रिया को अनुरोध के साथ साथ दिखाता है।TUI और प्रॉक्सी कभी सीधे स्टेट साझा नहीं करते। वे केवल इवेंट चैनलों के माध्यम से बात करते हैं, इसलिए अनुरोधों को इंटरसेप्ट करते समय इंटरफ़ेस रिस्पॉन्सिव बना रहता है।
योगदान का हमेशा स्वागत है। यदि आपको कोई बग मिलता है या नई सुविधाओं में मदद करना चाहते हैं, तो आप:
Roxy MIT License के अंतर्गत जारी किया गया है। © 2026 Hugo Vidal Martinez।