تقدم صفحتا الخصوصية والأمان في Lolly ادعاءات: لا تحليلات، لا تتبع، الملفات لا تغادر الجهاز أبدا، ملف تعريف ارتباط واحد في النظام بأكمله. هذه الصفحة مختلفة: فهي لا تطلب منك تصديق أي من ذلك. إنها قائمة إجراءات، لكل منها الأمر الدقيق أو مسار النقرات والمُخرَج الذي سترى. كل ادعاء هنا قابل للدحض في دقائق، ومعظمها دون تثبيت أي شيء.
إذا لم يُنتج أي فحص في هذه الصفحة النتيجة المعروضة، فهذا إما خلل برمجي أو وعد مخلوف. أبلغ عنه في كلتا الحالتين، وسنتعامل معه بالجدية التي يستحقها الوعد المخلوف.
شاهدها تعمل، في عشر ثوانٍ
قبل الإجراءات، إليك المحصلة. افتح /verify وأسقط عليها ملفا - بلا رفع، بلا حساب، بلا انتظار خادم. ها هي تفحص عاصفة كوينزلاند المولّدة من صفحة موقفنا من الذكاء الاصطناعي: صورة Gemini فتحها Lolly وغيّر حجمها وصدّرها. كل شارة أدناه حُسبت على الجهاز، من بايتات الملف نفسها.
signed by Lollyvector SVGAI generatedتحقق بنفسكGet the signed file147 paths~9.4k nodes72 groups2 images254 KB
signed by Lollyvector SVGAI generatedتحقق بنفسكGet the signed file147 paths~9.4k nodes72 groups2 images254 KB
الحكم ليس شارة واحدة بل كومة صغيرة منها، كل واحدة حقيقة مستقلة:
- Made with Lolly - بيانات الاعتماد سليمة و تسجل تصديرا من Lolly.
- بيانات الاعتماد سليمة - يُحلَّل بيان C2PA الموقّع بنجاح ويتحقق توقيع ادعائه الخاص.
- لم تتغير البايتات - لا يزال تجزئة (hash) الملف مطابقة لما وُقِّع عليه. غيّر بكسلا واحدا وستنقلب هذه الشارة.
- GEN AI - آلة صنعت هذه البكسلات، والملف يقول ذلك. يقرأ Lolly هذا الادعاء ويظهره بدلا من إخفائه.
وينتقل السجل الكامل مع الملف. تنجو هنا تسع خطوات - خمس سجلتها Google أثناء توليدها وإضافتها العلامة المائية للصورة، ثم أربع سجلها Lolly أثناء فتح النسخة على هذه الصفحة ووسمها وتحويلها - تُقرأ مباشرة من البايتات، على جهازك، وتُعرض كخط زمني. هذه هي نفس الصورة، مُتحقق منها بالطريقة نفسها، كما في الخط الزمني لـ C2PA في صفحة موقف الذكاء الاصطناعي.
signed by Lollyvector SVGتحقق بنفسكGet the signed file71 paths~8.9k nodes78 groups111 KB
signed by Lollyvector SVGتحقق بنفسكGet the signed file71 paths~8.9k nodes78 groups111 KB
مع ذلك، لا شيء من هذا هو مطالبة الثقة - إنه العرض التوضيحي. بقية هذه الصفحة هي مطالبة الثقة: كل شارة أعلاه قابلة لإعادة الإنتاج، وهذه هي طريقة إعادة إنتاج الضمانات الكامنة وراءها.
في متصفحك، دون الحاجة إلى أدوات
1. راقب الشبكة. افتح lolly.tools، وافتح أدوات المطوّرين في متصفحك (F12)، وانتقل إلى تبويب Network واستخدم إحدى الأدوات - اكتب رابطًا في QR Code، وغيّر الألوان، وصدّر PNG. تبقى كل الطلبات على lolly.tools: غلاف التطبيق، ملفات الأداة نفسها، أصول الكتالوج. لا مضيف تحليلات، ولا منارة CDN، ولا خدمة خطوط، ولا نقطة نهاية "للإبلاغ عن الأخطاء". ما تكتبه في الأداة لا يظهر في أي طلب على الإطلاق - العرض محلي.
الاستثناءات الصادقة - كل واحد منها اختياري، يبدأه المستخدم، ومرئي في تبويب Network نفسه عند حدوثه: إضافة Google Font في محرر العلامة يجلب تلك العائلة الواحدة من Google، بعد حوار موافقة يخبرك بذلك بالضبط، مرة واحدة، قبل أول جلب؛ النقر على إعداد ملف ICC المسبق للطباعة يجلب ذلك الملف من سجل ICC العام على color.org؛ تشغيل الراديو المدمج الاختياري يبث من المحطة؛ إدخال موقع في Meeting Planner يبحث عن ذلك المكان في خدمة الترميز الجغرافي لدى open-meteo للحصول على إحداثياته ومنطقته الزمنية، مرة واحدة لكل مدينة (تُحفظ الإجابات على جهازك)، ويحمل حقل الإدخال هذا الإفصاح بجانب مكان الكتابة مباشرة؛ وURL Screenshot يحمّل بالضرورة الرابط الذي كتبته - هذه هي وظيفته، وأنت تشاهد ذلك يحدث. الأداة التي تعلن قدرة شبكة قد تجلب فقط من المضيفين المدرَجين في قائمة السماح الخاصة بها، وتلك الآلية مغلقة افتراضيًا عند الفشل؛ لا توجد حاليًا أي أداة مشحونة تعلن ذلك، لذا فإن سياسة أمان المحتوى (Content-Security-Policy) التي يفرضها المتصفح هي الحد الذي يُبقي فعليًا القائمة أعلاه ضمن مضيفيها. تحتفظ سياسة الخصوصية بالجدول المرجعي الكامل لكل هذا؛ وقاعدتها الثابتة هي أن أي تواصل شبكي غير موجود في ذلك الجدول لا يحدث.
2. اسحب القابس. حمّل التطبيق وافتح أداة أو أداتين، ثم اقطع الاتصال بالإنترنت - وضع الطيران، أو DevTools ← Network ← Offline. أعد التحميل. يستمر عمل المعرض وكل أداة فتحتها، بما في ذلك العرض والتصدير بالصيغ التي استخدمتها - تُخزَّن ملفات الأداة ومُرمِّز الصيغة مؤقتًا عند أول استخدام لها، لذا جرّب الأداة مرة وأنت متصل قبل اختبارها دون اتصال. هذا هو أقوى فحص وحيد في هذه الصفحة: البرمجيات التي تتصل بالمنزل لا تصمد عند قطع حبلها.
3. أحصِ ملفات تعريف الارتباط. DevTools ← Application (فايرفوكس: Storage) ← Cookies ← https://lolly.tools. القائمة فارغة - التطبيق لا يضبط أي كوكيز. أو الصق document.cookie في وحدة التحكم: ستحصل على "". (ملف تعريف الارتباط الوحيد في النظام بأكمله، lolly_ca_state، يعيش لعشر دقائق كحد أقصى أثناء تسجيل دخول هوية اختياري - يُحذف لحظة اكتمال تسجيل الدخول - محصور بـ /api/ca وهو HttpOnly: تصف سياسة الخصوصية ذلك بدقة.)
4. اقرأ تخزينك الخاص. لوحة Application نفسها: كل ما يحتفظ به Lolly قابل للفحص أمامك - نحو عشرين مفتاح localStorage عادي (السمة، اللغة، عرض الشريط الجانبي، إعدادات الصوت والعرض، بالإضافة إلى نسخة مخزَّنة مؤقتًا من فهرس كتالوج الأدوات العام)، ومستنداتك الخاصة في IndexedDB. كل قيمة نص أو JSON قابل للقراءة - لا شيء معتم، ولا شيء مُرمَّز لإحباط قراءته. Profile ← Clear all my data يمحو ذلك؛ وكذلك مسح بيانات الموقع في المتصفح، لأنه لا توجد نسخة على الخادم لتصمد بعد ذلك.
5. تحقق من وجود جهة اتصال الإفصاح. يجيب /.well-known/security.txt بكتلة اتصال وفق RFC 9116، وليس بصفحة HTML.
من طرفية
6. نقطة نهاية العرض معطّلة على lolly.tools. ميزة الخادم الوحيدة التي كانت ستضع مدخلات كتبها المستخدم في رابط - عمليات العرض بالربط المباشر - معطّلة هنا إلى أن تنتقل الخدمة إلى استضافة مملوكة للمؤسسة (تشرح سياسة الخصوصية السبب):
curl -s -o /dev/null -w '%{http_code}\n' 'https://lolly.tools/tool/qr-code.svg?url=test'
# 404
المفتاح لكل نشر على حدة (LOLLY_DISABLE_RENDER_GET=1): على lolly.art، نسخة العرض التوضيحي العامة، عمليات العرض بالربط المباشر مُفعّلة عمدًا، لذا فإن نفس الفحص هناك يُعيد صورة - هذا الفرق هو عمل العلَم كما يجب، لا تضاربًا.
7. سطح الخادم قابل للسرد. تسرد Server Surface كل مسار من جانب الخادم موجود فعليًا، مع القاعدة الثابتة بأن أي نقطة نهاية ليست على تلك الصفحة ليست جزءًا من Lolly. جرّبها بـcurl؛ لا يوجد شيء آخر لتجده.
في المصدر
كل ما سبق قد يظل عرضًا مسرحيًا لو اختلف الكود المنشور عن الكود العام. لذا تحقق من الكود - يُبنى النشر من المستودع العام:
git clone --recurse-submodules https://github.com/lolly-tools/lolly.git
cd lolly
8. لا متعقّب، ولا حزمة تطوير تحليلات، في أي مكان. ابحث في الكود المشحون - المحرك، وكل غلاف (بما في ذلك امتداد المتصفح، وتجاوزات جسر Tauri، وعامل الخدمة)، ودوال الخادم، وحزم الأدوات - عن المشتبه بهم المعتادين:
grep -rn --include='*.ts' --include='*.js' --include='*.mjs' --include='*.html' \
-e googletagmanager -e google-analytics -e posthog -e mixpanel -e hotjar \
-e sentry.io -e segment.com -e '@vercel/analytics' \
engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
shells/web/public/sw.js services packages api community brands/*/tools
# (no output)
9. لا محلل DNS من طرف ثالث. فحص SEAL في Verify لا يوجّه أبدًا عمليات البحث عبر مزوّد DNS-over-HTTPS - تطبيق الويب ببساطة لا يملك محلِّلاً:
grep -rn --include='*.ts' --include='*.js' --include='*.mjs' \
-e cloudflare-dns.com -e dns.google -e /dns-query \
engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
shells/web/public/sw.js services packages api community brands/*/tools
# (no output: outside this page and its built copies, the only place those
# hostnames appear in the repo is tests/no-trackers.test.ts, the test that
# bans them)
10. خدمة الشهادات لا تحتفظ بشيء. مرجع الهوية CA ليس لديه سجل إصدار - لا بريدك الإلكتروني، ولا طابع زمني، ولا استدعاء ويب. الغياب قابل للبحث بـgrep:
grep -rn logIssuance services/ca api/ca
# (no output)
تفرضه الاختبارات، لا الوعود
فحوصات المصدر الثلاثة أعلاه ليست تدقيقًا لمرة واحدة - إنها مثبّتة في مجموعة الاختبارات، بحيث لا يمكن أن تتآكل بصمت. يُفشل tests/no-trackers.test.ts عملية البناء إذا:
- ظهرت أي حزمة تطوير تحليلات أو تتبع في أي مكان من المصدر المشحون الذي يفحصه - التطبيق، والمحرك، والخادم، والامتداد، وكود حزم الأدوات على حد سواء،
- ظهر أي محلل DNS-over-HTTPS من طرف ثالث في ذلك المصدر،
- عاد سجل إصدار CA للظهور - في المصدر أو حزمة الخادم المولَّدة،
- فقدت سياسة الخصوصية بياناتها المطلوبة قانونًا (جهة التحكم المسمّاة، الأساس القانوني، الحق في الشكوى).
شغّلها بنفسك في النسخة المستنسخة (Node 22.18+؛ لا حاجة إلى npm install لهذا الملف):
node --test tests/no-trackers.test.ts
# ✔ no analytics or tracking SDK appears anywhere in shipped source
# ✔ no third-party DNS-over-HTTPS resolver is contacted
# ✔ the certificate service logs no personal data
# ✔ privacy policy states a controller, a legal basis and a right to complain
مجموعة الاختبارات الكاملة (npm install && npm test) تشغّل عدة آلاف أخرى، بما فيها اختبارات التشفير العدائية الموصوفة في الأمان والتحقق.
ما لا يمكنك التحقق منه من الخارج - بصراحة
صفحة كهذه تكسب الثقة بذكر حدودها الخاصة:
- سجلات وصول الاستضافة. أي خادم يجيب على طلب يمكنه تسجيل ذلك الطلب - عنوان IP، والمسار، والطابع الزمني. لا يمكنك التحقق مما يحتفظ به المضيف أو لا يحتفظ به، ولا نحن كذلك، فيما وراء السلوك الموثّق لمزودنا. لهذا السبب بالتحديد تُبقي البنية محتواك بالكامل خارج الشبكة: ما لا يغادر جهازك أبدًا لا يمكن لأحد تسجيله.
- أن النشر يشغّل هذا الكود بالتحديد. يمكنك التحقق من أن المصدر نظيف وأن السلوك المنشور يطابقه (الفحوصات أعلاه تغطي الطرفين)، لكن التصديق على المستوى الثنائي لنشر ويب ليس أمرًا توفره منصة الويب. التخفيفات هي المستودع العام، والاختبارات المفروضة، وفحص عدم الاتصال - نشر تم العبث به ويتصل بالمنزل سيفشل في الفحصين 1 و2 فورًا.
- خطافات الأدوات ليست معزولة في وضع الحماية افتراضيًا. يعمل المنطق الاختياري للأداة، بعد مراجعته، في مجال الصفحة نفسه؛ كل أداة على lolly.tools هي أداة أصلية ومراجَعة قبل شحنها. عزل Worker متاح الآن كخيار اختياري لكل أداة - أداة يضبط بيانها الوصفي
isolate: trueتشغّل خطافاتها خارج الخيط الرئيسي بدلاً من ذلك - لذا فإن ما لا يمكنك التحقق منه من الخارج يضيق، لكن المسار الافتراضي لا يزال داخل المجال نفسه والمراجعة لا تزال هي الضابط. هذا مذكور، لا مخفي - انظر قسم حدود التصميم، الذي ذكر ذلك دائمًا.
إذا فشل أحد الفحوصات
أي تباين بين هذه الصفحة والسلوك المُلاحَظ هو تقرير أمني، ونحن نفضّل فعلاً سماعه على عدمه: fitzy+security@suse.com، أو زر Report a vulnerability على أي مستودع lolly-tools، أو جهة الاتصال في /.well-known/security.txt. الإفصاح المنسّق ونسب الفضل للمُبلِّغ هما السياسة الثابتة - يحوي SECURITY.md التفاصيل.