الاستجابة الوهمية
يستطيع Chute إرجاع بيانات وهمية لطلبات HTTP/HTTPS المطابقة. بالنسبة لتدفقات HTTP/2 المفكوكة التشفير، يُجاب على الاستجابة الوهمية محلياً دون إعادة توجيه الطلب؛ أما طلبات HTTP/1.1 (عبر بروكسي HTTP العادي أو MitM عبر HTTP/1.1) فما زال الطلب يُرسل إلى الخادم الحقيقي، ثم تُستبدل الاستجابة الحقيقية بالبيانات الوهمية قبل وصولها إلى العميل. هذا مفيد للاختبار، التطوير، أو حظر المحتوى غير المرغوب باستجابة مخصصة.
تُعرف قواعد الاستجابة الوهمية في القسم [Map Local].
تُطبق قاعدة استجابة وهمية واحدة فقط لكل طلب — أول قاعدة يطابق نمط رابطها.
تنسيق Map Local
لتقديم استجابات وهمية من ملفات محلية أو نص مضمَّن أو محتوى مرمَّز بـ base64، مع رمز حالة وترويسات تختارها:
[Map Local]
^https://example\.com/api.* data="/path/to/mock-response.json"
^https://example\.com/page.* data="/path/to/page.html" header="SGVhZGVyOiBWYWx1ZQ=="
^https://example\.com/pixel.* base64="R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
^https://example\.com/api/v2.* data-type=text data="rate limited" status-code=429 header="Content-Type: text/plain|Retry-After: 30"
^https://example\.com/beacon.* data-type=tiny-gif
ملاحظة: يُطابَق التعبير النمطي في أي موضع من رابط الطلب الكامل —
https://…بعد فك التشفير، وhttp://…حين يكون Chute بروكسي HTTP عادياً — ولذلك يغطي^https://example\.comبالفعل كل مسار وسلسلة استعلام على ذلك المضيف ولا حاجة إلى.*في النهاية. ولا يُطابَق أبداً مع المسار وحده، لذا لا يطابق نمطٌ مثل^/api. يحتفظ النمط بحالة أحرفه، فتبقى\Sو\Dو\Wو\Bعلى معناها؛ أما المطابقة نفسها فلا تميّز بين الأحرف الكبيرة والصغيرة.
يفتح # أو // في بداية السطر أو بعد مسافة تعليقاً يمتد حتى نهاية السطر، ما لم يكن داخل علامتي اقتباس مزدوجتين؛ أما ; فلا يفتح تعليقاً أبداً. راجع التعليقات.
معاملات Map Local
| المعامل | الوصف | |||
|---|---|---|---|---|
data="/path/to/file" |
مسار الملف لتقديمه كمحتوى استجابة، ويُقرأ عند وقت الطلب؛ ومع data-type يصبح هو المحتوى نفسه (انظر أدناه). |
|||
| `data-type=file\ | text\ | base64\ | tiny-gif` | كيفية قراءة data=: file مسار (الافتراضي)؛ text القيمة هي المحتوى؛ base64 تُفك القيمة من base64؛ tiny-gif صورة GIF مدمجة بحجم 1×1 لا تحتاج data= (تُرسل بنوع image/gif ما لم يحدد header= قيمة Content-Type). |
base64="<encoded>" |
محتوى استجابة مرمَّز بـ base64 (مثل data-type=base64). |
|||
status-code=<code> |
رمز حالة الاستجابة الوهمية، من 200 إلى 599. الافتراضي 200. والرمز الخارج عن هذا النطاق يُبطل السطر كله، ويُبلَّغ عنه خطأً في الإعدادات. |
|||
| `header="Key: value\ | Key2: value2"` | ترويسات استجابة مخصصة. تُفصل الأزواج بـ `\ | ، ويُقسَم كل زوج عند أول نقطتين رأسيتين، لذا قد تحتوي القيمة نفسها على نقطتين رأسيتين (مثل الروابط). ولا تزال الصيغة القديمة بـ base64 (أسطرKey:Value\n` مرمَّزة بـ base64) مقبولة. |
تحتاج القاعدة إلى محتوى:
data=(ملف، أو نص أو base64 معdata-type)، أوbase64=، أوdata-type=tiny-gif؛ ويعطيdata-type=textبلاdata=محتوى فارغاً. القاعدة التي لا تستطيع إنتاج محتواها — بلا معامل محتوى، أو بملف تتعذر قراءته — لا تُجيب: يمضي الطلب إلى الخادم، ولا تُجرَّب قواعد الاستجابة الوهمية التالية.ملاحظة: في كلتا الصيغتين، تُقسَم كل ترويسة عند أول نقطتين رأسيتين، وتُزال المسافات المحيطة بالاسم والقيمة؛ ويُتجاهل السطر الذي لا يحتوي على نقطتين رأسيتين.
الإجابات التي يولّدها Chute بنفسه — Map Local، و
responseالسكريبت، وإجابات إعادة كتابة الرابط وسياسات REJECT وصفحة الخطأ الخاصة بها — تتبع HTTP: فالإجابة عن طلب HEAD هي الترويسة وحدها، مع Content-Length الذي كان سيحصل عليه طلب GET، والإجابة ذات الحالة 204 أو 205 أو 304 لا تحمل محتوى ولا Content-Length.
متغيرات القالب
عند استخدام data= أو base64=، يدعم محتوى الاستجابة استبدال متغيرات القالب:
| المتغير | يستبدل بـ |
|---|---|
{{url}} |
رابط الطلب الكامل كما رأته القاعدة |
{{host}} |
اسم مضيف الطلب |
{{path}} |
مسار الرابط النسبي |
{{method}} |
طريقة HTTP |
{{ua}} |
قيمة ترويسة User-Agent |
مثال ملف استجابة وهمية (response.json):
{
"requested_url": "{{ "{{url}}" }}",
"host": "{{ "{{host}}" }}",
"method": "{{ "{{method}}" }}"
}
ملاحظة: لطلبات HTTPS، يجب تفعيل فك تشفير MitM لاسم المضيف المطابق. سيتم تجاهل قواعد الاستجابة الوهمية لحركة HTTPS بدون MitM. ولا يُجاب عن طلب HTTP العادي إلا حين يصل إلى Chute عبر بروكسي HTTP الخاص به؛ أما HTTP العادي الذي يصل عبر واجهة TUN فيُمرَّر دون أي تعديل. ويرسل Chute Android كل الحركة عبر TUN ما لم يُفعَّل بروكسي HTTP للنظام (System HTTP Proxy) في الإعدادات (Settings)، الذي يسلّم التطبيقات بروكسي HTTP الخاص بـ Chute (على Android 10 وما بعده؛ وهو معطّل افتراضياً).
ملاحظة: الملف خلف
data=يقرؤه الجهاز الذي يشغّل Chute وقت الطلب. حين تضيف قاعدة استجابة وهمية من Chute Dashboard إلى iPhone، فإن المسار على الـ Mac لا معنى له للهاتف — ضع المحتوى مضمَّناً بـbase64=بدلاً منه، أو قدّم الملف من رابط واستخدم إعادة كتابة الرابط.
هذه الصفحة ترجمة للنسخة الإنجليزية. في حال وجود اختلاف، يُعتمد على النسخة الإنجليزية.
ملاحظة: التطبيق لا يدعم اللغة العربية حاليًا.