// واجهة برمجة المطورين

SafeBrowz Detection API

كشف التصيد الاحتيالي واستنزاف المحافظ لأي رابط. ادفع لكل طلب بـ USDC على Solana أو Base عبر x402 — بدون تسجيل. يحصل المستخدمون ذوو الحجم العالي على مفتاح Bearer واشتراك شهري ثابت.

// لوكلاء الذكاء الاصطناعي

ملف مهارة جاهز للإضافة

هل تبني وكيل Claude أو ChatGPT Custom GPT أو قاعدة Cursor أو أي تطبيق يعتمد على نماذج اللغة؟ الصق ملف المهارة في قواعد وكيلك وسيعرف متى وكيف يستدعي الواجهة البرمجية.

/skill

ملف مهارة الوكيل (markdown)

تعريف كامل للمهارة مع المحفزات وتدفق الدفع وتفسير الإشارات وأمثلة الكود. جاهز للإضافة إلى أي إطار عمل للوكلاء.

تنزيل skill.md
/openapi

مواصفة OpenAPI 3.1

مخطط نقاط النهاية قابل للقراءة آليًا. يُستخدم مع ChatGPT Actions أو Postman أو Insomnia أو أي مولّد SDK.

عرض openapi.json
/llms

وثائق صديقة لنماذج اللغة

مرجع نصي كامل محسّن لزواحف الذكاء الاصطناعي ونوافذ سياق الوكلاء. يتضمن إرشادات الاستشهاد.

عرض api-llms.txt

ملف بيانات الإضافة في /.well-known/ai-plugin.json

// الأسعار

سعر واحد. بدون طبقات.

$0.001

لكل طلب

ادفع بـ USDC على شبكة Solana أو Base الرئيسية. بدون اشتراك ولا التزام. النتائج المخزّنة مؤقتًا تُحسب بنفس السعر — لتبسيط التكامل وتغطية البنية التحتية.

فحص كامل

مساوٍ للإضافة

كل إشارة يكشفها امتداد متصفح SafeBrowz — التصيد الاحتيالي للبيانات، pastejacking، ClickFix، استنزاف المحافظ، انتحال الهوية التجارية، و18 إشارة أخرى — يعيدها الـ API. لا اختصار للروابط فقط.

500+

علامة تجارية مُتتبَّعة

يشمل المحافظ (MetaMask، Phantom، Ledger، Trezor)، البورصات (Binance، Coinbase، OKX)، خدمات الدفع (PayPal، Venmo، Stripe)، والعلامات التجارية العالمية الكبرى.

// جربه الآن

شغّل تدفق x402 الكامل في متصفحك

ربط أي محفظة، الصق رابطًا، انقر اختبار. ادفع 0.001 USDC على Solana أو Base، أو 0.00001 SOL كبديل Solana أصلي. يعمل مع أي محفظة SPL أو EVM.

اختر سلسلة أدناه — يبقى السعر ثابتًا.

تحتاج إلى بعض SOL على Solana، أو USDC + ETH للغاز على Base. لا استرداد — الدفع على السلسلة.

// البدء السريع

أو جرّبه بـ curl في 30 ثانية

كل طلب يستلزم دفعة x402. الاستدعاء الأول يعيد 402 مع تعليمات الدفع. ادفع، ثم أعد المحاولة مع توقيع المعاملة.

الخطوة 1 — احصل على nonce من 402

curl -s -X POST https://api.safebrowz.com/v1/detect \
  -H "Content-Type: application/json" \
  -d '{"url":"https://app.trezor-io.us.com/"}'

الاستجابة (402)

اختر أي خيار داخل payment أو payment.alternatives. المدخل الأساسي هو Solana USDC؛ البدائل تشمل Solana SOL وBase USDC.

