التوثيق

أضف الوكيل إلى صفحة التسجيل، واستدعِ نقطة نهاية واحدة من خادمك، ثم تصرّف وفق القرار.

بداية سريعة

1. أضف الوكيل إلى صفحة التسجيل

يجمع إشارات الجهاز ويضع رمز زائر قصير العمر في حقل مخفي اسمه attrelix_visitor داخل كل نموذج في الصفحة. ويوفّر أيضًا window.attrelix.token() لتطبيقات الصفحة الواحدة.

<script src="https://attrelix.com/v1.js?v=0bbe74b52d" data-key="pk_live_…" async></script>

// single-page apps: wait for the token before you submit
const visitor = await window.attrelix.token();

2. افحص التسجيل من خادمك

أرسل البريد وعنوان IP للعميل ورمز الزائر مع مفتاحك السري. اختياري: external_id (معرّف المستخدم لديك) وuser_agent وcard_fingerprint (مثل card.fingerprint من Stripe).

curl https://attrelix.com/v1/check \
  -H "Authorization: Bearer $ATTRELIX_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"email":"jdoe+7@gmail.com","ip":"203.0.113.9","visitor":"vt1.…"}'
# Python
r = requests.post("https://attrelix.com/v1/check", timeout=3,
    headers={"Authorization": f"Bearer {SECRET}"},
    json={"email": email, "ip": ip, "visitor": form["attrelix_visitor"]})
decision = r.json().get("decision", "allow") if r.ok else "allow"

3. تصرّف وفق القرار

allow: امنح الأرصدة المجانية. review: اطلب شيئًا يكلّف المزرعة مالًا — بطاقة أو رقم هاتف — أو امنح أرصدة أقل. block: ارفض الحساب أو الأرصدة. وإذا فشل الاستدعاء فاسمح: لا تحجب مستخدمين حقيقيين بسببنا أبدًا.

المفاتيح والرموز

  • المفتاح العام (pk_live_…): عام بطبيعته. يوضع في صفحتك ولا يستطيع سوى جمع الإشارات، من المصادر التي تسمح بها في لوحة التحكم.
  • المفتاح السري (sk_live_…): للخادم فقط. يشغّل الفحوص ويقرأ النتائج. لا نخزّن إلا بصمته: انسخه عند إنشائه.
  • رمز الزائر: موقّع منا، صالح 15 دقيقة ولفحص واحد، ومرتبط بمشروعك. الرمز المستخدم مرتين، أو الآتي من شبكة غير شبكة التسجيل، يرفع الدرجة.

POST /v1/check

جسم الطلب (JSON). أرسل واحدًا على الأقل من email أو ip أو visitor.

emailالعنوان الذي كتبه المستخدم.
ipعنوان IP للعميل في طلب التسجيل (لا عنوان خادمك).
visitorقيمة attrelix_visitor من النموذج.
user_agentترويسة User-Agent لطلب التسجيل.
external_idمعرّف الحساب لديك إن كان موجودًا.
card_fingerprintبصمة بطاقة، عند إضافة بطاقة أثناء التسجيل.

الاستجابة

قيمة decision هي allow أو review أو block. وscore من 0 إلى 100: مجموع نقاط الأسباب بحد أقصى. لكل سبب رمز ثابت يمكنك تسجيله أو عرضه.

{
  "id": "chk_3fJ8kQ2mN7pX1aZb",
  "decision": "block",
  "score": 100,
  "reasons": [
    { "code": "linked_accounts_10", "points": 45, "detail": "14" },
    { "code": "alias_of_existing", "points": 30, "detail": "3 variants of jdoe@gmail.com" },
    { "code": "datacenter_ip", "points": 25, "detail": "aws" }
  ],
  "email":   { "normalized": "jdoe@gmail.com", "disposable": false, "relay": false, "mx": "yes", … },
  "network": { "ip": "3.88.0.1", "type": "datacenter", "provider": "aws", "signups_24h": 2 },
  "device":  { "id": "dev_9c1e…", "token": "valid", "browser": "Firefox 144", "flags": ["canvas_noise"] },
  "linked":  { "accounts": 14, "by_device": 12, "by_card": 0, "cluster": "cl_7q2f…" },
  "latency_ms": 38
}

الأخطاء

