ArcJet ช่วยให้นักพัฒนาปกป้องแอพของพวกเขาในรหัสเพียงไม่กี่บรรทัด ใช้การ จำกัด อัตราการป้องกันบอทการตรวจสอบอีเมลและการป้องกันการโจมตีทั่วไป
นี่คือ monorepo ที่มีแพ็คเกจโอเพนซอร์สอาร์คเจ็ทต่างๆสำหรับ JS
@arcjet/bun พร้อมคู่มือ Bun Quick Start ของเราnpm:@arcjet/deno พร้อมคู่มือการเริ่มต้น DENO Quick Start ของเรา@arcjet/nest พร้อมคู่มือเริ่มต้นอย่างรวดเร็วของ Nestjs ของเรา@arcjet/next ด้วยคู่มือการเริ่มต้นด่วนของเรา next.js@arcjet/node พร้อมคู่มือการเริ่มต้นอย่างรวดเร็วของ Node.js@arcjet/remix พร้อมคู่มือการเริ่มต้นรีมิกซ์ของเรา@arcjet/sveltekit พร้อมคู่มือ Sveltekit Quick Start ของเรา เข้าร่วมเซิร์ฟเวอร์ Discord ของเราหรือเข้าถึงการสนับสนุน
ลองใช้แอพที่ได้รับการปกป้องจาก ArcJet ที่ https://example.arcjet.com (ซอร์สโค้ด)
อ่านเอกสารที่ docs.arcjet.com
ตัวอย่างขีด จำกัด อัตราของอาร์คเจ็ทด้านล่างใช้กฎการ จำกัด อัตราการเก็บโทเค็นกับเส้นทางที่เราระบุผู้ใช้ตาม ID ของพวกเขาเช่นหากพวกเขาเข้าสู่ระบบถังจะถูกกำหนดค่าด้วยความจุสูงสุด 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" } ) ;
}ตัวอย่างการป้องกันบอทของ ArcJet ด้านล่างจะส่งคืนการตอบกลับต้องห้าม 403 สำหรับคำขอทั้งหมดจากลูกค้าที่เราแน่ใจว่าเป็นไปโดยอัตโนมัติ
ดูเอกสารการป้องกัน BOT ของ ArcJet Node.js สำหรับรายละเอียด
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 สำหรับ bun.sh@arcjet/deno : sdk สำหรับ deno@arcjet/nest : SDK สำหรับ NestJS@arcjet/next : sdk สำหรับ framework next.js@arcjet/node : sdk สำหรับ node.js@arcjet/remix : sdk สำหรับรีมิกซ์@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 ขาเข้า@arcjet/decorate : ยูทิลิตี้สำหรับการตกแต่งคำตอบพร้อมข้อมูล@arcjet/duration : ยูทิลิตี้สำหรับการแยกระยะเวลาในการแยกระยะเวลาเป็นจำนวนเต็ม@arcjet/env : การตรวจจับสภาพแวดล้อมสำหรับตัวแปร ArcJet@arcjet/logger : Lightweight Logger ซึ่งสะท้อนอินเตอร์เฟส 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 : การกำหนดค่าแบบโรลอัพแบบกำหนดเองสำหรับโครงการของเรา@arcjet/tsconfig : custom tsconfig สำหรับโครงการของเรา ที่เก็บนี้เป็นไปตามนโยบายการสนับสนุนของ ArcJet
ที่เก็บนี้เป็นไปตามนโยบายความปลอดภัยของอาร์เคเจ็ท
ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0