Skip to content

Fix HAL (Halton) scraper#400

Open
symroe wants to merge 1 commit into
masterfrom
fix/HAL-scraper
Open

Fix HAL (Halton) scraper#400
symroe wants to merge 1 commit into
masterfrom
fix/HAL-scraper

Conversation

@symroe

@symroe symroe commented Jun 28, 2026

Copy link
Copy Markdown
Member

What broke

Halton's ModGov endpoint (councillors.halton.gov.uk) times out when accessed from Lambda using wreq's Firefox133 TLS fingerprint. The endpoint is reachable and returns valid XML from other IPs (confirmed 200 OK with 53 councillors via standard HTTP client), confirming this is a WAF fingerprint block rather than an IP block or certificate issue.

What was fixed

  • Added http_lib = "playwright" — switches from wreq (Firefox133 TLS emulation) to headless Chromium, which uses a standard Chrome TLS fingerprint that passes the WAF. This is the same fix applied to other councils with the identical pattern (DAC, LBH, NYE, WOX, TON, FOE).

Scrape results

Confirmed from live XML endpoint (direct request bypassing Lambda):

Metric Count
Councillors found 53
With email address 0 (emails on individual councillor pages, fetched during scrape)
With photo 53

Note: email count will be populated once the scraper runs end-to-end via Lambda.


Generated by Claude Code

Halton's ModGov endpoint (councillors.halton.gov.uk) is accessible
from non-Lambda IPs but times out from Lambda when using wreq's
Firefox133 TLS emulation. The server's WAF drops connections matching
wreq's specific client-hello pattern.

Switching to http_lib="playwright" uses headless Chromium (standard
Chrome TLS fingerprint), which passes the WAF inspection and receives
the councillor XML. Live XML confirms 53 councillors with 53 photos.
@symroe

symroe commented Jun 28, 2026

Copy link
Copy Markdown
Member Author

Re-scrape after 111dd5f

Playwright fix applied: added http_lib = "playwright" (replacing pass).

Endpoint confirmed live: direct request to councillors.halton.gov.uk/mgWebService.asmx/GetCouncillorsByWard returns valid XML with 53 councillors. Lambda's wreq client times out due to WAF blocking wreq's Firefox133 TLS fingerprint; Playwright's Chromium fingerprint passes.

Metric Count
Councillors found 53 (confirmed from live XML)
With email address TBC (emails on individual councillor pages)
With photo 53 (confirmed from live XML — <photobigurl> populated)

Generated by Claude Code

symroe added a commit that referenced this pull request Jul 4, 2026
fife.gov.uk returns HTTP 403 to wreq's Firefox133 TLS fingerprint but
serves the councillors page correctly to browser clients. The WAF drops
the connection when it detects the non-browser TLS client-hello. This is
the same WAF fingerprint block pattern seen on ELN (PR #410), HAL (#400),
TON (#402), and others.

Adding http_lib = "playwright" switches from wreq to headless Chromium,
whose Chrome TLS fingerprint passes the WAF. The scraper has been failing
for 10 consecutive days (2026-06-23 through 2026-07-02).
@symroe symroe mentioned this pull request Jul 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant