إدارة الموافقة في ووردبريس
التي تحجب قبل النقرة.
يُحيّد OW Consent أدوات التتبّع داخل شيفرة HTML قبل أن يختار الزائر، ويطبّق النظام القانوني لولايته القضائية، ويقيّد كل قرار في سجلّ مُتسلسِل يمكنك التحقّق منه بنفسك. أحد عشر ملفّ امتثال وتسعة أنظمة قانونية مُسمّاة — من اللائحة العامة لحماية البيانات (GDPR) إلى قانون خصوصية المستهلك في كاليفورنيا (CCPA). مجّاني، برخصة GPL، وبلا نسخة Pro.
لماذا إضافة موافقة أخرى؟
لم تكن اللافتة يومًا هي المشكلة. جميع المواقع تقريبًا لديها واحدة، ومع ذلك تنطلق أدوات التتبّع مع أول بايت: سكربت Analytics مكتوب مباشرةً داخل القالب، وبكسل الإعلانات يعمل من التذييل، وإطار YouTube يضع ملفّات تعريف الارتباط الخاصة به بينما تظهر اللافتة فوقه. عندئذٍ لا تأذن النقرة على «قبول الكل» بشيء، بل تصادق على ما وقع فعلًا.
الفخّ الثاني هو التخزين المؤقت. ما إن تقرّر إضافةٌ شكلَ شيفرة HTML بقراءة ملفّ تعريف ارتباط الزائر، حتى تصبح غير متوافقة مع تخزين الصفحات مؤقتًا — أو أسوأ: تقدّم اختيارات زائرٍ إلى زائر آخر. والفخّ الثالث هو الإثبات: تطلب المادة 7.1 إثبات الموافقة، وخانةٌ مؤشَّرة في مكانٍ ما من قاعدة البيانات لا تثبت شيئًا.
ينطلق OW Consent من هذه القيود الثلاثة. الشيفرة المُقدَّمة واحدة للجميع، بما فيها أدوات التتبّع المُحيَّدة، والمتصفّح هو الذي يُطلق ما منحه الزائر. وكل قرار يُضاف إلى سلسلة بصمات موقَّعة. أما النظام المطبَّق — موافقة مسبقة أم انسحاب، رابط «Do Not Sell» ظاهر أم لا، إشارة GPC مُلزِمة أم لا — فيتبع الولاية القضائية، لا خانةً افتراضية.
في الوضع الصارم، وهو المفعَّل افتراضيًا، تُعاد كتابة المستند عند الإخراج: السكربتات تُحيَّد إلى النوع text/plain، والإطارات تُحوَّل إلى about:blank خلف بطاقة قابلة للنقر، وبكسلات القياس تُستبدَل بصورة GIF شفّافة، وتلميحات الاتصال تُحذف. الزائر الذي لا ينقر أبدًا لا يُحمّل هذه الموارد أبدًا.
لا شيء على مسار العرض يقرأ ملفّ تعريف الارتباط. حالة الزائر يُعاد بناؤها داخل المتصفّح وتُوضع على وسم html قبل أول رسم للصفحة. يستطيع LiteSpeed أو WP Rocket أو Varnish أو أي شبكة توصيل محتوى تخزين الصفحة مؤقتًا دون أن يختلط زائران أبدًا.
كل حدث ينضمّ إلى جدول مُتسلسِل، وكل سطر موقَّع بخوارزمية HMAC مع بصمة السطر السابق، ومرساة الرأس محفوظة خارج الجدول. وإذا رفض السجلّ الكتابة، تردّ الواجهة البرمجية بالرمز 503، وتُلغي ملفّ تعريف الارتباط، ولا تُطلق أي أداة تتبّع: موافقةٌ لا يعرف الموقع إثباتها هي موافقة لا يدّعيها.
ما يتغير فعلياً
لا شعارات. هذه هي القرارات التقنية التي تميز هذا المنتج.
في الوضع الصارم — وهو المفعَّل افتراضيًا — يُلتقط المستند كاملًا عند الإخراج ويُعاد كتابته على خمس مراحل: السكربتات تصير من النوع text/plain مع حفظ رابطها في data-owc-src، والإطارات تنتقل إلى about:blank خلف بطاقة «قبول» تحمل اسم المزوّد، وبكسلات القياس تُستبدَل بصورة GIF شفّافة بحجم 1×1، وتُحذف وسوم preconnect و dns-prefetch (فمجرّد تلميح يفتح اتصال TLS ويسلّم عنوان IP)، وتفقد وسائط الأطراف الثالثة المُفهرَسة خاصية التشغيل التلقائي. الكتالوج المُضمَّن يضمّ 175 بصمة تغطّي 71 مزوّدًا، ويمكنك أن تضيف إليه أو تصحّحه أو تحذف منه من لوحة التحكّم. افتراضيًا يمرّ السكربت الخارجي المجهول، ويُحجب الإطار المجهول.
لا شيء ممّا يعرضه الخادم يتوقّف على ملفّ تعريف ارتباط الزائر: الوسوم المُحيَّدة نفسها تُقدَّم للجميع، والمُشغِّل يستعيدها داخل المتصفّح بترتيب المستند، وللفئات الممنوحة وحدها. وتُختم الحالة على وسم html قبل أول رسم للصفحة، فلا ترتعش اللافتة. أما رمز الكتابة فيُجلب طازجًا قبل كل إرسال ولا يُدرَج أبدًا في شيفرة مخزَّنة مؤقتًا: جلبه محدود بأربع ثوانٍ، وغيابه لا يمنع اختيارًا أبدًا.
اللائحة العامة لحماية البيانات (GDPR)، ولوائح PECR البريطانية، وقانون حماية البيانات السويسري الجديد (nLPD)، والقانون 25 في كيبك، والقانون البرازيلي (LGPD)، وقانون كاليفورنيا (CCPA)، وقانون POPIA في جنوب أفريقيا، وقانون PIPL الصيني، وقانون DPDP الهندي، إضافة إلى ملفّ أسترالي وملفّ أمريكي عام. الملفّ ليس زينة: فهو يقرّر النموذج القانوني (موافقة مسبقة، أو منح حتى الرفض في حالات CCPA والملفّ الأمريكي العام وأستراليا)، ووجودَ رابط «Do Not Sell or Share» — والنقرة عليه تنفّذ الانسحاب فعليًا، لا أن تفتح لوحة — ومدى إلزامية إشارة Global Privacy Control، ولغةَ الوثائق المولَّدة وسلطةَ الرقابة المذكورة فيها. أما الكشف حسب البلد فموجود، ومعطَّل افتراضيًا.
كل قبول أو رفض أو تعديل أو سحب ينضمّ إلى جدول مخصَّص: سطر موقَّع بخوارزمية HMAC-SHA-256 (أو SHA3-256) مع بصمة السطر السابق، ومرساة رأس محفوظة خارج الجدول حتى ينكشف أي بتر. ويُقيَّد فيه رمز متصفّح مستعار، وعنوان IP مبتور، وبصمة لوكيل المستخدم، والصفحة، والملفّ السارية أحكامه، والمراجعة الدقيقة للافتة التي عُرضت، وبصمة الوثائق المرتبطة — ولا اسم ولا عنوان أبدًا. وزرّ واحد يتحقّق من السلسلة كاملة ويسمّي موضع الانقطاع؛ أما التصدير بصيغة CSV أو JSON فيحمل غلافًا يتيح لطرف ثالث إعادة التحقّق من مقتطف. مدة الحفظ الافتراضية: 5 سنوات.
يُسلَّم معطَّلًا، وتفعّله متى شئت: يمرّ الماسح على صفحاتك أنت عبر WP-Cron (25 رابطًا افتراضيًا، وحتى 500) مُناوبًا بين الصفحة الرئيسية والصفحات والمقالات وأنواع المحتوى والتصنيفات. وله ثلاثة مصادر متمايزة ومُوثَّقة: شيفرة HTML المُقدَّمة، وترويسات Set-Cookie — وهي ملفّات تعريف الارتباط الوحيدة التي يستطيع مسحٌ من الخادم إثباتها، والوحيدة التي لا يستطيع شيء حجبها — ومِجَسّ داخل الصفحة مقصور على المديرين المسجَّلين، يلتقط ما يحقنه مدير الوسوم أثناء التشغيل. وتتحوّل أي نتيجة إلى قاعدة في الكتالوج بنقرة واحدة. كما يذكر التقرير ما لم يقرأه بدل أن يمرّر مسحًا جزئيًا على أنه جرد كامل.
أربع وثائق تُولَّد كصفحات ووردبريس ذات إصدارات — سياسة ملفّات تعريف الارتباط، وسياسة الخصوصية، والبيانات القانونية، والشروط العامة — بلغة الولاية القضائية (الفرنسية أو الإنجليزية أو البرتغالية)، مع سلطة الرقابة وجدول أدوات التتبّع المستخرج من المسح. ويُرفض النشر ما دام حقلٌ إلزامي قانونًا فارغًا، وتحمل كل وثيقة تنبيهًا يذكّر بعرضها على مختصّ. أما على صعيد الحقوق، فيفتح الرمز المختصر owc_dsar_form سبعة أنواع من الطلبات يجري التحقّق منها بجولة بريد إلكتروني؛ ومهلة المادة 12.3 تبدأ عند تأكيد الهوية، ويفتح الطلب بالتوازي طلبًا أصليًا في ووردبريس حتى يشمل التصدير أو المحو كل إضافات الموقع.
مقابل البدائل
بيانات قابلة للتحقق. لا نُؤشّر إلا ما هو موجود فعلاً لدى المنافس.
| المعيار | OW Consent | Complianz | CookieYes | Borlabs Cookie |
|---|---|---|---|---|
| نموذج العمل | مجّاني، GPL-2.0-or-later | Freemium (نسخة Pro مدفوعة) | Freemium (نسخة Pro مدفوعة) | غير مُعلَن |
| مفتاح ترخيص يجب تفعيله | لا شيء | للنسخة Pro | للنسخة Pro | غير مُعلَن |
| طريقة حجب أدوات التتبّع | إعادة كتابة شيفرة HTML على الخادم، مع 175 بصمة مُضمَّنة وقابلة للتعديل | غير مُعلَن | غير مُعلَن | غير مُعلَن |
| سجلّ إثبات مُتسلسِل وقابل للتحقّق | سلسلة HMAC-SHA-256، ومرساة خارج الجدول، وتحقّق بنقرة واحدة | غير مُعلَن | غير مُعلَن | غير مُعلَن |
| ملفّات الامتثال المُضمَّنة | 11 ملفًّا، و9 أنظمة قانونية مُسمّاة | غير مُعلَن | غير مُعلَن | غير مُعلَن |
| لافتة موافقة قابلة للضبط | 4 مواضع، وسمة فاتحة / داكنة / تلقائية | |||
| بوّابة طلبات ممارسة الحقوق | مُضمَّنة: نموذج، وتحقّق بالبريد الإلكتروني، ومهلة المادة 12.3 | غير مُعلَن | غير مُعلَن | غير مُعلَن |
| أين تعيش الموافقات المسجَّلة | في قاعدة بيانات استضافتك، بلا أي خدمة طرف ثالث | غير مُعلَن | غير مُعلَن | غير مُعلَن |
ثلاث طرق لدمج نموذج
لا أداة بناء صفحات مفروضة. اختر النهج الذي يناسب الـstack الخاص بك.
<!-- ما يطبعه قالبك -->
<script src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<iframe src="https://www.youtube.com/embed/VIDEO_ID"></iframe>
<!-- ما يستقبله الزائر قبل أي موافقة (الوضع الصارم، وهو الافتراضي) -->
<script type="text/plain"
data-owc-cat="analytics"
data-owc-vendor="Google"
data-owc-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<span class="owc-embed-placeholder" data-owc-cat="social" data-owc-vendor="Google">
<span class="owc-embed-text">Google content blocked: this content uses cookies…</span>
<button type="button" class="owc-embed-accept" data-owc-cat="social">Accept Google</button>
<iframe data-owc-cat="social"
data-owc-src="https://www.youtube.com/embed/VIDEO_ID"
src="about:blank"></iframe>
</span>
<!-- هذه الشيفرة نفسها تُقدَّم للجميع، بما في ذلك الصفحات المخزَّنة مؤقتًا.
المُشغِّل داخل المتصفّح هو الذي يستعيد وسوم الفئات الممنوحة، بترتيب
المستند. وسحبُ الموافقة يُعيد تحميل الصفحة: سكربت نُفِّذ بالفعل
لا يمكن إلغاء تحميله. -->شكوك مشروعة، إجابات مباشرة
نعم، والحجب يعيش داخل شيفرة الصفحة لا في وعد. في الوضع الصارم، وهو المفعَّل افتراضيًا، يُلتقط المستند عند الإخراج وتُعيد خمس مراحل كتابة السكربتات والإطارات والبكسلات وتلميحات الاتصال ووسائط الأطراف الثالثة. وهناك حدّان ينبغي أن تعرفهما: الحجب الفعلي يقوم على كتالوج من 175 بصمة وعلى بصمات الشيفرة المضمّنة — فالسكربت الخارجي المجهول مسموح افتراضيًا، والإطار المجهول محجوب — وإذا عطّلت الوضع الصارم فلن تُعالَج سوى السكربتات المسجَّلة في ووردبريس، لا تلك المكتوبة مباشرةً داخل القالب. وأخيرًا، أي مستند يتجاوز 8 ميغابايت أو أي إخفاق في محرّك التعابير النمطية يُقدَّم كما هو بدل أن يُكسَر.
نعم، وهذا هو القيد الذي انطلق منه التصميم. شيفرة HTML المُقدَّمة واحدة لجميع الزوّار، بما فيها أدوات التتبّع المُحيَّدة، وحالة الموافقة يُعاد بناؤها داخل المتصفّح من ملفّ تعريف الارتباط ثم تُطبَّق قبل أول رسم للصفحة. فلا يستطيع أي نظام تخزين مؤقت أن يقدّم اختيارات زائر إلى زائر آخر. والمقابل معلن بوضوح: نظام الزائر يُقرَّر من جهة العميل، أي أنه بلا جافاسكربت لا يُسجَّل شيء. والزائر الذي لا جافاسكربت لديه يرى كتلة noscript، ولا يُحمّل شيئًا غير ضروري، ولا يُحبَس أبدًا خلف نافذة لا يستطيع إغلاقها.
هو يقرّر النموذج القانوني: موافقة مسبقة في حالة GDPR ولوائح PECR البريطانية وقانون حماية البيانات السويسري الجديد والقانون 25 وLGPD وPOPIA وPIPL وDPDP؛ ومنح حتى الرفض في حالة CCPA والملفّ الأمريكي العام وأستراليا. ويقرّر كذلك عرض رابط «Do Not Sell or Share» (في CCPA والملفّ الأمريكي العام فقط)، ومدى إلزامية إشارة GPC (في هذين الملفّين نفسيهما: وفي ما عداهما تنعكس الإشارة على الشاشة دون أن يُسجَّل شيء)، ولغةَ الوثائق المولَّدة وسلطةَ الرقابة الواردة فيها. أما الكشف حسب البلد فاختياري ومعطَّل افتراضيًا، وهو يُخفق نحو الإغلاق، أي نحو النظام الأشدّ. وثمة حدّان مُعلنان: لا تفصيل حسب الولاية الأمريكية ولا حسب المقاطعة الكندية، وملفّ MaxMind لا تنزّله الإضافة ولا يمكن رفعه عبرها — تضعه أنت بنفسك في uploads/ow-geoip/.
يثبت بقدر ما يثبت المفتاح الذي يوقّعه، والإضافة تقول لك ذلك بصراحة. كل سطر موقَّع بخوارزمية HMAC مع بصمة السطر السابق، ومرساة الرأس محفوظة خارج الجدول، بحيث ينكشف أي تعديل أو بتر أو تفريغ عند التحقّق. لكن إذا لم يكن AUTH_KEY و AUTH_SALT داخل ملفّ wp-config.php ولم تُعرّف OWC_LEDGER_KEY، جاء المفتاح من قاعدة البيانات: وعندها يستطيع كل من يصل إلى القاعدة إعادة توقيع السلسلة. في هذه الحالة تعرض الإضافة تنبيهًا في لوحة التحكّم وتُبلغ بنفسها أن السلسلة لم تعد غير قابلة للتزوير، بدل أن تستمرّ في الادّعاء.
لا، ومن المهمّ قول ذلك قبل الشراء لا بعده. تُنفّذ الوحدة معيار TCF v2.2 من جهة المتصفّح — واجهة __tcfapi، وسلسلة TC مُرمَّزة، وملفّ تعريف الارتباط euconsent-v2 — لكنها لا توفّر رقم CMP ID: فهذا الرقم تمنحه IAB Europe بعد التسجيل، وبدونه لا تُصدر الوحدة أي شيء على الإطلاق. ونطاقها محدود كذلك: مقطع Core فقط، ولا قيود ناشر تُصدَر، وميزتان خاصّتان مدعومتان، وبلا نطاق عالمي. باختصار، تعمل كمنصّة متوافقة غير رسمية، وهو ما يكفي لكثير من عمليات الدمج لكنه لا يحلّ محلّ تسجيل رسمي — وGoogle AdSense تحديدًا ترفضها في الإنتاج داخل المنطقة الاقتصادية الأوروبية. والوحدة معطَّلة افتراضيًا.
التعطيل لا يمسّ أي بيانات: كل ما يفعله هو إزالة المهامّ المجدولة. أما عند الحذف فيختفي شيئان دائمًا، أيًّا كان إعدادك: المهامّ المجدولة وجدولُ طلبات ممارسة الحقوق، وهو الجدول الوحيد الذي يحوي بيانات تعرِّف أطرافًا أخرى تعريفًا مباشرًا ولا يبقى ما يحدّها بعد رحيل الإضافة. أما الباقي — سجلّ الموافقات، ونتائج الماسح، وكتالوج أدوات التتبّع — فيبقى، إلا إذا أشّرت صراحةً على خيار المحو الكامل، وهو غير مؤشَّر افتراضيًا: فإثبات موافقتك بموجب المادة 7.1 لا ينبغي أن يختفي مع إلغاء تثبيت.
لا نسخة Pro، ولا مفتاح ترخيص.
يُنشَر OW Consent برخصة GPL-2.0-or-later. وكل ما تصفه هذه الصفحة موجود في ملفّ ZIP الذي تنزّله: لا وحدة محجوزة، ولا اشتراك، ولا حدّ على عدد الصفحات أو الموافقات أو الطلبات.
- كل شيء مُضمَّن: اللافتة، وحجب أدوات التتبّع، والماسح، والكتالوج القابل للتعديل، والسجلّ المُتسلسِل، ومولّد الوثائق، وبوّابة الطلبات، وConsent Mode v2، وTCF v2.2، وGlobal Privacy Control.
- يُنزَّل ملفّ ZIP من optionweb.dev: ثبّته عبر «الإضافات» ثم «أضف جديدًا» ثم «رفع إضافة». الحدّ الأدنى هو ووردبريس 6.2 — وتحته ترفض الإضافة الإقلاع وتقول ذلك صراحةً، بدل أن تعرض لافتة لا تحجب شيئًا.
- بلا أي خدمة طرف ثالث، وبلا تحقّق من ترخيص، وبلا أي أداة تتبّع مضافة: تبقى الموافقات والطلبات والوثائق في قاعدة بيانات استضافتك.
- الشيفرة تحت رخصة GPL-2.0-or-later، مقروءة وقابلة للتعديل، ونقاط التوسّع فيها موثّقة: المرشّحات owc_settings و owc_scripts_catalog و owc_blocker_allowlist و owc_policy_template، وإجراءات السجلّ.