veilrender 0.6.2__tar.gz → 0.6.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {veilrender-0.6.2 → veilrender-0.6.4}/PKG-INFO +30 -2
- {veilrender-0.6.2 → veilrender-0.6.4}/README.md +29 -1
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/__init__.py +1 -1
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/httpserver.py +564 -68
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/soup.py +523 -47
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/app.py +11 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/browser.py +228 -14
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/cdp_proxy.py +1 -1
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/config.py +65 -15
- veilrender-0.6.4/src/veilrender/egress_proxy.py +1071 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/filters.py +63 -4
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/metrics.py +42 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/render.py +21 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/screenshot.py +22 -0
- veilrender-0.6.4/src/veilrender/url_validator.py +266 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/PKG-INFO +30 -2
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/SOURCES.txt +7 -1
- veilrender-0.6.4/tests/test_browser_attestation.py +283 -0
- veilrender-0.6.4/tests/test_config.py +46 -0
- veilrender-0.6.4/tests/test_egress_proxy.py +784 -0
- veilrender-0.6.4/tests/test_filters.py +110 -0
- veilrender-0.6.4/tests/test_url_validator.py +113 -0
- veilrender-0.6.2/src/veilrender/url_validator.py +0 -164
- {veilrender-0.6.2 → veilrender-0.6.4}/pyproject.toml +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/setup.cfg +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/__main__.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/__init__.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/cache.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/ratelimit.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/readability.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/_vendor/s3.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/auth.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/data/__init__.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/data/blocklist.txt +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/fonts.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/models.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/ratelimit.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/__init__.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/dashboard.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/fonts_route.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/routes/health.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/stats.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender/storage.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/dependency_links.txt +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/entry_points.txt +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/requires.txt +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/src/veilrender.egg-info/top_level.txt +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/tests/test_fonts.py +0 -0
- {veilrender-0.6.2 → veilrender-0.6.4}/tests/test_models.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: veilrender
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
4
4
|
Summary: Headless browser rendering API — self-hostable on HF Spaces, Docker, or bare metal
|
|
5
5
|
Author: Peng Ding
|
|
6
6
|
License-Expression: MIT
|
|
@@ -166,7 +166,7 @@ JSON API for live dashboard data (polled by the dashboard UI).
|
|
|
166
166
|
|
|
167
167
|
### WS /cdp
|
|
168
168
|
|
|
169
|
-
Direct CDP WebSocket proxy to the browser. Supports `?worker=N` for targeting specific workers in a pool.
|
|
169
|
+
Direct CDP WebSocket proxy to the browser. Supports `?worker=N` for targeting specific workers in a pool. Disabled by default (`VEILRENDER_CDP_ENABLED=true` to opt in); raw CDP clients can create contexts outside the egress proxy.
|
|
170
170
|
|
|
171
171
|
## Configuration
|
|
172
172
|
|
|
@@ -191,12 +191,32 @@ All settings via `VEILRENDER_*` environment variables:
|
|
|
191
191
|
| `VEILRENDER_WORKERS` | *(none)* | Comma-separated worker endpoints (enables pool mode) |
|
|
192
192
|
| `VEILRENDER_WORKER_MAX_CONCURRENT` | `5` | Per-worker page concurrency |
|
|
193
193
|
| `VEILRENDER_WORKER_HEALTH_INTERVAL` | `10` | Health check interval (seconds) |
|
|
194
|
+
| `VEILRENDER_EGRESS_BIND` | `127.0.0.1` | Egress proxy bind address (`0.0.0.0` in pool mode) |
|
|
195
|
+
| `VEILRENDER_EGRESS_PORT` | `0` | Egress proxy port (`0` = ephemeral; set a fixed port for pool mode) |
|
|
196
|
+
| `VEILRENDER_EGRESS_ADVERTISE` | *(none)* | Proxy URL given to browsers (e.g. `http://gateway:7870`) |
|
|
197
|
+
| `VEILRENDER_EGRESS_PROXY_TOKEN` | *(none)* | Proxy Basic-auth password; required for non-loopback binds |
|
|
198
|
+
| `VEILRENDER_UPSTREAM_PROXY` | *(none)* | Optional upstream proxy (`http`, `https`, `socks5`) |
|
|
199
|
+
| `VEILRENDER_UPSTREAM_PIN_IP` | `true` | Send the validated IP to the upstream proxy instead of the hostname |
|
|
200
|
+
| `VEILRENDER_CDP_ENABLED` | `false` | Enable the raw `/cdp` endpoint (can bypass the proxy — trusted operators only) |
|
|
194
201
|
|
|
195
202
|
Worker endpoint formats:
|
|
196
203
|
- `cdp://host:9222` or `http://host:9222` — Chromium CDP worker
|
|
197
204
|
- `playwright://host:1234/ws-path` — Firefox/Camoufox Playwright worker
|
|
198
205
|
- `playwrights://host:1234/ws-path` — TLS Playwright worker
|
|
199
206
|
|
|
207
|
+
> **Outbound request policy:** all HTTP(S)/WebSocket traffic from every
|
|
208
|
+
> browser is routed through an in-process egress proxy that refuses
|
|
209
|
+
> destinations outside the global address space, including each redirect hop.
|
|
210
|
+
> It listens on loopback by default and needs no configuration for
|
|
211
|
+
> single-instance deployments. Pool deployments must expose it to the worker
|
|
212
|
+
> containers (see the pool examples below). A worker whose traffic does not
|
|
213
|
+
> reach the proxy is disabled at startup. The raw `/cdp` endpoint is off by
|
|
214
|
+
> default (`VEILRENDER_CDP_ENABLED=true` to opt in). WebRTC/QUIC UDP is not
|
|
215
|
+
> proxied; see [SECURITY.md](SECURITY.md) for the browser flags remote workers
|
|
216
|
+
> need. If pool-mode navigations fail with proxy or tunnel errors, check that
|
|
217
|
+
> `VEILRENDER_EGRESS_ADVERTISE` is reachable from the worker containers and
|
|
218
|
+
> that `VEILRENDER_EGRESS_PROXY_TOKEN` matches.
|
|
219
|
+
|
|
200
220
|
### Browser Binary
|
|
201
221
|
|
|
202
222
|
| Variable | Default | Description |
|
|
@@ -237,6 +257,10 @@ services:
|
|
|
237
257
|
image: oaklight/veilrender:gateway
|
|
238
258
|
environment:
|
|
239
259
|
- VEILRENDER_WORKERS=cdp://worker1:9222,cdp://worker2:9222
|
|
260
|
+
- VEILRENDER_EGRESS_BIND=0.0.0.0
|
|
261
|
+
- VEILRENDER_EGRESS_PORT=7870
|
|
262
|
+
- VEILRENDER_EGRESS_ADVERTISE=http://veilrender:7870
|
|
263
|
+
- VEILRENDER_EGRESS_PROXY_TOKEN=${VEILRENDER_EGRESS_PROXY_TOKEN:?set a random token}
|
|
240
264
|
|
|
241
265
|
worker1:
|
|
242
266
|
image: cloakhq/cloakbrowser
|
|
@@ -257,6 +281,10 @@ services:
|
|
|
257
281
|
image: oaklight/veilrender:gateway
|
|
258
282
|
environment:
|
|
259
283
|
- VEILRENDER_WORKERS=cdp://chromium:9222,playwright://camoufox:1234/ws
|
|
284
|
+
- VEILRENDER_EGRESS_BIND=0.0.0.0
|
|
285
|
+
- VEILRENDER_EGRESS_PORT=7870
|
|
286
|
+
- VEILRENDER_EGRESS_ADVERTISE=http://veilrender:7870
|
|
287
|
+
- VEILRENDER_EGRESS_PROXY_TOKEN=${VEILRENDER_EGRESS_PROXY_TOKEN:?set a random token}
|
|
260
288
|
|
|
261
289
|
chromium:
|
|
262
290
|
image: cloakhq/cloakbrowser
|
|
@@ -146,7 +146,7 @@ JSON API for live dashboard data (polled by the dashboard UI).
|
|
|
146
146
|
|
|
147
147
|
### WS /cdp
|
|
148
148
|
|
|
149
|
-
Direct CDP WebSocket proxy to the browser. Supports `?worker=N` for targeting specific workers in a pool.
|
|
149
|
+
Direct CDP WebSocket proxy to the browser. Supports `?worker=N` for targeting specific workers in a pool. Disabled by default (`VEILRENDER_CDP_ENABLED=true` to opt in); raw CDP clients can create contexts outside the egress proxy.
|
|
150
150
|
|
|
151
151
|
## Configuration
|
|
152
152
|
|
|
@@ -171,12 +171,32 @@ All settings via `VEILRENDER_*` environment variables:
|
|
|
171
171
|
| `VEILRENDER_WORKERS` | *(none)* | Comma-separated worker endpoints (enables pool mode) |
|
|
172
172
|
| `VEILRENDER_WORKER_MAX_CONCURRENT` | `5` | Per-worker page concurrency |
|
|
173
173
|
| `VEILRENDER_WORKER_HEALTH_INTERVAL` | `10` | Health check interval (seconds) |
|
|
174
|
+
| `VEILRENDER_EGRESS_BIND` | `127.0.0.1` | Egress proxy bind address (`0.0.0.0` in pool mode) |
|
|
175
|
+
| `VEILRENDER_EGRESS_PORT` | `0` | Egress proxy port (`0` = ephemeral; set a fixed port for pool mode) |
|
|
176
|
+
| `VEILRENDER_EGRESS_ADVERTISE` | *(none)* | Proxy URL given to browsers (e.g. `http://gateway:7870`) |
|
|
177
|
+
| `VEILRENDER_EGRESS_PROXY_TOKEN` | *(none)* | Proxy Basic-auth password; required for non-loopback binds |
|
|
178
|
+
| `VEILRENDER_UPSTREAM_PROXY` | *(none)* | Optional upstream proxy (`http`, `https`, `socks5`) |
|
|
179
|
+
| `VEILRENDER_UPSTREAM_PIN_IP` | `true` | Send the validated IP to the upstream proxy instead of the hostname |
|
|
180
|
+
| `VEILRENDER_CDP_ENABLED` | `false` | Enable the raw `/cdp` endpoint (can bypass the proxy — trusted operators only) |
|
|
174
181
|
|
|
175
182
|
Worker endpoint formats:
|
|
176
183
|
- `cdp://host:9222` or `http://host:9222` — Chromium CDP worker
|
|
177
184
|
- `playwright://host:1234/ws-path` — Firefox/Camoufox Playwright worker
|
|
178
185
|
- `playwrights://host:1234/ws-path` — TLS Playwright worker
|
|
179
186
|
|
|
187
|
+
> **Outbound request policy:** all HTTP(S)/WebSocket traffic from every
|
|
188
|
+
> browser is routed through an in-process egress proxy that refuses
|
|
189
|
+
> destinations outside the global address space, including each redirect hop.
|
|
190
|
+
> It listens on loopback by default and needs no configuration for
|
|
191
|
+
> single-instance deployments. Pool deployments must expose it to the worker
|
|
192
|
+
> containers (see the pool examples below). A worker whose traffic does not
|
|
193
|
+
> reach the proxy is disabled at startup. The raw `/cdp` endpoint is off by
|
|
194
|
+
> default (`VEILRENDER_CDP_ENABLED=true` to opt in). WebRTC/QUIC UDP is not
|
|
195
|
+
> proxied; see [SECURITY.md](SECURITY.md) for the browser flags remote workers
|
|
196
|
+
> need. If pool-mode navigations fail with proxy or tunnel errors, check that
|
|
197
|
+
> `VEILRENDER_EGRESS_ADVERTISE` is reachable from the worker containers and
|
|
198
|
+
> that `VEILRENDER_EGRESS_PROXY_TOKEN` matches.
|
|
199
|
+
|
|
180
200
|
### Browser Binary
|
|
181
201
|
|
|
182
202
|
| Variable | Default | Description |
|
|
@@ -217,6 +237,10 @@ services:
|
|
|
217
237
|
image: oaklight/veilrender:gateway
|
|
218
238
|
environment:
|
|
219
239
|
- VEILRENDER_WORKERS=cdp://worker1:9222,cdp://worker2:9222
|
|
240
|
+
- VEILRENDER_EGRESS_BIND=0.0.0.0
|
|
241
|
+
- VEILRENDER_EGRESS_PORT=7870
|
|
242
|
+
- VEILRENDER_EGRESS_ADVERTISE=http://veilrender:7870
|
|
243
|
+
- VEILRENDER_EGRESS_PROXY_TOKEN=${VEILRENDER_EGRESS_PROXY_TOKEN:?set a random token}
|
|
220
244
|
|
|
221
245
|
worker1:
|
|
222
246
|
image: cloakhq/cloakbrowser
|
|
@@ -237,6 +261,10 @@ services:
|
|
|
237
261
|
image: oaklight/veilrender:gateway
|
|
238
262
|
environment:
|
|
239
263
|
- VEILRENDER_WORKERS=cdp://chromium:9222,playwright://camoufox:1234/ws
|
|
264
|
+
- VEILRENDER_EGRESS_BIND=0.0.0.0
|
|
265
|
+
- VEILRENDER_EGRESS_PORT=7870
|
|
266
|
+
- VEILRENDER_EGRESS_ADVERTISE=http://veilrender:7870
|
|
267
|
+
- VEILRENDER_EGRESS_PROXY_TOKEN=${VEILRENDER_EGRESS_PROXY_TOKEN:?set a random token}
|
|
240
268
|
|
|
241
269
|
chromium:
|
|
242
270
|
image: cloakhq/cloakbrowser
|