AD تقنيًا: كيف يعمل وكيف تدمجه
كل ما تحتاجه الحملة يعمل: الحسابات والحملات والتصاميم والمساحات ومحرك العرض واللوحة والتقارير. تُولَّد هذه الصفحة من الشيفرة نفسها التي تعرض الإعلانات — كل حد وماكرو وحدث ومسار أدناه يُقرأ من المصدر في كل بناء، ولا يُكتب شيء يدويًا.
ما هو AD ولمن هو
AD خادم إعلانات مباشر: لا مزاد ولا صندوق أسود. يبيع الناشر المساحة الإعلانية لموقع يديره أصلًا؛ ويختار المعلن المساحات بالضبط ويضبط الاستهداف ويطلق حملته. يمكن لحساب واحد أن يؤدي أيًّا من الدورين — أو كليهما.
المعلنون
أنشئ حملة، وأضف تصاميم، واجتز المراجعة، واشترِ مساحة من المعرض، ثم تابع وصول الظهور والنقرات إلى التقارير.
الناشرون
سجّل موقعًا، وعرّف مساحات لها حجم ونموذج بيع وسعر، والصق وسمًا واحدًا، واحتفظ بـ80% من كل بيع. عرض إعلاناتك على مساحاتك الخاصة مجاني.
الدوران معًا
يصبح حساب المعلن ناشرًا لحظة تسجيله موقعًا؛ ولا يُكرَّر شيء. تعرض اللوحة تبويبات كل دور تملكه.
كيف تدخل
سجّل الدخول في forhosting.com واختر «إدارة AD الخاص بي» من قائمة حسابك. تُفتح اللوحة بـجلسة قصيرة — بيانات اعتماد تنتهي خلال دقائق (لا تتجاوز 60 دقيقة أبدًا) ولا تترك أي مفتاح دائم في المتصفح. عند انتهائها، افتحها مجددًا من القائمة نفسها.
للتكاملات، أنشئ مفتاح API من اللوحة (الملف الشخصي) أو عبر POST /tenants/:id/keys. نطاقان: tenant (وصول كامل إلى حسابك) وread (قراءة فقط، للوحات المتابعة والروبوتات). يُعرض المفتاح مرة واحدة؛ إن ضاع فأنشئ آخر وألغِ القديم.
يستطيع فريقنا فتح لوحتك «كعميل» لمساعدتك: تدوم تلك الجلسة 15 دقيقة على الأكثر وتحمل اسم من فتحها. لا تشغّل الشركة حسابك أبدًا بمفتاح دائم.
الحملات والاستهداف
الحملة هي الحاوية: الاسم والتواريخ والميزانيات الاختيارية والاستهداف الذي تتشاركه تصاميمها. تولد بحالة draft؛ وأنت من يجعلها active أو يوقفها مؤقتًا أو ينهيها. لا تُعرض إلا التصاميم النشطة لحملة نشطة — وإيقاف الحملة مؤقتًا يوقف العرض فورًا.
| المعيار | كيف يعمل |
|---|---|
| البلد والمنطقة والمدينة | قائمة بلدان؛ واختياريًا منطقة واحدة ومدينة واحدة. المدينة تستلزم منطقتها؛ والمنطقة تستلزم بلدها. إذا كان موقع الزائر مجهولًا والحملة تطلب استهدافًا جغرافيًا، فلا يُعرض الإعلان — لا يُعرض بالخطأ أبدًا. |
| لغة المتصفح | قائمة برموز اللغات (حتى 30) التي يعلنها متصفح الزائر — وليست بالضرورة لغة الموقع. الزائر الذي لا ترد لغته في القائمة لا يُعرض له شيء، لذا اترك حملة واحدة بلا لغات: فهي تلتقط كل من عداهم. |
| الجهاز | any أو mobile أو desktop. |
| نظام التشغيل | قائمة من: iPhone, iPad, iPod, Windows, Android, BlackBerry, Ubuntu, Linux, CrOs, Mac OS X. |
| المُحيل | يجب أن تحتوي الصفحة التي جاء منها الزائر على النص الذي تحدده (دون تمييز حالة الأحرف). |
| التواريخ | بداية الحملة ونهايتها. يمكن لكل تصميم أن يحمل تواريخه الخاصة أيضًا؛ والنافذة الفعلية هي تقاطع الاثنين. |
| حد التكرار | لكل تصميم: N ظهورًا على الأكثر لكل زائر، تُحسب في cookie من الطرف الأول يعيش 3 أيام. |
| الحدود الصارمة | لكل تصميم: إجمالي الظهور، والظهور في اليوم، وإجمالي النقرات. عند بلوغ حد يتوقف عرض التصميم خلال 5 دقائق. |
من بين التصاميم المؤهلة يختار المحرك عشوائيًا، موزونًا بالوزن الذي تمنحه لكل تصميم. التصميم الذي له حد تسليم يخضع لـضبط الوتيرة: كل 5 دقائق يُعاد ضبط وزنه كي تتوزع الميزانية على أيام الحملة بدل أن تحترق صباحًا. ضبط الوتيرة يبطئ فقط — ولا يختلق حركة أبدًا.
لا يُعرض التصميم إلا في مساحة له فيها طلب مدفوع (انظر «شراء المساحات»). الحملة والتصميم والمساحة والطلب كلها مرئية في اللوحة (الحملات، التصاميم، شراء المساحات).
التصاميم: ستة أنواع ووسم واحد
لكل تصميم رابط نقر وحجم ثابت اختياري ووزن. الحدود في هذا الجدول هي التي تفرضها واجهة API عند الرفع — تُقرأ من الشيفرة ولا تُكتب هنا.
| النوع | ما ترفعه | الحدود |
|---|---|---|
image · صورة | ملف واحد: PNG, JPEG, GIF, WebP, AVIF. | حتى 2 MB و2000×1800 بكسل. إذا أعلن التصميم حجمًا ثابتًا فيجب أن يكون الملف بذلك الحجم بالضبط. |
text · رابط نصي | عنوان ونص اختياري، بلا ملف. | يُعرض كرابط بأسلوب المساحة نفسها. |
html5 · HTML5 | ملف ZIP يحوي index.html في الجذر (أو داخل مجلد واحد)، أو ملف HTML واحد. | ZIP حتى 10 MB. يُعرض داخل iframe بسياسة محتوى صارمة: لا طلبات إلى أصول أخرى. |
video · فيديو | ملف واحد: MP4, WebM. صورة غلاف وزر صوت اختياريان. | حتى 30 MB. يُشغَّل صامتًا وتلقائيًا في مشغّلنا؛ وتُسجَّل البداية والنهاية. |
vignette · إعلان بيني | صورة (بقواعد image نفسها) أو فيديو. | يُعرض كطبقة بملء الشاشة عندما ينقر الزائر رابطًا من مشغّلات المساحة؛ ويُحتسب الظهور عند فتح الطبقة. |
script · سكربت | HTML/JS من عندك مع الماكروهات أدناه، إضافة إلى 5 صور كحد أقصى. | فقط في المساحات التي تسمح بصيغة script. إنها شيفرة طرف ثالث تعمل في صفحة الناشر، لذا المراجعة اليدوية هي الحاجز الوحيد — ولا تُتخطى أبدًا. |
عقد HTML5
يُحمَّل index.html الخاص بك داخل iframe مع وجهة النقر في سلسلة الاستعلام باسم clickTag. اقرأه واستخدمه كـhref لمنطقتك القابلة للنقر — ذلك الرابط موقَّع ويحتسب النقرة؛ أما الرابط المكتوب يدويًا فلا يُحتسب.
// index.html — the click goes where the engine says
var clickTag = new URLSearchParams(location.search).get("clickTag");
document.getElementById("ad").href = clickTag;
إذا احتاج تصميمك إلى أن يكبر، فأخبر الصفحة بارتفاعه الحقيقي عبر postMessage. يخبر الوسم التصميم أيضًا بعرض الحيّز عند التحميل وعند كل تغيير للحجم، ويرسل visible أول مرة يدخل فيها الحيّز نطاق الرؤية — وهي اللحظة المناسبة لبدء حركة. تُطبَّق الارتفاعات حتى 10000 بكسل.
// creative → page: ask for the real height (applied up to 10000 px)
parent.postMessage({ fh: "resize", nh: document.documentElement.scrollHeight }, "*");
// page → creative: { fh: "size" | "visible" }
window.addEventListener("message", function (ev) {
if (ev.data && ev.data.fh === "visible") { /* start your animation */ }
});
تصميم بسيط يفعل الأمرين معًا، جاهز للرفع كما هو: نزّل ملف ZIP النموذجي
ماكروهات تصاميم السكربت
في تصميم script يستبدل المحرك هذه العناصر النائبة عند نشر المساحة. قالب اللوحة هو الشيء نفسه مع عناصر نائبة إضافية تملؤها في نموذج.
| الماكرو | يُستبدل بـ |
|---|---|
[CLICKTAG] · [TRACKLINK] | رابط النقر الموقَّع — استخدمه كـhref. بدونه لا تُحتسب النقرة. |
[LINK] | رابط الوجهة الخام، للشيفرة التي تحتاجه دون المتتبّع. |
[TARGET] | _blank أو _self حسب إعداد التصميم. |
[ID] | معرّف التصميم. |
[TITLE] · [TITOLO] | عنوان التصميم (بعد تهريب HTML). |
[IMG0] … [IMG4] | رابط كل صورة مرفوعة، بالترتيب. |
[TIMESTAMP] · [RANDOM] | ختم زمني ورقم عشوائي يُثبَّتان عند نشر المساحة — لتجاوز التخزين المؤقت لبكسلاتك الخاصة. |
تتبّع الأطراف الثالثة والموافقة
يمكن لأي تصميم أن يحمل شيفرة تتبّع (بكسل أو سكربت من مزوّد قياس). تُخرَج بعد الإعلان مع تحويل كل src إلى data-src، فلا يُحمَّل شيء حتى يسمح الوسم بذلك.
إذا حددت معرّف المزوّد في IAB TCF v2، فلا تُحمَّل الشيفرة إلا بعد موافقة الزائر على ذلك المزوّد، مع تعبئة ${GDPR} و${GDPR_CONSENT_n}. ينتظر الوسم مدير الموافقة في الموقع حتى 10 ثوانٍ؛ ومن دون معرّف مزوّد تُحمَّل الشيفرة كعنصر عادي.
المراجعة اليدوية
يولد كل تصميم بحالة en_revision ويراجعه شخص قبل أن يُعرض. بعد الموافقة تجعله active أو paused؛ وعند الرفض ترى السبب ويمكنك التعديل وإعادة الإرسال. لا يصل إلى الزائر أي شيء من تصميم غير مُراجَع — لا الترميز ولا السكربت ولا شيفرة التتبّع.
تغيير رابط النقر أو المحتوى أو الملف في تصميم موافَق عليه يعيده إلى المراجعة: ما وُوفق عليه هو ما يُعرض، ولا شيء غيره أبدًا.
شراء المساحات
يعرض المعرض كل مساحة معروضة للبيع: الموقع والحجم والصيغ المقبولة ونموذج البيع والسعر الذي حدده الناشر. تختار مساحة، وتصميمًا بصيغة تقبلها المساحة، وميزانية، وتاريخ بداية. يستخدم التسعير والخصم المعادلة نفسها:
| النموذج | تدفع مقابل | تحصل على |
|---|---|---|
cpm | ألف ظهور | الظهور = الميزانية × 1000 / السعر |
cpc | نقرة | النقرات = الميزانية / السعر |
cpd | يوم | الأيام = الميزانية / السعر |
الحد الأدنى للطلب $5؛ ويرفض التسعير أي مبلغ أقل. الطلب شراء مسبق الدفع لحجم معين — يتحرك المال مرة واحدة عند الشراء. أرسل idempotencyKey فيعيد الطلب المتكرر الطلب نفسه بدل إنشاء طلب ثانٍ.
كيف تدفع
| الطريقة | كيف يعمل |
|---|---|
| رصيد الحساب | يُدفع الطلب في الاستدعاء نفسه من رصيدك في For Hosting. إذا لم يكفِ الرصيد بقي الطلب معلقًا ويشير الرد إلى شحن الرصيد؛ ويمكنك إعادة محاولة الدفع لاحقًا. |
| يدوي | يُنشأ الطلب معلقًا؛ ويعلّمه فريقنا مدفوعًا بعد استلام الدفع خارج اللوحة. ولا يُعرض حتى ذلك الحين. |
| إعلانات الدار | تصميمك على مساحتك: يولد الطلب مدفوعًا بتكلفة صفر. السجل نفسه، بلا مال. |
عند تعليم الطلب مدفوعًا، يُقيَّد 80% من سعره النهائي لناشر المساحة — على الطلب كاملًا لا بالتناسب مع التسليم. تُعاد المساحة للنشر فورًا ويبدأ عرض تصميمك في الدقيقة التالية.
المواقع والمساحات والوسم والمدفوعات
المواقع
سجّل موقعًا بنطاقه (كن ناشرًا). يولد معلقًا ويتحقق منه شخص قبل أن تستطيع مساحاته البيع — فالنطاق غير المُتحقق منه لا يستطيع كسب حصة. سحب موقع يبدأ فترة تهدئة مدتها 90 يومًا على النطاق: لا يستطيع أحد آخر تسجيله في أثنائها ووراثة سجله.
المساحات
المساحة هي الحيّز القابل للبيع: اسم، وحجم بالبكسل (أو -1 لعرض متكيّف)، والصيغ التي تقبلها، ونموذج بيع بسعره، وما إذا كانت معروضة في المعرض. يمكنك تعيين تصميم احتياطي خاص بك يُعرض حين لا يكون هناك مؤهل آخر — وهو يتجاوز الاستهداف والحدود.
يعمل سلوكان اختياريان في متصفح الزائر: التحديث التلقائي (طلب جديد كل N ثانية، بحد أدنى 5؛ التبويب المخفي لا يُحدَّث أبدًا، والحيّز الذي يعود فارغًا يحتفظ بالإعلان السابق) وتمرير المعاملات (تسافر سلسلة استعلام الصفحة مع النقرة إلى وجهة المعلن). تعلن المساحة البينية أيضًا أي الروابط تشغّل الطبقة — افتراضيًا p a, nav a, h2 a — والثواني قبل إمكان إغلاقها.
الوسم
الصقه حيث يجب أن يظهر الإعلان. معرّف المساحة من اللوحة (المواقع والمساحات). الوسم نفسه يعرض كل الصيغ التي تقبلها المساحة؛ والمساحة البينية تستخدم الوسم القياسي أيضًا.
القياسي (div وscript، غير متزامن):
<div data-fh-ad="zon_XXXXXXXXXXXXXXXXXXXXXXXX"></div>
<script src="https://api.ad.forhosting.com/ad-tag.js" async></script>
القديم، لأنظمة إدارة المحتوى التي لا تشغّل سكربتات غير متزامنة:
<script src="https://api.ad.forhosting.com/ad-serve?zone=zon_XXXXXXXXXXXXXXXXXXXXXXXX&mode=js"></script>
رابط نصي: عنوان URL يحتسب الظهور ويعيد التوجيه إلى المعلن:
https://api.ad.forhosting.com/ad-serve?zone=zon_XXXXXXXXXXXXXXXXXXXXXXXX&mode=link
الوسم يُحدِّث نفسه: لا يحمل رابطه رقم إصدار ولا يتغيّر أبدًا، لذا يصل أي تحسين من جانبنا إلى كل المواقع خلال نحو undefined دقيقة دون أن يعدّل أحد أي قالب (يقدّم اليوم v6، في ترويسة x-tag-version). ينتظر حتى تنتهي صفحتك من التحميل قبل أن يطلب أي شيء، فلا تزاحم الإعلانات محتواك أبدًا. علاماته الوحيدة في صفحتك هي الخاصية data-fh-ad ومعرّف الطبقة — جرى فحصها مقابل قوائم حجب الإعلانات الشائعة دون أي تطابق. وتستخدم حدود التكرار كوكي من الطرف الأول.
المدفوعات
تتراكم حصتك البالغة 80% من كل طلب مدفوع في اللوحة (المدفوعات). عندما يبلغ المتراكم $10، اطلب الدفع بالطريقة المحددة في ملفك (paypal, bank, other)؛ يدفع فريقنا خارج اللوحة ويسجّل المرجع.
الحالات: accrued ← requested ← processing ← paid؛ ويعود إليك الدفع الفاشل مع السبب كي تطلبه مجددًا ببيانات مصحَّحة.
التقارير
يُحتسب الظهور والنقرات وبداية/نهاية الفيديو عند الحافة، مع كل طلب. قبل الاحتساب تُرشَّح الحركة: الزواحف المعروفة بوكيل المستخدم، وشبكات مراكز البيانات، والطلبات ذات درجة روبوت منخفضة جدًا، وأي IP يكرر الطلب نفسه خلال 2 ثانية. الطلب المُرشَّح يحصل مع ذلك على إعلانه أو إعادة توجيهه — ما يُحمى هو العدّاد فقط.
كل 5 دقائق تُجمَّع الأعداد في صفوف يومية لكل تصميم ومساحة ومضيف مُحيل. قد يتأخر اليوم الجاري بهذا المقدار؛ أما الأيام المُقفلة فلا تتغير أبدًا.
تعرض اللوحة (التقارير) الإجماليات وسلسلة يومية، وCTR (النقرات ÷ الظهور × 100) وeCPM (القيمة المُسلَّمة × 1000 ÷ الظهور)، لجهة المعلن أو جهة الناشر، وقائمة بالأعلى حسب التصميم أو المساحة أو الحملة أو الموقع أو مضيف المُحيل. يُحفظ مضيف المُحيل فقط، لا عنوان URL أبدًا.
مرجع واجهة API
العنوان الأساسي https://api.ad.forhosting.com. أرسل مفتاحك كرمز Bearer؛ والأجسام والردود بصيغة JSON. لكل رد الشكل {"success":true,"data":…} أو {"success":false,"error":{"code","message"}} مع حالة HTTP المطابقة.
curl https://api.ad.forhosting.com/me \
-H "Authorization: Bearer ads_ten_…"
نطاقات بيانات الاعتماد
| النطاق | ما يستطيع فعله |
|---|---|
session | ما تستخدمه اللوحة: حسابك، وصول كامل، ينتهي خلال دقائق. تصدره البوابة عند فتح اللوحة. |
tenant | حسابك، وصول كامل، دائم. لتكاملاتك. |
read | حسابك، قراءة فقط. للوحات المتابعة والروبوتات التي يجب ألا تغيّر شيئًا. |
system | الشركة: أي حساب (مع tenantId صريح)، والمراجعات، والتحقق من المواقع، والمدفوعات اليدوية، والصرف. يستخدم الفريق جلسة system تنتهي هي الأخرى. |
بيانات اعتماد tenant أو read أو session تعمل دائمًا على حسابها — ويُتجاهل أي tenantId يرسله العميل. المعرّف الذي يخص شخصًا آخر يعيد 404 لا 403: لا تؤكد واجهة API وجوده أبدًا.
المسارات
كل مسار تعلنه الخدمة، مع النطاق الذي يطلبه الموجّه — مشتق من الموجّه نفسه في كل بناء.
| الطريقة | المسار | النطاق |
|---|---|---|
| GET | / | عام |
| GET | /ad-serve | عام |
| GET | /ad-click | عام |
| GET | /ad-video-event | عام |
| GET | /ad-a/* | عام |
| GET | /ad-p/* | عام |
| GET | /ad-preview/* | عام |
| GET | /ad-tag.js | عام |
| POST | /tenants | system |
| GET | /tenants | system |
| GET | /tenants/:id | أي |
| PATCH | /tenants/:id | كتابة |
| POST | /tenants/:id/sessions | system |
| POST | /sessions/staff | system |
| DELETE | /sessions/self | أي |
| DELETE | /sessions/:id | system |
| GET | /me | أي |
| POST | /tenants/:id/keys | كتابة / system |
| GET | /tenants/:id/keys | قراءة / system |
| DELETE | /tenants/:id/keys/:keyId | كتابة / system |
| GET | /me/payout-profile | قراءة |
| PUT | /me/payout-profile | كتابة |
| POST | /campaigns | كتابة |
| GET | /campaigns | قراءة |
| GET | /campaigns/:id | قراءة |
| PATCH | /campaigns/:id | كتابة |
| DELETE | /campaigns/:id | كتابة |
| POST | /campaigns/:id/duplicate | كتابة |
| POST | /creatives | كتابة |
| GET | /creatives | قراءة |
| GET | /creatives/:id | قراءة |
| PATCH | /creatives/:id | كتابة |
| DELETE | /creatives/:id | كتابة |
| PUT | /creatives/:id/asset | كتابة |
| POST | /creatives/:id/duplicate | كتابة |
| POST | /creatives/bulk | كتابة |
| GET | /moderation/queue | system |
| GET | /moderation/preview-url/:id | أي |
| POST | /creatives/:id/approve | system |
| POST | /creatives/:id/reject | system |
| POST | /creatives/:id/emergency-block | system |
| POST | /sites | كتابة |
| GET | /sites | قراءة |
| GET | /sites/pending | system |
| GET | /sites/:id | قراءة |
| PATCH | /sites/:id | كتابة |
| DELETE | /sites/:id | كتابة |
| POST | /zones | كتابة |
| GET | /zones | قراءة |
| GET | /zones/:id | قراءة |
| PATCH | /zones/:id | كتابة |
| DELETE | /zones/:id | كتابة |
| GET | /zones/:id/tag | قراءة |
| GET | /zones/:id/quote | أي |
| POST | /zones/:id/publish | system |
| GET | /marketplace | أي |
| POST | /checkout | كتابة |
| GET | /orders | قراءة |
| GET | /orders/:id | قراءة |
| GET | /orders/pending | system |
| POST | /orders/:id/pay | كتابة |
| POST | /orders/:id/mark-paid | system |
| GET | /payouts | قراءة |
| GET | /payouts/pending | system |
| POST | /payouts/:id/request | كتابة |
| POST | /payouts/:id/status | system |
| POST | /payouts/:id/mark-paid | system |
| GET | /stats | قراءة |
| GET | /stats/top | قراءة |
| GET | /settings | أي |
| PUT | /settings | system |
| GET | /templates | أي |
| POST | /templates | كتابة |
| PATCH | /templates/:id | كتابة |
| DELETE | /templates/:id | كتابة |
| POST | /templates/:id/render | أي |
| GET | /geo/countries | أي |
| GET | /geo/regions | أي |
عام: بلا بيانات اعتماد — مسار العرض · أي: أي بيانات اعتماد صالحة، على حسابها · قراءة: tenant أو session أو read · كتابة: tenant أو session (يُرفض read) · system: الشركة فقط
أخطاء يجدر معرفتها: 401 unauthorized (بيانات اعتماد مفقودة أو منتهية)، 403 forbidden (النطاق لا يستطيع ذلك)، 404 not_found، 400 bad_request مع السبب في الرسالة، 409 conflict (انتقال حالة غير مسموح)، 402 insufficient_balance عند دفع طلب، و503 payments_disabled إذا كانت المبيعات متوقفة.
افتح لوحتك
سجّل الدخول في forhosting.com واختر «إدارة AD الخاص بي» من قائمة حسابك. يضيف الناشرون موقعًا ويحصلون على وسمهم؛ وينشئ المعلنون حملة ويشترون مساحة.
أسئلة تقنية
هل يمكنني تشغيل حملة حقيقية اليوم؟
نعم — من البداية إلى النهاية: أنشئ الحملة والتصميم في اللوحة، واجتز المراجعة، واشترِ مساحة، وسيعرضها الوسم مع التتبع. على مواقعك الخاصة يُفعَّل فورًا ومجانًا.
من أين أحصل على الوسم؟
اللوحة ← المواقع والمساحات ← الحصول على الوسم. لكل مساحة وسمها؛ النسخة القياسية سطران: div وscript.
لماذا لم يُعرض تصميمي فورًا؟
كل تصميم يمر بمراجعة يدوية قصيرة قبل عرضه — لحماية المواقع التي يظهر فيها إعلانك. وتنطبق أيضًا قواعد التدوير والحدود: التصميم المحدود أو المضبوط الوتيرة يتخطى بعض الطلبات عمدًا، والمساحة المعدَّلة تحتاج حتى دقيقة لتتحدث عند الحافة.