
وكيل HTTP معترض يعمل من الطرفية مع واجهة مستخدم نصية لالتقاط الطلبات وفحصها وتعديلها في الوقت الفعلي، بالإضافة إلى Repeater لإعادة إرسال الطلبات وتعديلها.
وكيل اعتراض HTTP/HTTPS بسيط يعمل في الطرفية.
https://github.com/user-attachments/assets/94f9c9ae-5842-4b19-9f5b-84dedb9430e6
Roxy هو وكيل اعتراض خفيف الوزن لـ HTTP و HTTPS مع واجهة مستخدم طرفية (TUI) مكتوب بلغة Rust. يقوم بالتقاط الطلبات وفحصها وتعديلها في الوقت الفعلي، قبل وصولها إلى الخادم، من داخل طرفيتك. فكّر فيه كبديل بسيط أصيل للطرفية لـ Burp Suite لتحليل حركة المرور اليومية.
CONNECT، مع توليد الشهادات تلقائيًا.$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 بتوليد CA موقّعة ذاتيًا باسم Roxy CA.
[!Warning] سيفشل كل طلب HTTPS في التحقق حتى يتم الوثوق بـ CA من قبل العميل.
ثبّت ~/.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 بتوليد CA جديدة عند طلب HTTPS التالي ويزيل كل شهادة ورقية كان قد خزّنها مؤقتًا. سيتعين عليك الوثوق بـ 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 | تبديل الاعتراض تشغيل/إيقاف |
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، ويتعامل مع كل اتصال في مهمة غير متزامنة خاصة به.CONNECT عادي يُجاب عليه بـ 200 Connection Established، ويُنهى TLS محليًا بشهادة صادرة للمضيف المطلوب، ويُقرأ الطلب المفكوك كطلب HTTP عادي. أما المضيفون المطابقون لخيارات التمرير فيُمرَّرون إلى الخادم الحقيقي بدلًا من ذلك، دون إنهاء TLS.Host.tokio::mpsc وينتظر الاتصال على قناة oneshot حتى يقوم المستخدم بتمريره. يمكن تمرير الطلب كما هو، أو تعديله أولًا، أو إرساله إلى Repeater.webpki-roots لـ HTTPS)، ويكتب الطلب، ويبثّ الاستجابة الخام عائدة إلى العميل.Enter، ويختار النقل بناءً على البروتوكول الذي التُقط به الطلب، ويعرض الاستجابة جنبًا إلى جنب مع الطلب.لا تتشارك واجهة TUI والوكيل الحالة مباشرة أبدًا. يتواصلان فقط عبر قنوات الأحداث، لذا تبقى الواجهة سريعة الاستجابة أثناء اعتراض الطلبات.
المساهمات مرحّب بها دائمًا. إذا وجدت خطأً أو أردت المساعدة في ميزات جديدة، يمكنك:
يُصدر Roxy تحت رخصة MIT. © 2026 Hugo Vidal Martinez.