
وكيل عكسي أعمى المحتوى لفحص أمني محمي من التعرض
وكيل عكسي محلي لفحص أمني محايد للمحتوى.
Go · HTTPS محلي · HTTP و WebSocket · Tor / SOCKS5
المنطق / كيف يعمل Blinder / البدء السريع / الشهادات / Tor / CAPTCHA / الأدلة / التطوير
اختبار الأمان هو تخصص سلوكي. ما يفعله التطبيق -- كيف يعالج المدخلات، وما الضوابط التي يفرضها، وما يعكسه، وكيف يفشل -- هو ما يهم. يجب أن تكون الهوية غير ذات صلة بهذا التحليل.
أدوات الأمان المدعومة بالذكاء الاصطناعي لا تعمل بهذه الطريقة. فهي ترى الهدف -- نطاقه، وعلامته التجارية، ومؤسسته -- وتكوّن آراءً. تخفف النتائج للخدمات المعروفة. ترفض الفحص بناءً على من هو الهدف. تمتنع عن اختبار المسارات التي تربطها بمورّد معين. الذكاء الاصطناعي يتخذ قرارات تخص المشغّل، ويتخذها بناءً على السياق بدلاً من السلوك.
هذا هو المحور الخاطئ. المشغّل يصرّح بالنطاق. الأداة تقيّم السلوك. هاتان مسؤوليتان مختلفتان ولا ينبغي أن تنهارا في واحدة. لكن اليوم، كل أداة مدعومة بالذكاء الاصطناعي تكون فيها هوية الهدف الكاملة مدمجة في كل قرار تتخذه -- ماذا تختبر، وكم تضغط، وهل تُبلّغ.
Blinder هو نقطة انطلاق: أداة عملية، ولكن أيضاً موقف بأن الاختبار يجب أن يُفصل عن السياق. هذه محاولة مبكرة لإيصال الفكرة. إذا لاقى النهج صدىً، نرحّب بتطبيقات أفضل، أو مساهمات، أو مجرد الحوار حول أين يجب أن يكون الخط.
إزالة الهوية لا تعني إزالة المحتوى. هنا تنكسر معظم الأساليب الساذجة. الثغرات قابلة للملاحظة كتغيّرات في محتوى الاستجابة -- رسائل الخطأ، والمدخلات المعكوسة، والبيانات التي لا ينبغي للجلسة الوصول إليها، والنتائج المحسوبة التي تكشف التقييم من جانب الخادم. إذا أزال الوكيل هذا المحتوى، فسيخفي الدليل الذي يبحث عنه المختبر.
المتطلب جراحي: إزالة الهوية مع الحفاظ على الإشارات السلوكية. صفحة لا تنتمي لأحد لكنها تتصرف تماماً كما تفعل الأصلية -- بما في ذلك عندما تتصرف بشكل سيئ.
Blinder هو وكيل عكسي محلي لـ HTTPS يجلس بين ماسح الذكاء الاصطناعي (أو المتصفح) والهدف. يعيد كتابة الهوية -- النطاقات، والعلامات التجارية، وأسماء المؤسسات، والبريد الإلكتروني، وعناوين IP -- مع الحفاظ على السلوك الوظيفي للتطبيق: أخطائه، وانعكاساته، وضوابطه الأمنية، ورموز حالته، وبنية محتواه.
بالنسبة للذكاء الاصطناعي في المصب، الهدف هو تطبيق محلي مجهول الهوية على https://127.0.0.1:8099. لا علامة تجارية للتعرف عليها. لا نطاق لتكوين رأي حوله. الذكاء الاصطناعي يختبر ما يفعله التطبيق، لا من هو.
هذا هو الفحص المحايد للمحتوى: المشغّل يتحكم في من هو الهدف؛ الذكاء الاصطناعي يركّز على ما يفعله.
محتوى الاستبدال جزء من الصحة: حشو محايد للعرض، وقيم قابلة للعكس لبيانات التطبيق، وتشخيصات محفوظة وسلوك تحكم محفوظ. إشعارات الإزالة المولّدة لا تنتمي إلى الصفحات.
| تنقية المحتوى | نص العرض يُستبدل بحشو نثري محايد؛ العناصر التفاعلية (الأزرار، والتسميات، وعناصر التحكم في النماذج) والمحتوى التشخيصي (رسائل الخطأ، وتتبعات المكدس، والترميز المعكوس) محفوظة. رموز الهوية ومراجع النطاقات وقيم الكوكيز يُعاد كتابتها عبر أجسام HTTP والترويسات ونص WebSocket. --preserve-content يحتفظ بنص العرض الأصلي لتنقية الهوية فقط. |
| سلامة الموارد | SRI الأصلي يُتحقق منه لكل مرجع ويُعاد حسابه للموارد المعاد كتابتها، مع ترجمة تجزئات CSP المقابلة. المراجع المُصدّرة تربط البايتات المقدّمة؛ سلامة الموارد الخارجية محفوظة. |
| ذاكرة الاستجابة المؤقتة | مدققات ذاكرة مؤقتة منفصلة للمنبع/المصب. إعادة التحقق 304 تدمج ترويسات السياسة الأمنية. إخلاء واعٍ بـ Vary. |
| معالجة الجلسات | أسماء كوكيز قابلة للعكس مع تنقية لكل قيمة. توجيه متعدد المنابع عبر --extra-origin مع أسماء مضيفين مستعارة حتمية، وتوجيه ترويسة Host، وترجمة أصل CORS. |
| ترحيل CAPTCHA | قائمة تحديات مواجهة للمشغّل ومنابع مزوّد منفصلة. الموارد الموجّهة عبر Tor تحتفظ بكوكيز المزوّد وCSP وCORS منفصلة عن الهدف والمشغّل. |
| التوجيه الخاص | HTTP و WebSocket في المنبع عبر Tor SOCKS5 مع تحليل اسم المضيف عن بُعد. إخفاقات Tor أخطاء صارمة، وليست تراجعات صامتة أبداً. |
| HTTPS محلي | CA محلي بعمر 90 يوماً وتجديد تلقائي؛ شهادات الجلسة الطرفية تُوقّع فورياً. وثّق CA مرة واحدة -- إضافة المنابع أو تغيير الأسماء المستعارة لا تتطلب إعادة التوثيق أبداً. وضع مؤقت متاح. |
| الأدلة | HAR قبل التنقية مع استمرارية قائمة على السجل، وبيان الطلبات مع أعداد التنقية/التسريب لكل طلب، وتعيينات النطاقات وتقرير التنقية. مقارنات الاستجابات المزدوجة تتحقق من دقة حجم البايت وما إذا كانت تغييرات المحتوى/الحالة تنجو من الإخفاء. فحوصات الحفاظ على الإشارة تسجّل السلوك المُتحقق منه والعيوب المتبقية. |
راجع السلوك المدعوم وبوابات التسليم لحالة التنفيذ والقيود المعروفة.
ابنِ باستخدام Go 1.26+. الملف التنفيذي ليس له اعتماد وقت تشغيل خارجي.
git clone https://github.com/Splinters-io/blinder.git
cd blinder
make build
./blinder --preflight
اتبع نصيحة الشهادة الخاصة بنظام التشغيل، ثم ابدأ جلسة:
capture_dir=$(mktemp -d)
./blinder --target https://your-authorized-target.example \
--identity YourOrganisation \
--har "$capture_dir/session.har" \
--output "$capture_dir/output"
وجّه متصفحك أو ماسحك إلى https://127.0.0.1:8099. أضف رموز هوية متعددة باستخدام أعلام --identity المتكررة. أوقف بـ Ctrl-C لحفظ أدلة الجلسة.
استخدم --config (-c) لتحميل الإعدادات الافتراضية من ملف YAML. أعلام سطر الأوامر تتجاوز الملف.
# blinder.yaml
listen: "127.0.0.1:9443"
target: "https://example.com"
alias: "target-001.local"
identity:
- "ExampleCorp"
- "example.com"
output: "/tmp/blinder-output"
captcha_config: "captcha.yaml"
no_verify_tls: true
tor:
enabled: false
addr: "127.0.0.1:9050"
har:
path: "/tmp/session.har"
max_body: 10485760
./blinder -c blinder.yaml
# override the listen port from the file:
./blinder -c blinder.yaml --listen 127.0.0.1:7777
ينشئ Blinder CA محلياً (سلطة شهادات) عند أول تشغيل ويستخدمه لتوقيع شهادات طرفية خاصة بالجلسة. وثّق CA مرة واحدة؛ جميع نقاط النهاية الحالية والمستقبلية -- بما في ذلك المنابع الإضافية المضافة لاحقاً -- موثوقة تلقائياً دون إعادة تشغيل الإعداد.
| المنصة | الإعداد |
|---|---|
| macOS | شغّل أمر --trust-cert المطبوع، وراجع بصمة CA ووافق على ثقة Keychain للمستخدم. إعداد لمرة واحدة. |
| Ubuntu / Linux | استخدم أمر curl --cacert المطبوع أو ثبّت شهادة CA في مخزن ثقة متصفحك/ماسحك. |
استخدم --cert-dir DIR لمخزن CA مختار. يستمر CA لمدة 90 يوماً مع تجديد تلقائي؛ --ephemeral-cert يولّد شهادة طرفية موقّعة ذاتياً مؤقتة بدون CA. خروج الفحص المسبق بـ 2 يعني أن ثقة المنصة تحتاج إعداداً؛ يمكن للعميل الذي يستخدم ملف CA الخاص به الاتصال بنجاح رغم ذلك.
إضافة منابع إضافية، أو تغيير الاسم المستعار، أو إعادة تكوين مزوّدي CAPTCHA يولّد شهادة طرفية جديدة موقّعة من نفس CA -- دون الحاجة لإعادة التوثيق. يبلّغ الفحص المسبق عن الثقة لمضيف الاستماع، والاسم المستعار الأساسي، والأسماء المستعارة للمنابع الإضافية المُكوّنة، وعند تكوين CAPTCHA، المشغّل واسم مضيف تحدٍّ ملموس. مع --tor، يتضمن الفحص المسبق أيضاً أسماء المزوّدين المستعارة المُكوّنة.
يحتوي مخزن CA أيضاً على version-signing.key خاص لملكية مرجع الموارد، مستقل عن تجديد الشهادة. احتفظ به عبر عمليات إعادة التشغيل حتى تبقى المراجع المنتهية قابلة للتعرف عليها. --ephemeral-cert يبقي TLS مؤقتاً؛ ملكية مرجع الموارد لا تزال مستمرة في المخزن الافتراضي.
إعداد الشهادة، وإرشادات نظام التشغيل والتجديد