You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Install a less-detectable browser path in Docker (Chrome on x86_64; Chromium fallback on ARM64), align browser-compat fingerprint to Linux, and add update+rebuild wrapper modes for scheduled runs.
Made-with: Cursor
Copy file name to clipboardExpand all lines: README.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,6 +85,7 @@ Pick **one** of the following and run it end-to-end. For most people (especially
85
85
86
86
#### Runtime A: Docker (recommended) 🐳
87
87
This repo includes a `docker-compose.yml` service that runs the sync as a **run-once** container.
88
+
The Docker image now installs a real **Google Chrome** channel and uses a Linux-specific browser-compat profile, which reduces `HeadlessChrome`-style fingerprinting that can trigger portal `403 Access Denied` responses.
88
89
89
90
##### Docker Desktop (Windows/macOS)
90
91
1. Install Docker Desktop and make sure `docker compose` works in a terminal.
@@ -122,7 +123,7 @@ To keep the scheduled command simple (and easy to update later), you can schedul
122
123
-**Add arguments** (example):
123
124
124
125
```text
125
-
-NoProfile -File .\scripts\docker_sync.ps1 run --payments-since 2025-01-01
4. Schedule it (e.g., Unraid **User Scripts** plugin) with a daily command like:
161
162
162
163
```bash
163
-
cd /path/to/repo && bash ./scripts/docker_sync.sh run --payments-since 2025-01-01
164
+
cd /path/to/repo && bash ./scripts/docker_sync.sh update-run --payments-since 2025-01-01
164
165
```
165
166
166
167
Keep `./data` persistent so sessions and the SQLite idempotency DB survive restarts.
@@ -340,6 +341,7 @@ See **Quick start → Runtime A: Docker (recommended)** for the Unraid schedulin
340
341
<aid="403-access-denied"></a>
341
342
-**HTTP 403 Access Denied / portal blocks the headless browser**
342
343
- Some servicers (notably Nelnet) occasionally return a bare `HTTP 403 Access Denied` page to headless browsers that look like automation. The tool detects this and retries once with a fresh session automatically.
344
+
- Docker builds now install a real Chrome channel and use a Linux-aligned browser fingerprint. If you updated from an older image, rebuild it first with `docker compose build --no-cache`.
343
345
- If it keeps failing, try the following in order:
344
346
1. Run `sync --headful --manual-mfa` once to establish a fresh, trusted browser session stored under `data/servicer_storage_state_*.json`. Subsequent headless runs reuse that session.
345
347
2. Add `--fresh-session` to force discarding any stale stored session before retrying.
0 commit comments