تأتي الأخطاء بصيغة JSON: {"error": code, "message": text}.

401مفتاح مفقود أو مجهول أو ملغى أو من نوع خاطئ (مفتاح pk_ على /v1/check).
400الجسم ليس JSON أو لا يحتوي email ولا ip ولا visitor.
402نفدت فحوص الخطة الشهرية.
403عمل الوكيل على مصدر لم تسمح به.
429طلبات كثيرة جدًا من عنوان واحد.

احتساب الدرجة

تُجمع النقاط بحد أقصى 100. الافتراضي: مراجعة من 50 وحظر من 80 — وكلاهما قابل للتعديل. صندوق البريد المؤقت وحده يكفي للمراجعة؛ ولا تبلغها أي إشارة جهاز أو شبكة بمفردها.

الرمزالنقاطالمعنى
invalid_email+50العنوان غير صالح
disposable_email+50نطاق بريد مؤقت
no_mx+35النطاق لا يستقبل البريد
alias_of_existing+30كتابة أخرى لصندوق بريد سبق رصده
relay_email+10عنوان خدمة إعادة توجيه
plus_tag+5وسم + أو نقاط Gmail
tor_exit+35عقدة خروج Tor
datacenter_ip+25عنوان مركز بيانات أو سحابة
vpn_ip+20عنوان VPN
ip_signups_24h+103+ حسابات من هذا العنوان خلال 24 ساعة
ip_signups_24h_high+2510+ حسابات من هذا العنوان خلال 24 ساعة
subnet_burst+1510+ حسابات من هذه الشبكة الفرعية خلال ساعة
automation_webdriver+40أتمتة عبر WebDriver
headless_browser+40متصفح بلا واجهة
automation_cdp+10أتمتة عبر بروتوكول DevTools (Puppeteer، Playwright)
antidetect_browser+15متصفح مضاد للكشف (عدة تمويهات معًا)
headless_viewport+15نافذة بلا شريط متصفح أو تبويبات
webgl_os_mismatch+25بطاقة الرسوميات تعود لنظام تشغيل آخر
memory_cpu_mismatch+10عدد الأنوية والذاكرة غير متوافقين
no_human_interaction+30أُرسل فورًا دون كتابة أو حركة فأرة أو لمس
instant_signup+25اكتمل تعبئته وإرساله خلال ثانية من تحميل الصفحة
os_mismatch+20نظام التشغيل يناقض نفسه
browser_mismatch+20المتصفح يناقض وكيل المستخدم الخاص به
fonts_mismatch+15الخطوط لا تطابق النظام المُعلن
canvas_noise+15بصمة canvas عشوائية
software_renderer+15رسوميات برمجية (آلة افتراضية أو بلا واجهة)
zero_window+15نافذة بلا أبعاد
permissions_mismatch+15حالات أذونات متناقضة
no_plugins+10Chrome لسطح المكتب بلا إضافات
no_languages+10متصفح بلا لغات
utc_timezone+5الساعة على UTC
token_missing0–100لا يوجد رمز زائر (لم يُحمَّل الوكيل أو حُجب)
token_invalid+30رمز زائر مزوّر أو لمشروع آخر
token_replayed+35رمز زائر مستخدم من قبل
token_expired+10رمز زائر منتهي الصلاحية
token_ip_mismatch+8رمز جُمع على شبكة أخرى
token_ua_mismatch+15رمز جمعه متصفح آخر
linked_accounts+15مرتبط بحسابات أخرى
linked_accounts_3+30مرتبط بـ 3+ حسابات
linked_accounts_10+45مرتبط بـ 10+ حسابات
shared_card+30بطاقة استخدمها حساب آخر
device_burst+155+ فحوص من هذا الجهاز خلال ساعة

مصادر البيانات

نطاقات البريد المؤقت: مشروع disposable-email-domains (CC0) ومشروع disposable/disposable-email-domains (MIT)، تُحدَّث يوميًا. نطاقات مراكز البيانات: القوائم المنشورة من AWS وGoogle Cloud وOracle Cloud وDigitalOcean وLinode. Tor: قائمة عُقد الخروج من Tor Project، تُحدَّث كل ساعة.

الآن: 98,644 نطاق بريد مؤقت و21,665 نطاق عناوين.