Error (2026-07-11)
Page.goto: Timeout 30000ms exceeded.
navigating to "https://democracy.camden.gov.uk/mgWebService.asmx/GetCouncillorsByWard"
Background
Previous issues #310, #337, #343 all covered the same Cloudflare challenge block; #343 was closed 2026-06-26 as "completed" but the scraper is still failing today with the same pattern.
Current state
The scraper has use_proxy = True + http_lib = "playwright". As noted in issue #343: the PROXY_URL is not passed to PlaywrightHTTPClient, so use_proxy = True is silently ignored when playwright is the HTTP client. Playwright connects directly from Lambda and hits the Cloudflare Managed Challenge, which times out after 30 seconds.
From our environment: democracy.camden.gov.uk returns HTTP 403 with a Cloudflare "Just a moment..." managed challenge page (confirmed: cf-mitigated: challenge, cType: 'managed').
Fix patterns ruled out
- HTTPS migration — already HTTPS
verify_requests = False — not a cert issue
- Removing
use_proxy = True — has no effect; playwright already ignores the proxy setting (confirmed in base.py lines 71–74)
http_lib = "playwright" without proxy — already set; Cloudflare Managed Challenge requires a non-datacenter IP that can pass Cloudflare's bot score check
What needs to happen
This requires either:
Error (2026-07-11)
Background
Previous issues #310, #337, #343 all covered the same Cloudflare challenge block; #343 was closed 2026-06-26 as "completed" but the scraper is still failing today with the same pattern.
Current state
The scraper has
use_proxy = True+http_lib = "playwright". As noted in issue #343: thePROXY_URLis not passed toPlaywrightHTTPClient, souse_proxy = Trueis silently ignored when playwright is the HTTP client. Playwright connects directly from Lambda and hits the Cloudflare Managed Challenge, which times out after 30 seconds.From our environment:
democracy.camden.gov.ukreturns HTTP 403 with a Cloudflare "Just a moment..." managed challenge page (confirmed:cf-mitigated: challenge,cType: 'managed').Fix patterns ruled out
verify_requests = False— not a cert issueuse_proxy = True— has no effect; playwright already ignores the proxy setting (confirmed in base.py lines 71–74)http_lib = "playwright"without proxy — already set; Cloudflare Managed Challenge requires a non-datacenter IP that can pass Cloudflare's bot score checkWhat needs to happen
This requires either:
proxy_urltoPlaywrightHTTPClientso that requests route through a residential/non-datacenter IP (same fix needed as CMD (Camden) scraper failing — Cloudflare Managed Challenge blocking playwright #343 described)