Arcjet hilft Entwicklern, ihre Apps in nur wenigen Codezeilen zu schützen. Implementieren Sie die Ratenbeschränkung, den Bot -Schutz, die Überprüfung der E -Mail und die Verteidigung gegen gemeinsame Angriffe.
Dies ist der Monorepo mit verschiedenen Arcjet -Open -Source -Paketen für JS.
@arcjet/bun mit unserem Bun Quick Start Guide.npm:@arcjet/deno -Paket mit unserem Deno Quick Start Guide.@arcjet/nest mit unserem NestJs Quick Start Guide.@arcjet/next mit unserem Next.js Quick Start Guide.@arcjet/node mit unserem Node.js Quick Start Guide.@arcjet/remix mit unserem Remix Quick Start Guide.@arcjet/sveltekit mit unserem SufleKit Quick Start Guide. Schließen Sie sich unserem Discord -Server bei oder erreichen Sie die Unterstützung.
Probieren Sie eine Arcjet -geschützte App live unter https://example.arcjet.com (Quellcode) aus.
Lesen Sie die Dokumente unter docs.arcjet.com.
Das nachstehende Beispiel für das Arcjet -Ratenlimit anwendet eine Token -Bucket -Ratenlimit -Regel auf eine Route, in der wir den Benutzer anhand seiner ID identifizieren, z. B. wenn sie angemeldet sind. Der Eimer ist mit einer maximalen Kapazität von 10 Token und nach 8 10 Sekunden um 5 Token konfiguriert. Jede Anfrage verbraucht 5 Token.
Weitere Informationen finden Sie im Arcjet Next.js Ratenlimit -Dokumentation.
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" } ) ;
}Das nachstehende Beispiel für Arcjet -Botschutz gibt eine 403 verbotene Antwort für alle Anfragen von Kunden zurück, die wir sicher sind, automatisiert.
Einzelheiten finden Sie in der Arcjet Node.js Bot -Schutzdokumentation.
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 ) ; Wir stellen den Quellcode für verschiedene Pakete in diesem Repository bereit, sodass Sie eine bestimmte durch die folgenden Kategorien und Beschreibungen finden.
@arcjet/bun : sdk für bun.sh.@arcjet/deno : sdk für deno.@arcjet/nest : sdk für nestjs.@arcjet/next : sdk für das nächste.js Framework.@arcjet/node : sdk für node.js.@arcjet/remix : SDK für Remix.@arcjet/sveltekit : sdk für sveltekit.@arcjet/analyze : Lokale Analyse -Engine.@arcjet/headers : Arcjet -Erweiterung der Header -Klasse.@arcjet/ip : Dienstprogramme zum Auffinden der ursprünglichen IP einer Anfrage.@arcjet/redact : reduzieren und nicht redakte sensible Informationen aus Zeichenfolgen.nosecone : Schützen Sie Ihre Response mit sicheren Header.@nosecone/next : Schützen Sie Ihre nächste Anwendung mit sicheren Headern.@nosecone/sveltekit : Schützen Sie Ihre Seltekit -Anwendung mit sicheren Headern.arcjet : JS SDK CORE.@arcjet/body : Dienstprogramme zum Extrahieren des Körpers aus einem Knoten.js IncomingMessage.@arcjet/decorate : Dienstprogramme zum Dekorieren von Antworten mit Informationen.@arcjet/duration : Dienstprogramme für die Parsen von Dauer in Sekundenzahlen.@arcjet/env : Umgebungserkennung für Arcjet -Variablen.@arcjet/logger : Leichter Logger, der die Pino Structured Logger -Schnittstelle widerspiegelt.@arcjet/protocol : JS -Schnittstelle in das Arcjet -Protokoll.@arcjet/runtime : Laufzeiterkennung.@arcjet/sprintf : plattformunabhängiger Ersatz für util.format .@arcjet/transport : Transportmechanismen für das Arcjet -Protokoll.@arcjet/eslint-config : benutzerdefinierte Eslint-Konfiguration für unsere Projekte.@arcjet/redact-wasm : Sensible Information Redaktionserkennungsmotor.@arcjet/rollup-config : Benutzerdefinierte Rollup-Konfiguration für unsere Projekte.@arcjet/tsconfig : benutzerdefinierte tsconfig für unsere Projekte. Dieses Repository folgt der Arcjet -Support -Richtlinie.
Dieses Repository folgt der Arcjet -Sicherheitsrichtlinie.
Lizenziert unter der Apache -Lizenz, Version 2.0.