
محرك MITM قائم على القواعد. إعادة الكتابة وإعادة التوجيه والرفض على طلبات واستجابات HTTP(S)، ويدعم قواعد JavaScript.
محرك MITM قائم على القواعد. يعيد كتابة طلبات واستجابات HTTP(S) ويعيد توجيهها ويرفضها، ويدعم JavaScript.
نظرًا لمتطلبات تقنية MITM، تحتاج إلى إنشاء شهادة جذر خاصة بك والوثوق بها.
لأسباب أمنية، يُرجى عدم الوثوق بشكل أعمى بأي شهادة جذر يقدمها غرباء. تحتاج إلى إنشاء شهادة الجذر والمفتاح الخاص بك بنفسك.
يمكن للمستخدمين ذوي الخبرة استخدام OpenSSL لتنفيذ العمليات اللازمة. ومع ذلك، بالنسبة للمستخدمين الذين ليس لديهم خبرة في هذا المجال، يمكنك استخدام الأمر التالي لإنشاء المحتوى المطلوب. سيتم تخزين الشهادة والمفتاح الخاص اللذين تم إنشاؤهما في دليل ca.
good-mitm.exe genca
بعد استخدام الوكيل الذي يوفره Good-MITM في متصفحك، يمكنك تنزيل الشهادة مباشرةً بزيارة http://cert.mitm.plus. هذا مفيد بشكل خاص عند تقديم الخدمات لأجهزة أخرى.
يمكنك إضافة الشهادة الجذرية إلى منطقة الثقة في نظام التشغيل أو المتصفح، حسب احتياجاتك.
ابدأ Good-MITM وحدّد ملف القواعد أو الدليل المراد استخدامه.
good-mitm.exe run -r rules
استخدم وكيل HTTP الذي يوفره Good-MITM في متصفحك أو نظام التشغيل: http://127.0.0.1:34567.
راجع https://docs.mitmproxy.org/stable/howto-transparent/ للحصول على الوثائق.
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo sysctl -w net.ipv4.conf.all.send_redirects=0
sudo useradd --create-home mitm
sudo -u mitm -H bash -c 'good-mitm run -r rules/log.yaml -b 0.0.0.0:34567'
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567
تُستخدم Rule للتحكم في Good-MITM.
يجب أن تتضمن القاعدة الصالحة المكوّنات التالية:
Name:يُستخدم للتمييز بين القواعد المختلفة لتسهيل الصيانة.Filter:يُستخدم لتحديد المحتوى المراد معالجته من مجموعة من requests وresponses.Action:يُستخدم لتنفيذ الإجراءات المطلوبة، بما في ذلك redirect وreject وmodification وغيرها.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
بالإضافة إلى ذلك، يجب أن تستوفي القاعدة الصالحة المتطلبات التالية:
يُستخدم Filter لتحديد الطلبات والاستجابات التي تحتاج إلى معالجة.
حاليًا، يتضمن Filter الأنواع التالية:
ملاحظة
في الإصدار الحالي، تطابق الأنواع المتعلقة بـdomainالحقلhost، وهو ما لا يؤثر عادةً على النتائج. إذا كان موقع ويب يستخدم منفذًا غير قياسي، فيجب على القاعدة تحديد المنفذ. سيتم تحسين هذا السلوك في الإصدارات المستقبلية.
عند تحديد الفلتر كـ all، فإنه سيطابق جميع الطلبات والاستجابات. يُستخدم هذا عادةً لتنفيذ إجراءات التسجيل.
- name: "log"
filter: all
action:
- log-req
- log-res
domain يُجري مطابقة كاملة مقابل اسم النطاق.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
يقوم domain-keyword بمطابقة الكلمات المفتاحية مقابل اسم النطاق.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
يقوم domain-prefix بإجراء مطابقة بادئة مقابل اسم النطاق.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
يقوم domain-suffix بإجراء مطابقة لاحقة مقابل اسم النطاق.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
يقوم url-regex بإجراء مطابقة بتعبير نمطي (regular expression) على عنوان URL بالكامل.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
يدعم حقل filters كلاً من التصفية المفردة والتصفية المتعددة، حيث تكون العلاقة بين التصفيات المتعددة OR.
- name: "youtube-2"
mitm:
- "*.youtube.com"
- "*.googlevideo.com"
filters:
- url-regex: '^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+(&oad|ctier)'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
- url-regex: '^https?:\/\/\s.youtube.com/api/stats/qoe?.*adformat='
action: reject
يمكن تجميع قواعد متعددة لها نفس الإجراء في قاعدة واحدة لتسهيل الصيانة.
يُستخدم Action لتنفيذ عمليات على الطلبات أو الاستجابات.
حاليًا، يتضمن Action الخيارات التالية:
يُرجع النوع reject رمز الحالة 502 مباشرةً، ويُستخدم لرفض طلبات معينة. يمكن استخدامه لحظر التتبع والإعلانات.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
يعيد النوع redirect رمز الحالة 302 مباشرةً لإعادة التوجيه.
- name: "youtube-1"
filter:
url-regex: '(^https?:\/\/(?!redirector)[\w-]+\.googlevideo\.com\/(?!dclk_video_ads).+)(ctier=L)(&.+)'
action:
redirect: "$1$4"
يُستخدم modify-request لتعديل الطلب. للاطلاع على قواعد التعديل المحددة، راجع قسم Modify.
يُستخدم modify-response لتعديل الاستجابة. للاطلاع على قواعد التعديل المحددة، راجع قسم Modify.
يُستخدم log-req لتسجيل الطلب، ويُستخدم log-res لتسجيل الاستجابة.