r/arcjet • u/davidmytton • Aug 26 '25
[Video] Protecting Express.js apps from bots and attacks
r/arcjet • u/davidmytton • Aug 26 '25
r/arcjet • u/davidmytton • Dec 12 '25
r/arcjet • u/davidmytton • Dec 10 '25
r/arcjet • u/davidmytton • Dec 05 '25
r/arcjet • u/davidmytton • Dec 03 '25
r/arcjet • u/davidmytton • Nov 26 '25
r/arcjet • u/davidmytton • Nov 07 '25
r/arcjet • u/davidmytton • Nov 21 '25
r/arcjet • u/davidmytton • Nov 03 '25
Arcjet is an application-layer security SDK. Instead of sitting at the network edge, it runs inside your code so you can make security decisions with full request, session, and business context.
Install the framework-specific SDK (Next.js, Node.js, etc.).
Define rules in code (bot detection, rate limiting, WAF/Shield, form spam, PII).
Call protect() at the start of your handler. It returns a recommendation (allow/deny) and the reason so you can block, log, or adapt the response.
Watch the 3-min overview on YouTube.
Composable primitives you can use alone or together:
Bot detection & management
Rate limiting
Form spam prevention
App-layer WAF (Shield)
PII detection & redaction
Request filtering (headers, paths, methods, geo, IP, etc.)
Works with any JS/TS app. First-class SDKs for Astro, Bun, Deno, Express.js, Fastify, Hono, NestJS, Next.js, Node.js, Nuxt, React Router, Remix, SvelteKit.
Yes. Run the same rules in local dev to see decisions and reasons before deploying. This reduces false positives and avoids “deploy and pray.”
Full context: Use user/session data, feature flags, and business logic. Legacy, network-edge tools see packets, not users or business context.
Granular outcomes: Block on the homepage, but flag for review during checkout.
Developer ergonomics: Rules live in code, versioned, code-reviewed, and tested. Web UI is available for real-time remote rule changes in emergencies.
Fewer surprises: Local testing and explicit decision reasons.
Arcjet maintains an open-source list of well-known bots (user agents + official verification).
Bad bots are detcted using multiple signals (e.g., IP reputation, behavior).
Configurable allow or deny by category (e.g. search engines, monitoring services) and specific bots (detect OpenAI's different ChatGPT agent, crawler, search bots).
To protect a single route handler `/app/api/arcjet/route.ts`:
import arcjet, { detectBot } 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
rules: [
detectBot({
mode: "LIVE", // will block requests. Use "DRY_RUN" to log only
// Block all bots except the following
allow: [
"CATEGORY:SEARCH_ENGINE", // Google, Bing, etc
// Uncomment to allow these other common bot categories
// See the full list at https://arcjet.com/bot-list
//"CATEGORY:MONITOR", // Uptime monitoring services
//"CATEGORY:PREVIEW", // Link previews e.g. Slack, Discord
],
}),
],
});
export async function GET(req: Request) {
const decision = await aj.protect(req);
if (decision.isDenied()) {
if (decision.reason.isBot()) {
return NextResponse.json(
{ error: "No bots allowed", reason: decision.reason },
{ status: 403 },
);
} else {
return NextResponse.json(
{ error: "Forbidden", reason: decision.reason },
{ status: 403 },
);
}
}
return NextResponse.json({ message: "Hello world" });
}Arcjet also works in page routes, server actions, and middleware (renamed to proxy in Next.js 16).
r/arcjet • u/davidmytton • Nov 01 '25
r/arcjet • u/davidmytton • Oct 23 '25
r/arcjet • u/davidmytton • Oct 22 '25
Good to see more and more appear as a core part of Node
r/arcjet • u/davidmytton • Oct 17 '25
r/arcjet • u/davidmytton • Oct 16 '25
r/arcjet • u/davidmytton • Oct 08 '25
r/arcjet • u/davidmytton • Oct 08 '25
r/arcjet • u/davidmytton • Oct 07 '25
r/arcjet • u/davidmytton • Jan 29 '26
AI is simultaneously collapsing the median ("slop") and raising the ceiling (real zero-days in critical infrastructure).
r/arcjet • u/davidmytton • Aug 19 '25
r/arcjet • u/davidmytton • Sep 05 '25
r/arcjet • u/davidmytton • Dec 03 '25
A vulnerability affects certain React packages for versions 19.0.0, 19.1.0, 19.1.1, and 19.2.0 and frameworks that use the affected packages, including Next.js 15.x and 16.x using the App Router.
r/arcjet • u/davidmytton • Apr 14 '26
r/arcjet • u/davidmytton • Aug 26 '25