{
  "status": 402,
  "error": "payment_required",
  "payment": {
    "amount": "0.001",
    "token": "USDC",
    "token_mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "chain": "solana",
    "recipient": "FLQyppmJYbvQvEPAB4Mv8ZGmxkSXmXUwMACeJ79kdozW",
    "nonce": "ed548e77-719f-4f13-9f01-32dc8ed4e213",
    "memo_format": "safebrowz:ed548e77-719f-4f13-9f01-32dc8ed4e213",
    "alternatives": [
      { "token": "SOL",  "amount": "0.00001", "chain": "solana", "nonce_binding": "memo",   "memo_format": "safebrowz:..." },
      { "token": "USDC", "amount": "0.001",   "chain": "base",   "chain_id": 8453,
        "token_contract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "recipient": "0xf3bc3a04646F1D721992AeDC07c98FC52FdFC358",
        "nonce_binding": "eip191",
        "sign_message": "safebrowz:ed548e77-719f-4f13-9f01-32dc8ed4e213" }
    ]
  }
}

الخطوة 2أ — ادفع على Solana

حوّل 0.001 USDC (أو 0.00001 SOL) للمستلم مع مذكرة safebrowz:<nonce>. أي محفظة Solana أو واجهة spl-token تعمل. تنتهي صلاحية nonces في 10 دقائق.

spl-token transfer EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v 0.001 \
  FLQyppmJYbvQvEPAB4Mv8ZGmxkSXmXUwMACeJ79kdozW \
  --fund-recipient \
  --with-memo "safebrowz:ed548e77-719f-4f13-9f01-32dc8ed4e213"

الخطوة 2ب — ادفع على Base (محافظ EVM)

أرسل تحويل USDC ERC-20 قياسي على Base إلى المستلم، ثم وقّع رسالة nonce خارج السلسلة. تفتقر Base إلى حقل مذكرة أصلي، لذا يستخدم ربط nonce توقيع EIP-191 personal_sign لـ safebrowz:<nonce>. يجب أن يرتد التوقيع إلى المحفظة التي دفعت.

// viem / ethers pseudocode
const txHash = await wallet.writeContract({
  address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
  abi: erc20Abi, functionName: "transfer",
  args: [ "0xf3bc3a04646F1D721992AeDC07c98FC52FdFC358", 1000n ], // 0.001 USDC (6 dec)
});
const walletSig = await wallet.signMessage({
  message: "safebrowz:ed548e77-719f-4f13-9f01-32dc8ed4e213",
});

الخطوة 3 — أعد المحاولة مع الإثبات

لـ Solana، أرسل توقيع المعاملة فقط. لـ Base، أرسل أيضًا توقيع المحفظة EIP-191 وعيّن X-402-Chain: base.

# Solana
curl -s -X POST https://api.safebrowz.com/v1/detect \
  -H "Content-Type: application/json" \
  -H "X-402-Signature: <your_tx_signature>" \
  -H "X-402-Nonce: ed548e77-719f-4f13-9f01-32dc8ed4e213" \
  -d '{"url":"https://app.trezor-io.us.com/"}'

# Base
curl -s -X POST https://api.safebrowz.com/v1/detect \
  -H "Content-Type: application/json" \
  -H "X-402-Chain: base" \
  -H "X-402-Signature: <tx_hash>" \
  -H "X-402-Wallet-Sig: <eip191_signature>" \
  -H "X-402-Nonce: ed548e77-719f-4f13-9f01-32dc8ed4e213" \
  -d '{"url":"https://app.trezor-io.us.com/"}'

الاستجابة (200)

{
  "verdict": "danger",
  "trust_score": 5,
  "brand": "Ledger",
  "confidence": 0.95,
  "reason": "Fake Ledger Live login page - potential phishing and crypto scam",
  "threat_types": ["brand_impersonation", "crypto_scam", "credential_phishing"],
  "signals": {
    "brand_impersonation": true,
    "credential_phishing": true,
    "crypto_scam": true,
    "no_contact_info": true,
    "domain_mismatch": true,
    "wallet_drainer": false,
    "seed_phrase_phishing": false,
    "fake_captcha": false,
    "pastejacking": false,
    "tech_support_scam": false
    // ...remaining signals (all booleans) omitted for brevity
  },
  "details": {
    "matched_brand": "Ledger",
    "official_domain": "ledger.com",
    "domain_matches_brand": false,
    "target_country": "Global",
    "page_language": "English"
  }
}

trust_score هو درجة ثقة بسيطة من 0 إلى 100 (100 = آمن، 0 = احتيال). confidence هو مدى يقيننا من الحكم نفسه — بالنسبة لحكم danger، 0.95 تعني "نحن متأكدون 95% بأن هذا احتيال"، وليس "مزيف بنسبة 95%."

// التكامل

عملاء برمجيون كاملون

انسخ أحدها، أضف محفظة، وانتهيت. كل مثال يتولى تدفق x402 كاملًا من البداية للنهاية: الاستدعاء الأولي، تحليل تحدي 402، الدفع على السلسلة، إعادة المحاولة مع رأس X-PAYMENT. يمكن خلط اللغات — الـ API متطابق بغض النظر عن العميل.

TypeScript + viem (Base)

عميل بـ ~45 سطرًا يغطي الرحلة الكاملة على Base mainnet. يستخدم viem لتحويل USDC + توقيع EIP-191 nonce.

import { createWalletClient, http, parseUnits, erc20Abi } from "viem";
import { base } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";

const USDC_BASE = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
const URL = "https://api.safebrowz.com/v1/detect";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const wallet  = createWalletClient({ account, chain: base, transport: http() });

export async function detect(target: string) {
  // 1. First call — expect 402
  const first = await fetch(URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ url: target }),
  });
  if (first.status !== 402) return first.json();
  const challenge = await first.json();
  const baseEntry = challenge.accepts.find((a: any) => a.network === "base");

  // 2. Pay USDC onchain to the configured receiver
  const txHash = await wallet.writeContract({
    address: USDC_BASE, abi: erc20Abi, functionName: "transfer",
    args: [baseEntry.payTo, parseUnits("0.001", 6)],
  });

  // 3. Sign the off-chain nonce binding (EIP-191 personal_sign)
  const walletSig = await wallet.signMessage({
    message: baseEntry.extra.sign_message_template,
  });

  // 4. Retry with the spec-compliant X-PAYMENT header
  const xPayment = Buffer.from(JSON.stringify({
    x402Version: 1, scheme: "exact", network: "base",
    payload: {
      txHash, walletSig,
      nonce: baseEntry.extra.sign_message_template.split(":")[1],
    },
  })).toString("base64");

  const verdict = await fetch(URL, {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-PAYMENT": xPayment },
    body: JSON.stringify({ url: target }),
  });
  return verdict.json();
}

Python + solana-py (Solana)

نفس التدفق على Solana. يستخدم solders لبناء keypair والمعاملة وتعليمة SPL-memo لربط nonce.

import base64, json, httpx, os
from solana.rpc.api import Client
from solders.keypair import Keypair
from solders.pubkey import Pubkey

USDC_MINT = Pubkey.from_string("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v")
rpc = Client("https://api.mainnet-beta.solana.com")
kp  = Keypair.from_base58_string(os.environ["SOLANA_SECRET"])

def detect(target: str) -> dict:
    # 1. Challenge
    r = httpx.post("https://api.safebrowz.com/v1/detect",
                   json={"url": target})
    if r.status_code != 402:
        return r.json()
    sol_entry = next(a for a in r.json()["accepts"] if a["network"] == "solana")

    # 2. Build USDC transferChecked + spl-memo binding the nonce
    memo = sol_entry["extra"]["memo_template"]   # "safebrowz:<nonce>"
    tx   = build_usdc_transfer_with_memo(
        payer=kp.pubkey(),
        receiver=Pubkey.from_string(sol_entry["payTo"]),
        amount_atomic=int(sol_entry["maxAmountRequired"]),
        memo_text=memo,
    )
    tx.sign([kp], rpc.get_latest_blockhash().value.blockhash)
    tx_sig = rpc.send_transaction(tx).value

    # 3. Retry with X-PAYMENT
    x_payment = base64.b64encode(json.dumps({
        "x402Version": 1, "scheme": "exact", "network": "solana",
        "payload": {"txSignature": str(tx_sig), "nonce": memo.split(":")[1]},
    }).encode()).decode()

    return httpx.post(
        "https://api.safebrowz.com/v1/detect",
        headers={"X-PAYMENT": x_payment},
        json={"url": target},
    ).json()

بدون إعداد — agentcash CLI

إذا كنت لا تريد بناء تدفق دفع خاص بك، فإن agentcash يتولى كامل عملية x402. يكشف 402، يوقّع ويبث الدفع، يعيد المحاولة مع الرأس المتوافق مع المواصفة، ويطبع الحكم. سطر واحد:

npx agentcash fetch https://api.safebrowz.com/v1/detect \
  --body '{"url":"https://trezor-support.com"}' \
  --network solana

يعمل على كلٍّ من --network solana و--network eip155:8453. يستخدم محفظة يديرها agentcash — أضف USDC وهو يعمل تلقائيًا.

أطر عمل الوكلاء — Claude, GPT, LangChain, MCP

يمكن لكل إطار عمل وكيل رئيسي تحميل ملف المهارة المنشور واستخدام واجهة الكشف كأداة دون أي كود تكامل يدوي:

# Claude Code / Claude Desktop
#   - Save /safebrowz-api.skill.md locally
#   - Add to your ~/.claude/skills/ directory
#   - Claude loads it automatically

# MCP server config (Claude Desktop, etc.)
#   - Point at the OpenAPI spec: https://api.safebrowz.com/v1/openapi.json
#   - MCP auto-generates a detect() tool

# LangChain
from langchain.tools import OpenAPIToolkit
from langchain.utilities.openapi import OpenAPISpec
spec = OpenAPISpec.from_url("https://api.safebrowz.com/v1/openapi.json")
toolkit = OpenAPIToolkit.from_llm_and_spec(llm, spec)

مصادقة Bearer للمؤسسات (تجاوز x402)

يمكن للمتكاملين ذوي الحجم العالي — تطبيقات المحافظ ومنصات الذكاء الاصطناعي ذات الملايين من المستخدمين — طلب مفتاح Bearer طويل الأمد. لا توقيع لكل استدعاء؛ مرّر المفتاح كرأس Authorization واحصل فورًا على استجابة 200 عادية. الفوترة شهرية عبر اشتراك USDC ثابت.

curl -X POST https://api.safebrowz.com/v1/detect \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -d '{"url":"https://example.com"}'

راسل info@safebrowz.com مع حجمك المتوقع (طلبات/دقيقة + الإجمالي الشهري) لتوفير مفتاح. الطبقة المعتادة هي 10,000 إلى 100,000 طلب في الدقيقة، بحد معدل لكل مفتاح حتى يكون معدل النقل الخاص بك معزولًا عن كل عميل مؤسسي آخر.

// المرجع

نقاط النهاية

POST/v1/detect

يعيد حكم احتيال/تصيد لرابط URL. يتطلب دفع x402.

جسم الطلب

{"url": "https://example.com"}

الاستجابة (200)

الحقلالنوعالوصف
verdictstringsafe / caution / danger
trust_scoreintegerدرجة ثقة من 0-100 (100 = آمن، 0 = احتيال)
brandstring / nullالعلامة التجارية المنتحَلة إن وُجدت (مثال: "Ledger"، "Trezor"، "PayPal")
confidencenumber0.0-1.0. مدى يقيننا من الحكم. ليس "نسبة الزيف."
reasonstringشرح مقروء للإنسان
threat_typesstring[]الفئات الرئيسية: wallet_drainer، seed_phrase_phishing، brand_impersonation، crypto_scam، crypto_airdrop_scam، credential_phishing، account_phishing، delivery_scam، government_impersonation، invoice_scam، tech_support_scam، fake_captcha، pastejacking
signalsobjectجميع أعلام 22 منطقي (تشمل domain_mismatch، no_contact_info، fake_urgency، too_good_prices، suspicious_payment، إلخ)
detailsobjectmatched_brand، official_domain، domain_matches_brand، target_country، page_language، tld، domain_age_days، matched_patterns
GET/v1/status

فحص صحة الخدمة. لا يتطلب دفعًا.

