Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Ad Blocker Pro 2.0

إضافة كروم لحجب الإعلانات، مبنية على Manifest V3 — تعمل بعد أن أوقفت جوجل دعم Manifest V2 وعطّلت uBlock Origin نهائياً في كروم 151.


ما الجديد في 2.0

1.0 2.0
قواعد الشبكة 23 مكتوبة يدوياً حتى 29,000 من قوائم المجتمع
قواعد الإخفاء 8 محددات حتى 4,000 من نفس القوائم
فيسبوك — كشف المنشورات الممولة بكسر التمويه
يوتيوب — تخطي إعلانات المشغّل تلقائياً
التحديث يدوي تلقائي كل 24 ساعة
الاختبارات — 28 اختباراً على نواة الكشف

التثبيت

  1. chrome://extensions
  2. فعّل Developer mode
  3. Load unpacked ← اختر هذا المجلد
  4. افتح الإضافة ← اضغط Update filter lists ← انتظر التنزيل

بعدها ستُحدَّث القوائم تلقائياً كل يوم.


طبقات التمويه الأربع — مرصودة حيّة، أغسطس 2026

# الأسلوب كيف يُهزَم
١ تفتيت التسمية عبر عناصر متعددة إعادة بناء من الإحداثيات البصرية
٢ حشر U+034F بين كل حرفين، كلٌّ في عقدة مستقلة استبعاد بعرض صفر + تطبيع المحارف
٣ ترتيب DOM مبعثر يُصلحه flexbox بصرياً الفرز حسب الموضع الفعلي على الشاشة
٤ أحرف وهمية بحجم وموضع حقيقيين، مقصوصة بـ overflow: hidden مقاطعة كل جزء مع صندوق كل سلف قاصّ

الطبقة الرابعة هي الأخبث: الأحرف تجتاز كل فحوص display وvisibility وopacity لأنها فعلاً «مرئية» بمقاييس CSS — لكنها واقعة خارج صندوق القص فلا يراها أحد. كانت تنتج تسميات مثل:

sponsoredontrsdseop05fu935tca120a1t285fmc58hl8c598gl632gt000
└───────┘└──────────────────────────────────────────────────┘
  صحيحة                    ركام مقصوص

فيسقط الطول في فحص المطابقة وينجو الإعلان.

كيف يعمل حجب فيسبوك

فيسبوك يقدّم إعلاناته من نطاقه نفسه، فحجب الشبكة لا يمسّها. وأسماء الأصناف عشوائية (x1i10hfl) وتتغيّر باستمرار، فالمحددات لا تنفع. والأسوأ: فيسبوك يفتّت كلمة "مُموَّل" عبر عناصر وهمية مخفية بالـ CSS، فيخرج النص مشوّشاً:

DOM يقول:  S X p o Y n s Z o r e d      ← "SXpoYnsZored"
المستخدم يرى:  S p o n s o r e d           ← "Sponsored"

الحل في fb-detect.js: لا نقرأ الـ DOM، بل نقيس أين يقع كل جزء نص على الشاشة فعلياً عبر Range.getBoundingClientRect(). الأجزاء المخفية مساحتها صفر فتُستبعد، والترتيب المبعثر يُصلَح بالفرز حسب الإحداثيات.

فيسبوك لا يستطيع تزوير الموضع البصري دون تغيير ما يراه المستخدم — وهذا ما يجعل الطريقة تصمد أمام تدوير أسماء الأصناف.

العربية تحتاج معالجة خاصة: الفرز التصاعدي بالإحداثي السيني صحيح للإنجليزية لكنه يعكس العربية، لأن أول حرف يقع عند أكبر إحداثي لا أصغره. الوحدة تكتشف اتجاه النص وتفرز عكسياً. هذا خطأ حقيقي التقطته الاختبارات.


الاختبارات

node tests/fb-detect.test.js

تبني DOM اصطناعياً بتخطيط حقيقي (jsdom لا يصلح — لا ينفّذ تخطيطاً، فكل getBoundingClientRect يعود بأصفار وتصبح الاختبارات بلا معنى) وتحاكي:

  • أحرف وهمية بـ display:none
  • ترتيب DOM مبعثر يُصلحه flexbox بصرياً
  • عناصر خارج الشاشة وclip وopacity:0 وfont-size:0
  • تشكيل عربي وتطويل وأحرف صفرية العرض
  • نصوص يجب ألا تُطابَق («برنامج رعاية الأيتام»)

الملفات

manifest.json     التعريف
background.js     الخدمة: الإعدادات، القوائم، الشارة
filters.js        محرّك قوائم الفلترة → قواعد DNR ديناميكية
content.js        الإخفاء العام على كل المواقع
fb-detect.js      نواة الكشف (قابلة للاختبار)
facebook.js       تطبيق الكشف على صفحة فيسبوك
youtube.js        تخطي إعلانات المشغّل
inject.js         مقاومة كاشفات مانعات الإعلانات
popup.html/js     الواجهة
rules_ads.json    قواعد أساسية ثابتة
tests/            بيئة الاختبار

الحدود — بصراحة

  • كروم يسمح بـ 30,000 قاعدة ديناميكية فقط. uBlock Origin كان يعمل بمئات الآلاف. هذا سقف المنصة لا سقف الإضافة.
  • القواعد التجميلية الخاصة بمواقع بعينها مُهملة — يُستورَد العام فقط.
  • فيسبوك ويوتيوب هدفان متحركان. سيغيّران البنية وستحتاج الوحدات صيانة.
  • الاختبارات تغطي نواة الكشف فقط، لا التكامل مع صفحة حقيقية.

إن لم تعمل

فعّل Debug: outline only من الإضافة — سترسم إطاراً أحمر حول ما تكتشفه بدل إخفائه. ثم في Console:

document.querySelectorAll('[data-abp-blocked]').length
  • رقم أكبر من صفر → الكشف يعمل، والمشكلة في الإخفاء
  • صفر → الكشف يفشل، والمحددات تحتاج تحديثاً

وللتشخيص الأعمق، جرّب قراءة نص أي عنصر يدوياً:

ABPDetect.readLabel(document.querySelector('SELECTOR'),
  { doc: document, getStyle: getComputedStyle, SHOW_TEXT: NodeFilter.SHOW_TEXT })

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages