يساعد ArcJet المطورين على حماية تطبيقاتهم في بضعة أسطر من التعليمات البرمجية. تنفيذ الحد من الأسعار ، وحماية الروبوت ، والتحقق من البريد الإلكتروني ، والدفاع ضد الهجمات المشتركة.
هذا هو Monorepo يحتوي على مختلف حزم ArcJet Open Source لـ JS.
@arcjet/bun مع دليل البدء السريع الخاص بنا.npm:@arcjet/deno مع دليل Deno Quick Start.@arcjet/nest مع دليل بدء NestJS السريع.@arcjet/next مع دليل البدء السريع Next.js.@arcjet/node مع دليل البدء السريع node.js.@arcjet/remix مع دليل البدء السريع في Remix.@arcjet/sveltekit مع دليل البدء السريع الخاص بنا. انضم إلى خادم Discord الخاص بنا أو التواصل للحصول على الدعم.
جرب تطبيق ArcJet المحمي على الهواء مباشرة على https://example.arcjet.com (رمز المصدر).
اقرأ المستندات في docs.arcjet.com.
يطبق مثال حد معدل ARCJET أدناه قاعدة الحد من معدل دلو الرمز المميز على مسار حيث نحدد المستخدم بناءً على معرفه على سبيل المثال إذا تم تسجيل الدخول. يتم تكوين الدلو بسعة قصوى قدرها 10 رموز وإعادة تعبئتها بمقدار 5 رموز كل 10 ثوانٍ. يستهلك كل طلب 5 رموز.
راجع وثائق حد معدل ArcJet Next.js للحصول على التفاصيل.
import arcjet , { tokenBucket } from "@arcjet/next" ;
import { NextResponse } from "next/server" ;
const aj = arcjet ( {
key : process . env . ARCJET_KEY ! , // Get your site key from https://app.arcjet.com
characteristics : [ "userId" ] , // track requests by a custom user ID
rules : [
// Create a token bucket rate limit. Other algorithms are supported.
tokenBucket ( {
mode : "LIVE" , // will block requests. Use "DRY_RUN" to log only
refillRate : 5 , // refill 5 tokens per interval
interval : 10 , // refill every 10 seconds
capacity : 10 , // bucket maximum capacity of 10 tokens
} ) ,
] ,
} ) ;
export async function GET ( req : Request ) {
const userId = "user123" ; // Replace with your authenticated user ID
const decision = await aj . protect ( req , { userId , requested : 5 } ) ; // Deduct 5 tokens from the bucket
console . log ( "Arcjet decision" , decision ) ;
if ( decision . isDenied ( ) ) {
return NextResponse . json (
{ error : "Too Many Requests" , reason : decision . reason } ,
{ status : 429 } ,
) ;
}
return NextResponse . json ( { message : "Hello world" } ) ;
}سيعود مثال حماية BOT ARCJET أدناه استجابة 403 محظورة لجميع الطلبات من العملاء الذين نؤكد أنهم مؤتمسون.
راجع وثائق حماية BOT ARCJET للحصول على التفاصيل.
import arcjet , { detectBot } from "@arcjet/node" ;
import http from "node:http" ;
const aj = arcjet ( {
key : process . env . ARCJET_KEY ! , // Get your site key from https://app.arcjet.com
rules : [
detectBot ( {
mode : "LIVE" , // will block requests. Use "DRY_RUN" to log only
// configured with a list of bots to allow from
// https://arcjet.com/bot-list
allow : [ ] , // "allow none" will block all detected bots
} ) ,
] ,
} ) ;
const server = http . createServer ( async function (
req : http . IncomingMessage ,
res : http . ServerResponse ,
) {
const decision = await aj . protect ( req ) ;
console . log ( "Arcjet decision" , decision ) ;
if ( decision . isDenied ( ) ) {
res . writeHead ( 403 , { "Content-Type" : "application/json" } ) ;
res . end ( JSON . stringify ( { error : "Forbidden" } ) ) ;
} else {
res . writeHead ( 200 , { "Content-Type" : "application/json" } ) ;
res . end ( JSON . stringify ( { message : "Hello world" } ) ) ;
}
} ) ;
server . listen ( 8000 ) ; نحن نقدم الكود المصدر لمختلف الحزم في هذا المستودع ، حتى تتمكن من العثور على رمز معين من خلال الفئات والأوصاف أدناه.
@arcjet/bun : SDK for Bun.sh.@arcjet/deno : SDK لـ Deno.@arcjet/nest : SDK لـ Nestjs.@arcjet/next : SDK for the Next.js Framework.@arcjet/node : sdk for node.js.@arcjet/remix : SDK لـ Remix.@arcjet/sveltekit : SDK لـ sveltekit.@arcjet/analyze : محرك التحليل المحلي.@arcjet/headers : امتداد ArcJet لفئة الرؤوس.@arcjet/ip : الأدوات المساعدة للعثور على IP الأصلي للطلب.@arcjet/redact : معلومات حساسة REDACT و unredact من السلاسل.nosecone : حماية Response برؤوس آمنة.@nosecone/next : حماية تطبيق Next.js برؤوس آمنة.@nosecone/sveltekit : حماية تطبيق sveltekit الخاص بك برؤوس آمنة.arcjet : JS SDK Core.@arcjet/body : الأدوات المساعدة لاستخراج الجسم من node.js instomingmessage.@arcjet/decorate : الأدوات المساعدة لتزيين الاستجابات بالمعلومات.@arcjet/duration : الأدوات المساعدة لسلاسل مدة التحليل في أعداد صحيحة ثواني.@arcjet/env : الكشف عن البيئة لمتغيرات ArcJet.@arcjet/logger : Lightweight Logger الذي يعكس واجهة مسجل Pino المهيكلة.@arcjet/protocol : واجهة JS في بروتوكول ARCJET.@arcjet/runtime : اكتشاف وقت التشغيل.@arcjet/sprintf : استبدال منصة مستقلة لـ util.format .@arcjet/transport : آليات النقل لبروتوكول ArcJet.@arcjet/eslint-config : تكوين eslint مخصص لمشاريعنا.@arcjet/redact-wasm : محرك الكشف عن المعلومات الحساسة.@arcjet/rollup-config : Custom Rollup Config لمشاريعنا.@arcjet/tsconfig : مخصص tsconfig لمشاريعنا. يتبع هذا المستودع سياسة دعم ArcJet.
يتبع هذا المستودع سياسة أمن ArcJet.
مرخصة بموجب ترخيص Apache ، الإصدار 2.0.