{"status": "ok", "version": "1.0.0", "chain": "solana"}
// رموز الأخطاء

الأخطاء

الحالةالخطأالمعنى
400missing_urlجسم الطلب لم يتضمن حقل url.
400invalid_urlالرابط مشوّه أو طويل جدًا أو يشير إلى IP خاص.
402payment_requiredلا توجد رؤوس دفع. الجسم يحتوي على تعليمات لجميع السلاسل المدعومة.
402payment_invalidتم توفير رؤوس الدفع لكن التحقق فشل. احصل على nonce جديد وأعد المحاولة. جسم الاستجابة يعيد إصدار تعليمات الدفع الكاملة.
409nonce_already_usedهذا الـ nonce استُخدم بالفعل. أعد المحاولة مع nonce جديد من 402.
429rate_limitedطلبات كثيرة جدًا في الدقيقة. أعد المحاولة بعد توقف.
// الأسئلة الشائعة

أسئلة شائعة

لماذا x402 بدلًا من مفاتيح API؟

بالنسبة لنقطة النهاية العامة، x402 تعني لا نماذج تسجيل، لا طبقات معدل، لا رسائل بريد للفوترة، لا تذاكر دعم. تدفع 0.001 USDC وتحصل على نتيجة. لا علاقة مطلوبة. بالنسبة لتطبيقات المحافظ ومنصات الذكاء الاصطناعي التي تخدم ملايين المستخدمين خلف وكيل، نُصدر مفاتيح Bearer مؤسسية عند الطلب (راجع سؤال الأسعار المؤسسية أدناه).

ما هو زمن الاستجابة؟

الأحكام المخزنة مؤقتًا تعود في 50-150 مللي ثانية. تطابقات نمط URL مماثلة. الروابط الجديدة التي تحتاج جلب الصفحة + مسح AI تستغرق عادةً 2-4 ثوانٍ من البداية للنهاية. التحقق من الدفع عبر Solana أو Base RPC يضيف ~300-500 مللي ثانية فوق ذلك، بغض النظر عن عمق المسح.

كيف يقارن هذا بامتداد المتصفح؟

كل إشارة يكشفها الامتداد — credential_phishing، pastejacking، fake_captcha (ClickFix)، wallet_drainer، no_contact_info، fake_urgency، و17 أخرى — يعيدها هذا الـ API. خط أنابيب الكشف الأساسي مشترك: ذاكرة تخزين مؤقت، قواعد URL، ثم مسح AI كامل للصفحة عند غياب التخزين المؤقت. تحصل على نفس trust_score، ونفس تحديد brand، ونفس كائن signals.

هل يمكنني طلب استرداد؟

لا استرداد. الدفع غير قابل للعكس بالتصميم (التسوية على السلسلة). إذا أعاد الـ API خطأ خادم 5xx، أعد المحاولة بنفس nonce — لا نستهلك nonces عند أعطال جانب الخادم.

هل تقدمون أسعارًا مؤسسية / بسعر ثابت؟

نعم. نوفر مفاتيح Bearer API طويلة الأمد لتطبيقات المحافظ ومنصات وكلاء AI وغيرها من المتكاملين ذوي الحجم العالي حيث التوقيع على السلسلة لكل استدعاء غير عملي. كل مفتاح له حد معدل خاص به (عادةً 10,000 إلى 100,000 طلب في الدقيقة) ويُفوتر شهريًا بـ USDC. مرّره كـ Authorization: Bearer sk_live_... وسيُتخطى تدفق x402. راسل info@safebrowz.com مع حجمك المتوقع وسنضمك.

ما البيانات التي تراها؟

فقط الرابط الذي ترسله. لا نسجّل محتويات الصفحة، أو ملفات تعريف الارتباط، أو الرؤوس، أو معرّفات المستخدم. توقيع المعاملة على السلسلة (Solana أو Base) يُخزن لحماية من إعادة التشغيل ومحاسبة الإيرادات.

هل أنت مستعد للتكامل؟

لا نماذج لملئها. وجّه أي محفظة Solana أو EVM إلى api.safebrowz.com/v1/detect وابدأ المسح.