Crawling Commercial BOFU

How to detect Googlebot 403 blocks from your WAF or CDN

A WAF upgrade reclassifies Googlebot. Crawls drop within 24 hours. Indexation softens over days. Catch the regression the same morning, not weeks later.

Googlebot blocked by a WAF returning 403 while a real user passes through to the page normally
Real users see 200; Googlebot sees 403. Generic monitoring from your office IP misses the gap.

A Cloudflare bot management upgrade ships on Tuesday. By Friday your impressions in GSC start to soften. By the following week, your top-of-funnel queries are falling out of position 1–3 and you have no idea why. Cause: the WAF reclassified Googlebot as a bot worth rate-limiting and is now serving 403s on a meaningful share of requests. This article is the dedicated monitoring setup that turns a multi-week mystery into a same-day fix.

What this looks like before you notice in GSC

  • Real users browse normally — no incident in monitoring tools that only check from your office IP.
  • Googlebot crawl rate in GSC drops 30–80% within 24 hours of the WAF change.
  • A subset of URLs return 403 specifically to the Googlebot user-agent; the same URLs return 200 to other agents.
  • Pages indexed but not recently recrawled go stale; ranking signals erode silently.

2-UA setup that catches this

  1. Create a crawl iteration with User-Agent: Googlebot Desktop and a small concurrency (2–4 threads — you are testing the WAF, not flooding it).
  2. Create a second iteration on the same URL set with a browser user agent.
  3. Compare status code distributions. A 403 gap between the two iterations on the same URLs is your smoking gun.
  4. Add the top 20 high-traffic URLs to Tracked URLs with Expected status: 200 and force the request user-agent to Googlebot. This is the recurring alert that catches the next WAF change.
  5. Confirm Site → GSC is connected so you can correlate crawl-status alerts with impressions decline on the same URLs.

The alert you wait for

The trigger is a tracked URL flipping from 200 to 403 (or 429) under the Googlebot user agent while the same URL returns 200 to other agents. The 2-UA dashboard shows the status histogram and the response headers, so you can quickly identify the WAF signature (cf-mitigated, x-akamai-grn, x-sucuri-id) that gates the response.

Ten-minute response playbook

  1. Confirm the 403 is from your WAF, not your origin (check the response headers and CDN logs).
  2. Pull the WAF event log filtered by the 2-UA crawl IPs and by User-Agent contains "Googlebot".
  3. Adopt the official Google verification: reverse DNS lookup on the source IP and forward DNS confirm to a googlebot.com hostname. Allowlist by reverse DNS rule, not by IP list.
  4. Re-run the Googlebot-UA crawl iteration to confirm 200s are restored across the URL set.
  5. Submit the affected URLs for recrawl via GSC → URL Inspection → Request Indexing to speed recovery.

Three configuration patterns that introduce silent Googlebot blocks

  • Bot management rule with "challenge unknown bots" — Googlebot from new IP ranges occasionally trips this until the rule learns. Reverse-DNS allowlist is the only stable mitigation.
  • Rate limiting per ASN — Googlebot's ASN aggregates many crawl IPs; per-ASN rate limits without bot-aware exceptions throttle real crawl traffic.
  • JavaScript challenges on dynamic routes — Googlebot executes JS, but slowly; aggressive challenge timeouts produce intermittent 403s that come and go and look like phantom incidents.

Run an experiment from the free crawler with the Googlebot UA on twenty URLs of your site; if even one returns a 403 or 429, open a project for continuous monitoring across all critical templates.