fix: captive portal auto-accept — extract form action + POST submit
GettyLink returned HTTP 200 with a login page but the old code just
re-fetched the connectivity check URL. New flow:
1. Detect portal (connectivity check != 204)
2. Follow redirects, save portal page HTML
3. Extract form action URL from the page
4. POST to the form action (accepts terms on most portals)
5. Re-check connectivity after 1s propagation delay
Logs from USB showed: portal detected → auto-accept did nothing →
WebSocket connections got 302 Captive Portal endlessly.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>