TTechclick ⚡ XP 0% All lessons
F5 · BIG-IP ASM · Bot DefenseInteractive · L1 / L2 / L3

F5 Bot Defense — Proactive Bot Defense, Signatures, Device ID & CAPTCHA

A scraper is copying every Flipkart price every 30 seconds. It sends a perfectly normal Chrome User-Agent, so a header-only filter waves it through. Then someone enables Proactive Bot Defense — and the scraper dies instantly, while real shoppers never notice a thing. This lesson shows you how the F5 BIG-IP Advanced WAF (formerly ASM) Bot Defense profile tells a real browser from a bot that merely claims to be one — JavaScript challenges, Device ID, bot signatures, anomaly detection, and CAPTCHA — without blocking Googlebot or your own API.

📅 2026-06-02 · ⏱ 11 min · 3 live demos · 4 infographics · 🏷 10-Q assessment + AI Tutor inline · maps to F5 303

⚡ Quick Answer

Learn F5 BIG-IP Advanced WAF (formerly ASM) Bot Defense the AI-era way — the Bot Defense profile, Proactive Bot Defense (JavaScript challenge + Device ID), bot signatures vs anomaly detection, the six client classes and their mitigation actions, browser verification, CAPTCHA, and the Relaxed/Balanced/Strict templates — with a real BIG-IP build. 11 min.

🎯 By the end you will be able to

Read as:

Pick where you want to start

1

Where Bot Defense Lives

The Bot Defense profile, the virtual server, and why it needs no security policy.

2

Proactive Bot Defense

The JavaScript challenge + Device ID that proves a real browser before any request lands.

3

Signatures, Anomalies & Classes

Bot signatures vs anomaly detection, and the six client classes that decide who gets what.

4

Templates & Build

Relaxed / Balanced / Strict, Browser Verification, CAPTCHA, the API trap — and validate.

🧠 Warm-up — 3 questions, no score

Just notice which ones make you pause. We answer all three inside the lesson.

1. A Python requests scraper sends a perfect Chrome User-Agent. Why does Proactive Bot Defense still block it?

Answered in Path 2 — Proactive Bot Defense. (Spoiler: it tests what a header can't fake.)

2. A bot signature matches a header pattern. What kind of bot does it miss?

Answered in Path 3 — Signatures, Anomalies & Classes.

3. Googlebot is being blocked by a new Strict profile. Which client class should it be?

Answered in Path 3 — Classes. Search engines are Trusted Bots.

Most engineers think…

"To block bots, I just blocklist the bad User-Agent strings and known bad IPs."

Wrong — and that instinct is exactly why your scraper problem never goes away. A serious bot sends a perfectly normal Chrome User-Agent and rotates through thousands of residential IPs, so header- and IP-based filters wave it straight through. F5 Bot Defense flips the question: instead of asking "does this claim to be a browser?", it asks "can it prove it's a real browser?" — by making the client run a JavaScript challenge and carry a Device ID. A header can be faked. Running JavaScript and surviving anomaly checks cannot be faked cheaply. This lesson builds that instinct.

① Where Bot Defense lives — its own profile, no security policy needed

Picture a nightclub door. A weak bouncer checks the name on the guest list (the User-Agent) — easy to fake. A real bouncer makes you do something a gate-crasher can't: show ID, answer a question, walk in a straight line. F5 Bot Defense is that real bouncer. It doesn't trust what the client says; it tests what the client can do.

First, scope. Bot Defense is enforced through a dedicated Bot Defense profile — and crucially, it does not require a security policy. You can protect an app from bots without ever building an ASM positive-security policy. The profile is created under Security ▸ Bot Defense ▸ Bot Defense Profiles and attached to a virtual server, exactly like any other profile. (Older BIG-IP versions configured "Proactive Bot Defense" inside the DoS profile; modern versions consolidate everything into this unified Bot Defense profile.)

Bot Defense decides using three layered techniques: Proactive Bot Defense (challenge the client), bot signatures (match known patterns), and anomaly detection (catch automation tells). Together they sort every client into one of six classes, and each class gets its own mitigation. The art is knowing which technique catches which bot.

👉 So far: Bot Defense is its own profile (Security ▸ Bot Defense ▸ Bot Defense Profiles), needs no security policy, and is attached to a virtual server. It decides with Proactive Bot Defense + signatures + anomaly detection. Next, follow a request to the moment the profile decides.
Figure 1 — A request reaches the Bot Defense profile: three techniques classify, each class gets its own action
A left-to-right architecture diagram. A mix of real browsers, a search engine, a scraper and a malicious bot hit a BIG-IP virtual server that has a Bot Defense profile attached — no security policy required. The profile runs three techniques: Proactive Bot Defense, which sends a JavaScript and Device ID challenge; bot signatures, which match known header patterns; and anomaly detection, which catches automation tells. The result is a classification into six client classes — Browser, Trusted Bot, Untrusted Bot, Suspicious Browser, Malicious Bot, Unknown — and each class is mapped to its own mitigation action: none or alarm for a real browser or trusted bot, CAPTCHA for a suspicious browser, rate limit for an unknown bot, and block for a malicious bot. A green note marks that real browsers solve the challenge silently and pass. Follow a mixed crowd to the moment the Bot Defense profile classifies each one Untrusted / bot Challenge / decision Allowed (legit) Key insight Incoming clients real browser · Googlebot scraper · malicious bot Virtual server Bot Defense profile no security policy needed Three techniques classify the client ① Proactive JS challenge + Device ID ② Signatures known header patterns ③ Anomaly automation tells Classified into one of 6 client classes Browser · Trusted Bot Untrusted · Suspicious Browser · Malicious · Unknown Per-class action: Alarm (trusted) → CAPTCHA → Rate-limit → Block (malicious) Device ID tracks the actor even across rotating IPs Real browser → "Browser" class solves the JS challenge silently, passes A header can be faked. Running JavaScript + surviving anomaly checks cannot — that's why proactive verification wins.
Three techniques classify every client into one of six classes; each class gets its own action. A trusted search engine is only alarmed; a malicious bot is blocked; a real browser solves the challenge silently and passes.

Sneha at Infosys faces this

Sneha enabled a Bot Defense profile, but a scraper is still copying the entire product catalog every night. The bot sends a normal Chrome User-Agent, so her old header blocklist never matched it.

Likely cause

She's relying on bot signatures alone (header matching). The scraper fakes a real browser header, so no signature fires. Proactive Bot Defense is Off, so the client is never actually challenged.

Diagnosis

Open the profile and check whether proactive verification is enabled.

Security ▸ Bot Defense ▸ Bot Defense Profiles ▸ profile ▸ Mitigation Settings
Fix

Enable Proactive Bot Defense (Browser Verification = Verify After Access, Device ID Mode = Generate After Access). Now the scraper must run JavaScript to prove it's a browser — and it can't.

Verify

Re-run the scrape. Security ▸ Reporting ▸ Bot Defense ▸ Bot Traffic now shows the client classified as a bot and the action that fired.

▶ Watch a scraper hit Proactive Bot Defense — then watch what a header-only filter does

Rahul at TCS turns on Proactive Bot Defense. Press Play for the healthy challenge-and-classify path, then Break it to see why a header blocklist alone fails.

① REQUESTA scraper GETs /product/123 with a faked Chrome User-Agent
② CHALLENGEBIG-IP injects a JavaScript challenge + Device ID before the app ever sees the request
③ CLASSIFYNo JS executed, no Device ID returned → not a real browser → classified as a bot
④ ACTIONThe bot is blocked; the real browser next door ran the JS silently and shopped fine
Press Play to step through the healthy challenge-classify-act path. Then press Break it.
Quick check · Q1 of 10

A simple Python scraper using the requests library hammers a Flipkart product page. The team enables Proactive Bot Defense. Why does the scraper get blocked while real shoppers don't notice anything?

Correct: b. Proactive Bot Defense tests what a header can't fake — the ability to run JavaScript and carry a Device ID. A real browser does both silently; a requests script can't run JS, so it's classified as a bot. A faked User-Agent (c) doesn't help it pass.

Pause & Predict

Proactive Bot Defense gives every verified client a fingerprint cookie. Why does that cookie matter when the same attacker keeps switching to a new IP address on every request? Type your guess.

Answer: That cookie is the Device ID — a fingerprint of the client itself, not its IP. A rotating-IP botnet defeats per-IP rate limits because every request looks like a brand-new address. But Device ID recognises the same automated client across all those IPs, so Bot Defense can count and act on the actor instead of the address. Exactly Path 2.

② Proactive Bot Defense — make the client prove it's a browser

The strongest weapon in the profile is Proactive Bot Defense. Instead of waiting to recognise a bad bot, it challenges every new client up front. Two things happen before the app ever sees the request:

This is why it's "proactive": the verdict is reached before a single request hits your application logic. Web scraping, credential stuffing, and L7 floods all rely on clients that can't run JavaScript or won't carry a consistent Device ID — and they're filtered at the door.

You tune when the challenge happens with Browser Verification: Challenge-free (no proactive challenge — basic), Verify After Access (challenge after the first request — lower latency, the Balanced default), or Verify Before Access (challenge before any request reaches the app — strongest, the Strict default). Device ID Mode mirrors this with None / Generate After Access / Generate Before Access.

Analogy: a bouncer who doesn't read the guest list at all. He hands you a puzzle at the door. Real guests solve it without thinking; a gate-crasher who only memorised a name on the list is stuck on the step.

Pro tip — match Browser Verification to the client mix

If your app is browser-only (a login page, a checkout), Verify Before Access is gold — bots die before touching the app. But if real non-browser clients hit the same virtual server (a mobile app's API, server-to-server calls), proactive verification will block them too — they can't run JS. Carve those paths out with the Whitelist or Microservice/URL exceptions, or rely on signatures + anomaly detection there instead. The challenge that stops bots also stops anything that legitimately isn't a browser.

👉 So far: Proactive Bot Defense challenges the client with JavaScript + Device ID before the app sees the request, tuned by Browser Verification (Challenge-free / After / Before access). Its trap is legitimate non-browser clients. Next, see the proactive verdict decide — then break it.
Figure 2 — Same scraper, faked browser header: a header blocklist waves it in, Proactive Bot Defense stops it
A before-and-after comparison panel. Both panels show the same scraper sending a faked Chrome User-Agent. In the top panel, a header blocklist alone checks only the User-Agent string, sees a normal Chrome value, trusts it and lets the scraper in — a miss. In the bottom panel, Proactive Bot Defense ignores the header and injects a JavaScript and Device ID challenge; the scraper cannot execute JavaScript, fails the challenge, and is classified as a bot and blocked, while a real browser solves it silently. The key insight is that a header can be faked but running JavaScript cannot. One scraper, faked Chrome header. Header blocklist vs Proactive Bot Defense. Header blocklist ALONE — trusts what the client claims User-Agent: Mozilla/5.0 (Chrome/126) — FAKED "looks like Chrome → OK" never tested, just trusted SCRAPER WALKS IN catalog stolen ✗ Proactive Bot Defense — makes the client prove it JS challenge + Device ID scraper: no JS engine header ignored, JS not run → not a real browser BOT BLOCKED real browser passes ✓ The aha: a header can be faked; running JavaScript + carrying a Device ID cannot. Test what can't be faked.
Control OFF (header blocklist) trusts a faked User-Agent and lets the scraper steal your catalog. Control ON (Proactive Bot Defense) ignores the header and challenges the client — only a real browser passes.

Priya at Flipkart faces this

Priya turned on Strict (Verify Before Access). It killed the scrapers — but the company's mobile app, which calls a REST API on the same virtual server, suddenly started failing for every user.

Likely cause

Proactive Bot Defense expects a browser that can run JavaScript. A legitimate non-browser API client can't solve the JS challenge, so it's treated like a bot and blocked.

DiagnosisSecurity ▸ Bot Defense ▸ Bot Defense Profiles ▸ profile ▸ Microservice / Whitelist
Fix

Carve the API paths out: add the API URLs to the Whitelist or a Microservice exception so they skip proactive verification, and rely on signatures + anomaly detection there. Keep Strict on the browser pages.

Verify

Re-test the mobile app and the scraper together. Security ▸ Reporting ▸ Bot Defense ▸ Bot Traffic shows the API allowed and the scraper still blocked.

F5 Advanced WAF Architecture & Deployment F5 ASM Hands-on Simulator
Quick check · Q2 of 10

What is the core difference between a bot signature and Proactive Bot Defense in F5 Bot Defense?

Correct: c. Signatures recognise known bots from their headers (fast, but blind to new bots or faked headers). Proactive Bot Defense tests a capability — running JavaScript and carrying a Device ID — that a faked header can't provide. You run both: signatures catch the known, proactive catches the unknown.

Pause & Predict

A headless Chrome bot (Puppeteer) can run JavaScript, so it passes the proactive challenge. What else could BIG-IP look at to catch it anyway? Type your guess.

Answer: Anomaly detection — behavioural tells of automation. Even a headless browser leaves fingerprints: F5's Headless Browser Anomalies and Browser Automation categories spot missing browser features, automation drivers, and inhuman interaction patterns, and classify the client as a Suspicious Browser or Malicious Bot. Running JS gets you past the door; behaving like a script gets you caught inside. That's Path 3.

③ Signatures, anomalies & the six client classes

Proactive Bot Defense asks "can you prove you're a browser?". The other two techniques answer "which bot are you, and are you a good one?".

Bot signatures — recognise the known, good and bad

Bot signatures look for known patterns in the request — primarily the headers — to identify a bot by name. They come in two flavours, and you can write your own:

Signatures are updated by F5's Live Update. Newly updated signatures go into staging first — requests that match a staged signature are logged but not mitigated, so you can review for false positives before it enforces. Move it out of staging to start blocking.

Anomaly detection — catch the automation tells

Signatures miss two things: a brand-new bot with no signature, and a bot that fakes a normal browser header. Anomaly detection closes that gap with behavioural categories like Browser Automation, Headless Browser Anomalies, Browser Masquerading, Search Engine Masquerading (a bot pretending to be Googlebot), and Mobile App Automation. This is what catches a Puppeteer bot that survived the JS challenge.

The six client classes — who gets what

Everything above feeds one decision: which class is this client, and therefore what action applies?

Analogy: the bouncer has a colour-coded wristband for everyone. Green for guests (Browser), blue for the catering staff he knows (Trusted Bot), red for the guy with the crowbar (Malicious Bot). The action follows the band, not a gut feeling.

👉 So far: bot signatures recognise known bots (Live Update + staging), anomaly detection catches automation tells even on faked browsers, and every client lands in one of six classes that decides the action. Next, a side-by-side so you pick the right technique fast.
Figure 3 — Proactive vs Signatures vs Anomaly detection — which catches which bot
Three columns compare bot signatures, Proactive Bot Defense, and anomaly detection across what each one inspects, what it catches, whether it needs the client to run JavaScript, its blind spot, and a typical use. Bot signatures inspect request headers and catch known good and bad bots but miss new or faked ones; Proactive Bot Defense challenges the client with JavaScript and Device ID and catches anything that can't run JavaScript but can block legitimate non-browser clients; anomaly detection inspects behavioural automation tells and catches headless and masquerading bots even when they run JavaScript. The rule of thumb is to run all three together. Each technique catches a different bot — that's why you run all three Inspects Catches Needs client to run JS? Blind spot Typical use Bot signatures Proactive Bot Defense Anomaly detection Request headers Client capability Behaviour / automation known good + bad bots anything that can't run JS headless + masquerading (even if it runs JS) No Yes — that's the test No — watches behaviour new / faked-header bots legit non-browser APIs needs tuning to avoid FPs "is this Googlebot?" fast, known-bot triage "prove you're a browser" scrapers, cred-stuffing "is this Puppeteer?" advanced automation Rule of thumb: signatures for the known, Proactive for the unknown, Anomaly for the clever. One alone leaves a gap.
Signatures recognise known bots fast. Proactive Bot Defense catches anything that can't prove it's a browser. Anomaly detection catches automation that fakes one. Each plugs the others' blind spot — run all three.

▶ Watch a Puppeteer bot run all three checks — signature, proactive, then anomaly

Karthik at Wipro faces a headless-Chrome credential-stuffing bot. Play the layered-detection flow, then Break it to see what happens with signatures alone.

① SIGNATUREBot sends a normal Chrome header → no malicious signature matches (it's faking a browser)
② PROACTIVEIt's headless Chrome, so it runs the JS challenge and gets a Device ID — passes this check
③ ANOMALYHeadless Browser Anomalies + Browser Automation tells fire → classified Suspicious Browser / Malicious Bot
④ ACTIONCAPTCHA or Block applies; the same Device ID is tracked across its rotating IPs
Press Play for the layered signature → proactive → anomaly flow. Then press Break it.

The Bot Defense techniques & key controls — tap each card

Each card front names the control; the back gives you the "so what" — when it earns its place.

🎯
Proactive Bot Defense
tap to flip

JS challenge + Device ID, tuned by Browser Verification (Challenge-free / After / Before access). So what: catches any bot that can't run JS — scrapers, cred-stuffing. Trap: it also blocks legit non-browser APIs.

🔖
Bot signatures
tap to flip

Header-based patterns for known good (Search Bot, Crawler) and bad (DOS Tool, Scanner) bots; Live Update + staging. So what: fast known-bot triage — but blind to new bots and faked headers.

🧠
Anomaly detection
tap to flip

Behavioural tells: Browser Automation, Headless Browser Anomalies, Browser/Search-Engine Masquerading. So what: catches a Puppeteer bot that passed the JS challenge — the clever automation.

🪪
Device ID
tap to flip

Fingerprints the client, not the IP (None / Generate After / Before Access). So what: tracks the same automated client across a rotating-IP botnet that defeats per-IP limits.

Quick check · Q3 of 10

Googlebot is being blocked by a new Strict Bot Defense profile. Which client class should Googlebot fall into, and what is the correct fix?

Correct: a. Search engines are Trusted Bots, whose default action is Alarm (never Block). If Googlebot is blocked, the trusted-bot signature isn't matching — verify the legitimate search engine (forward/reverse DNS) or whitelist it. Switching to Relaxed (d) would also let malicious bots through.

Pause & Predict

You're about to enable a brand-new Bot Defense profile on a production Flipkart virtual server that also serves a mobile-app REST API. Before you pick a template — what one thing could it silently break, and how do you protect it? Type your guess.

Answer: A legitimate non-browser client (the mobile app's REST API, server-to-server calls) can't solve the JavaScript challenge, so a Strict / proactive profile blocks it. Carve those API paths out with the Whitelist or a Microservice/URL exception so they skip proactive verification — keep Strict on the browser pages. Start by reviewing the Bot Traffic report before you enforce. Exactly Path 4.

④ Templates & build — pick a starting point, then tune

You don't build the per-class action matrix from scratch. F5 ships three profile templates that set sensible defaults; you pick the closest one to your risk, then tune. They differ mainly in Browser Verification strictness and the actions for the in-between classes.

The per-class action — same six classes, different verdicts

Whichever template you pick, the action attaches to the client class. Read this matrix top-to-bottom — the further right you go, the more aggressive the verdict:

CAPTCHA & the actions you can attach

The actions available per class are None, Alarm (log only), Slowdown / Rate Limit, CAPTCHA (a human-verification step for clients that look suspicious but might be real), and Block. CAPTCHA is the polite middle ground — it gives a real-but-flagged user a way through instead of a hard block.

The strict-enforcement & API knobs

Two settings matter most when real non-browser traffic shares the virtual server:

The screen you'll live in — the Bot Defense profile

Here's the exact form. You create the profile, pick the template, and set Browser Verification + Device ID Mode + the per-class Mitigation. The four numbered pins are the fields this lesson changes.

https://192.168.10.20/tmui — BIG-IP Configuration Utility
Security » Bot Defense : Bot Defense Profiles » bot-flipkart-shop » Mitigation Settings
Bot Defense Profile › General & Mitigation Settings
① Template
② Browser Verification
③ Device ID Mode
④ Mitigation by class
Trusted Bot → Alarm Malicious Bot → Block Suspicious Browser → CAPTCHA Unknown → Rate Limit
🖥️ Recreated for clarity — your BIG-IP console matches this. Path: Security » Bot Defense : Bot Defense Profiles » Create. The four numbered pins are the fields this lesson sets: ① Template (Relaxed/Balanced/Strict), ② Browser Verification, ③ Device ID Mode, ④ the per-class Mitigation.

After you save and attach the profile, you don't trust the config — you read the report. This is where you confirm what actually fired:

https://192.168.10.20/tmui — Security : Reporting : Bot Defense
Security » Reporting : Bot Defense : Bot Traffic » vs_shop_443 » last 1 hour
Bot Traffic — by client class & action
Client classRequestsActionDetected by
Browser41,802AllowedProactive (JS + Device ID)
Trusted Bot2,140AlarmSignature (Search Bot · Googlebot)
Suspicious Browser658CAPTCHAAnomaly (Headless Browser)
Malicious Bot9,317BlockedSignature (Web Spider · DOS Tool)
🖥️ Recreated for clarity — your BIG-IP console matches this. Path: Security » Reporting » Bot Defense » Bot Traffic. This is the report that ends the argument: which class, how many requests, the action that fired, and which technique detected it.

tmsh — the same profile from the CLI

The GUI is the day-job, but the same settings exist in tmsh. Useful for review, automation, and the 303 exam. Confirm the Device ID mode and the profile binding:

tmsh — inspect the Bot Defense profile and its Device ID mode
root@(bigip-flipkart)(cfg-sync)(tmos)# list ltm virtual vs_shop_443 profiles
root@(bigip-flipkart)(cfg-sync)(tmos)# list security bot-defense profile bot-flipkart-shop deviceid-mode
root@(bigip-flipkart)(cfg-sync)(tmos)# list security bot-defense profile bot-flipkart-shop template
Expected output
ltm virtual vs_shop_443 {
    profiles { bot-flipkart-shop { } http { } }
}
security bot-defense profile bot-flipkart-shop {
    deviceid-mode generate-after-access
}
security bot-defense profile bot-flipkart-shop {
    template balanced
}
The trap behind a "working" profile

Don't jump straight to Strict on a virtual server that serves more than browsers. Your mobile app's REST API, a partner integration, or a server-to-server call can't run JavaScript — Proactive Bot Defense will block them like any other bot, and you'll get a flood of "the app is down" tickets. Start in a Balanced template, review the Bot Traffic report for legit non-browser clients, carve those out with the Whitelist / Microservice exceptions, then tighten to Strict on the browser-only pages. The challenge that stops bots stops anything that genuinely isn't a browser.

👉 So far: pick a template (Relaxed/Balanced/Strict), set Browser Verification + Device ID Mode, and attach per-class actions; the big trap is blocking legit non-browser clients. Next, prove it works.

▶ Watch the per-class action — alarm the good, CAPTCHA the maybe, block the bad

Three clients hit a Balanced profile at once. Play to see each get its own action, then Break it to see the cost of a too-strict profile on an API.

① GOOGLEBOTMatches a Search-Bot signature → class Trusted BotAlarm only, never blocked
② HEADLESSPasses the JS challenge but trips Headless anomalies → Suspicious BrowserCAPTCHA
③ SCANNERMatches a Vulnerability-Scanner signature → class Malicious BotBlock
④ REAL USERSolves the JS silently → class Browser → allowed; shops without friction
Press Play for the healthy per-class verdicts. Then press Break it.

Aditya at HCL faces this

Aditya tuned a great Bot Defense profile in the lab, but in production a scraper still gets through — Bot Traffic shows it classified as a bot, yet no block fired.

Likely cause

The matched signature is in staging. After a Live Update, new signatures only log matching traffic — they don't mitigate — so you can review for false positives first.

DiagnosisSecurity ▸ Bot Defense ▸ Bot Defense Profiles ▸ profile ▸ Signature Enforcement ▸ check Staging
Fix

Review the staged signature, confirm it isn't catching anything legitimate, then move it out of staging so it enforces. Confirm the profile is bound to the correct virtual server.

Verify

Re-run the scrape; Bot Traffic now shows the client Blocked by that signature instead of merely logged.

Verify it worked — the report that ends the argument

Never claim a Bot Defense profile works from the config screen. Send both a real browser and a scripted client (a curl / headless run) at the virtual server, then open Security ▸ Reporting ▸ Bot Defense ▸ Bot Traffic, filter on the virtual server + last hour, and read the client class, the action that fired, and which technique detected it. If a known-bad client shows up logged but not blocked, your signature is in staging or the template is too loose — not the cloud, not the bot.

tmsh — confirm what the Bot Defense profile classified
root@(bigip-flipkart)(tmos)# show security bot-defense profile bot-flipkart-shop
root@(bigip-flipkart)(tmos)# show analytics dos-l7 report view-by device-id
Expected output
Security::Bot Defense Profile bot-flipkart-shop  (VS: vs_shop_443)
  Browser            41802  action allow    (proactive: JS + Device ID)
  Trusted Bot         2140  action alarm    (signature: Search Bot / Googlebot)
  Suspicious Browser   658  action captcha  (anomaly: Headless Browser)
  Malicious Bot       9317  action block    (signature: Web Spider / DOS Tool)
# Bad client "alarm" not "block" → signature in staging, or template too loose.
# No bot rows at all → profile not bound to the virtual server.
Quick check · Q4 of 10

A headless Chrome instance driven by Puppeteer passes the JavaScript challenge but still gets caught. Which Bot Defense mechanism stopped it?

Correct: d. Running JavaScript gets a headless bot past the proactive challenge — but automation leaves behavioural fingerprints. Anomaly detection's Headless Browser and Browser Automation categories catch it. Signatures alone (a) often miss a headless tool that fakes a normal User-Agent.
Figure 4 — F5 Bot Defense build cheat-sheet (screenshot this)
A grid of six cheat-sheet tiles covering the Bot Defense build order: create the Bot Defense profile and attach it to the virtual server, no security policy needed; pick a template Relaxed, Balanced or Strict; set Browser Verification and Device ID Mode for Proactive Bot Defense; let bot signatures classify known good and bad bots with Live Update and staging; let anomaly detection catch headless and masquerading automation; and map each of the six client classes to its action from alarm to CAPTCHA to block. A golden-rule footer states: prove the browser, start Balanced, carve out non-browser APIs, and validate in the Bot Traffic report. Build order → the one decision that matters at each step ① Create & attach Bot Defense profile → virtual server no security policy needed ② Template Relaxed / Balanced / Strict sets the per-class defaults start Balanced, not Strict ③ Proactive JS challenge + Device ID Browser Verification: Challenge-free/After/Before ④ Signatures known good + bad bots Live Update → staging staged = log, not block ⑤ Anomaly detection Headless / Automation Masquerading tells catches what passed the JS ⑥ Per-class action Trusted → Alarm Suspicious → CAPTCHA Malicious → Block GOLDEN RULE Prove the browser, don't trust the header. Start Balanced, carve out non-browser APIs, then go Strict. Validate in Bot Traffic — never from the config screen. Track the actor by: Device ID (beats rotating IPs) · Source IP · Geolocation · URL | report of truth: Security ▸ Reporting ▸ Bot Defense ▸ Bot Traffic
Six steps, six decisions, one golden rule. Screenshot this — it's the card you'll glance at while building a Bot Defense profile.

🤖 Ask the AI Tutor

Tap any question — instant, scoped to this lesson. No login, no waiting.

Pre-curated from F5 techdocs + DevCentral, scoped to BIG-IP Advanced WAF Bot Defense. For a live prod issue, paste your Bot Traffic export into chat.techclick.in.

📝 Wrap-up assessment — six more

You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.

Q5 · Apply

Which Bot Defense profile template performs advanced browser verification, CAPTCHAs suspicious browsers, and rate-limits unknown bots?

Correct: b. Balanced = Verify After Access + CAPTCHA suspicious browsers + rate-limit unknown bots. Relaxed is challenge-free; Strict verifies before access and blocks all non-trusted bots.
Q6 · Apply

Sneha enables Bot Defense and the company's legitimate price-comparison partner (a known good bot) starts getting blocked. What's the cleanest fix?

Correct: a. A whitelist entry or a custom Trusted-Bot signature exempts only that partner, keeping full protection for everyone else. Switching to Relaxed (c) would also let malicious bots through.
Q7 · Analyze

After a Live Update, several bot signatures stop blocking matching traffic and only log it. Why?

Correct: c. Staging is the safety net: a new or updated signature logs but doesn't block, letting you confirm it isn't catching legitimate traffic. Move it out of staging to enforce.
Q8 · Analyze

A REST API client (server-to-server, no browser) starts failing after Bot Defense is enabled with Proactive Bot Defense on the virtual server. Most likely cause and fix?

Correct: d. The JS challenge that stops bots also stops anything that legitimately isn't a browser. Carve the API paths out with a Whitelist or Microservice exception (or rely on signatures/anomaly there), instead of weakening the browser pages.
Q9 · Evaluate

In a Balanced profile, what is the default mitigation action for the Malicious Bot class versus the Trusted Bot class?

Correct: b. Malicious Bot = Block in all templates; Trusted Bot = Alarm only (never blocked). The classes in between — Untrusted Bot, Suspicious Browser, Unknown — get rate-limit/CAPTCHA actions that vary by template.
Q10 · Evaluate

For a high-value HDFC banking login under credential stuffing from a rotating-IP botnet that mimics real browsers, why is Device ID more useful than source-IP rate limiting alone?

Correct: c. Per-IP rate limits are blind to a botnet that uses a fresh IP per request. Device ID tracks the client device across all those IPs, so credential-stuffing from one actor is caught even as the source address keeps changing.
Lesson complete — saved to your profile.
Almost! You need 70% (7 of 10) — re-read the path that tripped you up and tap "Try again".

🧠 In your own words

Type one line: why does Proactive Bot Defense catch a scraper that a User-Agent blocklist lets through? Then compare to the expert version.

Expert version: A User-Agent blocklist only reads what the client claims to be — and a scraper trivially fakes a normal Chrome header, so the blocklist trusts it. Proactive Bot Defense ignores the header and tests a capability: it injects a JavaScript challenge and issues a Device ID. A real browser runs the JS silently; a scraping script has no JavaScript engine, so it can't answer and is classified as a bot. If your answer mentioned "it tests something that can't be faked — running JavaScript — instead of trusting the header", you've got it.

🗣 Teach a friend

Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.

📖 Glossary

BIG-IP Advanced WAF (formerly ASM)
F5's web application firewall. Advanced WAF = ASM plus L7 Behavioral DoS, Bot Defense, credential-stuffing/brute-force protection and DataSafe. ASM went End-of-Sale 01-Apr-2021; existing ASM customers on BIG-IP ≥14.1 under support can reactivate to Advanced WAF free.
Bot Defense profile
The BIG-IP object that detects and mitigates automated traffic, attached to a virtual server. It does NOT require a security policy. Path: Security ▸ Bot Defense ▸ Bot Defense Profiles.
Proactive Bot Defense
Challenges every new client with a JavaScript challenge + Device ID before requests reach the app, to verify a real browser. Tuned by Browser Verification: Challenge-free / Verify After Access / Verify Before Access.
Device ID
A fingerprint/cookie BIG-IP issues to a verified client so the same client is recognised across requests and IPs — defeats rotating-IP botnets that beat per-IP limits. Modes: None / Generate After Access / Generate Before Access.
Bot signatures
Header-based patterns identifying known bots — benign (Search Bot, Crawler, HTTP Library) and malicious (DOS Tool, Vulnerability Scanner, Web Spider). Updated via Live Update; new signatures enter staging first (log only).
Anomaly detection
Behavioural detection of automation even when the client looks like a browser: Browser Automation, Headless Browser Anomalies, Browser Masquerading, Search Engine Masquerading. Catches a headless bot that passed the JS challenge.
Client classes
Browser, Trusted Bot, Untrusted Bot, Suspicious Browser, Malicious Bot, Unknown. The mitigation action attaches to the class. Trusted Bot = Alarm only; Malicious Bot = Block in every template.
Profile templates
Relaxed (challenge-free, Device ID None), Balanced (Verify After Access, CAPTCHA suspicious browsers, rate-limit unknown bots), Strict (Verify Before Access, block all non-trusted bots).
Signature staging
Newly Live-Updated signatures log matching requests without blocking, so you can review for false positives before they enforce. Move a signature out of staging to start blocking.
303 — BIG-IP ASM Specialist
The F5 certification this series maps to: 90 minutes, 80 questions, pass 245/350. Validates design, implementation, maintenance and troubleshooting of BIG-IP ASM / Advanced WAF, including Bot Defense.

📚 Sources

  1. F5 techdocs — Configuring Bot Defense (BIG-IP 17.5 ASM implementations): GUI path Security ▸ Bot Defense ▸ Bot Defense Profiles, Relaxed/Balanced/Strict templates, Browser Verification, Device ID Mode, the per-class mitigation matrix, Whitelist / Microservice / API Access for Browsers / DoS Attack Mitigation Mode. techdocs.f5.com/en-us/bigip-17-5-0/big-ip-asm-implementations/configuring-bot-defense.html
  2. F5 — K42323285: Overview of the unified Bot Defense profile: client classes, enforcement actions, browser verification and Device ID options. my.f5.com/manage/s/article/K42323285
  3. F5 techdocs — Creating Bot Defense Profiles & Assigning Bot Signatures to Security Policies: benign categories (Crawler, HTTP Library, Headless Browser, RSS Reader, Search Bot, Site Monitor, Social Media Agent) and malicious categories (DOS Tool, Network Scanner, Spam Bot, Spyware, Vulnerability Scanner, Web Spider); anomaly categories (Browser Automation, Headless Browser Anomalies, Browser/Search-Engine Masquerading); staging behaviour. techdocs.f5.com
  4. F5 DevCentral / F5 Agility WAF labs — Proactive Bot Defense Using BIG-IP ASM & Lab 3.1 Bot Protection: the JavaScript challenge + Device ID mechanism, the API/non-browser trap, and CAPTCHA escalation. community.f5.com · f5-agility-labs-waf.readthedocs.io
  5. F5 clouddocs (tmsh reference) — security bot-defense profile: deviceid-mode, template, and verification commands (tmsh list /security bot-defense profile … deviceid-mode, tmsh show /analytics dos-l7 report view-by device-id). clouddocs.f5.com/cli/tmsh-reference
  6. F5 — K000147283: Bot defense features for BIG-IP ASM/AWAF and the BIG-IP Advanced WAF product page (Advanced WAF = ASM + Bot Defense + L7 Behavioral DoS + brute-force + DataSafe; ASM EoS 01-Apr-2021). my.f5.com · f5.com
  7. F5 Certification — 303 — BIG-IP ASM Specialist Exam Blueprint (90 min, 80 questions; design/implement/maintain/troubleshoot ASM/Advanced WAF, incl. Bot Defense). education.f5.com/exams/big-ip-asm-specialist-303

What's next?

You can now find the Bot Defense profile, tell Proactive Bot Defense from signatures from anomaly detection, classify clients into the six classes, and pick the right template without blocking Googlebot or your API. The next lesson zooms into the bot problem that hits login pages hardest: brute-force and credential-stuffing protection — and how it overlaps with what you just learned.