mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-01-04 01:46:54 +10:00
- Add comprehensive default CHROME_ARGS in config.json with 55+ flags for deterministic rendering, security, performance, and UI suppression - Update chrome_utils.js launchChromium() to read CHROME_ARGS and CHROME_ARGS_EXTRA from environment variables (set by get_config()) - Add getEnvArray() helper to parse JSON arrays or comma-separated strings from environment variables - Separate args into three categories: 1. baseArgs: Static flags from CHROME_ARGS config (configurable) 2. dynamicArgs: Runtime-computed flags (port, sandbox, headless, etc.) 3. extraArgs: User overrides from CHROME_ARGS_EXTRA - Add CHROME_SANDBOX config option to control --no-sandbox flag Args are now configurable via: - config.json defaults - ArchiveBox.conf file - Environment variables - Per-crawl/snapshot config overrides
152 lines
5.1 KiB
JSON
152 lines
5.1 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"CHROME_BINARY": {
|
|
"type": "string",
|
|
"default": "chromium",
|
|
"x-aliases": ["CHROMIUM_BINARY", "GOOGLE_CHROME_BINARY"],
|
|
"description": "Path to Chrome/Chromium binary"
|
|
},
|
|
"CHROME_NODE_BINARY": {
|
|
"type": "string",
|
|
"default": "node",
|
|
"x-fallback": "NODE_BINARY",
|
|
"description": "Path to Node.js binary (for Puppeteer)"
|
|
},
|
|
"CHROME_TIMEOUT": {
|
|
"type": "integer",
|
|
"default": 60,
|
|
"minimum": 5,
|
|
"x-fallback": "TIMEOUT",
|
|
"description": "Timeout for Chrome operations in seconds"
|
|
},
|
|
"CHROME_HEADLESS": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run Chrome in headless mode"
|
|
},
|
|
"CHROME_SANDBOX": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Enable Chrome sandbox (disable in Docker with --no-sandbox)"
|
|
},
|
|
"CHROME_RESOLUTION": {
|
|
"type": "string",
|
|
"default": "1440,2000",
|
|
"pattern": "^\\d+,\\d+$",
|
|
"x-fallback": "RESOLUTION",
|
|
"description": "Browser viewport resolution (width,height)"
|
|
},
|
|
"CHROME_USER_DATA_DIR": {
|
|
"type": "string",
|
|
"default": "",
|
|
"description": "Path to Chrome user data directory for persistent sessions (derived from ACTIVE_PERSONA if not set)"
|
|
},
|
|
"CHROME_USER_AGENT": {
|
|
"type": "string",
|
|
"default": "",
|
|
"x-fallback": "USER_AGENT",
|
|
"description": "User agent string for Chrome"
|
|
},
|
|
"CHROME_ARGS": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"default": [
|
|
"--no-first-run",
|
|
"--no-default-browser-check",
|
|
"--disable-default-apps",
|
|
"--disable-sync",
|
|
"--disable-infobars",
|
|
"--disable-blink-features=AutomationControlled",
|
|
"--disable-component-update",
|
|
"--disable-domain-reliability",
|
|
"--disable-breakpad",
|
|
"--disable-client-side-phishing-detection",
|
|
"--disable-hang-monitor",
|
|
"--disable-speech-synthesis-api",
|
|
"--disable-speech-api",
|
|
"--disable-print-preview",
|
|
"--disable-notifications",
|
|
"--disable-desktop-notifications",
|
|
"--disable-popup-blocking",
|
|
"--disable-prompt-on-repost",
|
|
"--disable-external-intent-requests",
|
|
"--disable-session-crashed-bubble",
|
|
"--disable-search-engine-choice-screen",
|
|
"--disable-datasaver-prompt",
|
|
"--ash-no-nudges",
|
|
"--hide-crash-restore-bubble",
|
|
"--suppress-message-center-popups",
|
|
"--noerrdialogs",
|
|
"--no-pings",
|
|
"--silent-debugger-extension-api",
|
|
"--deny-permission-prompts",
|
|
"--safebrowsing-disable-auto-update",
|
|
"--metrics-recording-only",
|
|
"--password-store=basic",
|
|
"--use-mock-keychain",
|
|
"--disable-cookie-encryption",
|
|
"--font-render-hinting=none",
|
|
"--force-color-profile=srgb",
|
|
"--disable-partial-raster",
|
|
"--disable-skia-runtime-opts",
|
|
"--disable-2d-canvas-clip-aa",
|
|
"--enable-webgl",
|
|
"--hide-scrollbars",
|
|
"--export-tagged-pdf",
|
|
"--generate-pdf-document-outline",
|
|
"--disable-lazy-loading",
|
|
"--disable-renderer-backgrounding",
|
|
"--disable-background-networking",
|
|
"--disable-background-timer-throttling",
|
|
"--disable-backgrounding-occluded-windows",
|
|
"--disable-ipc-flooding-protection",
|
|
"--disable-extensions-http-throttling",
|
|
"--disable-field-trial-config",
|
|
"--disable-back-forward-cache",
|
|
"--autoplay-policy=no-user-gesture-required",
|
|
"--disable-gesture-requirement-for-media-playback",
|
|
"--lang=en-US,en;q=0.9",
|
|
"--log-level=2",
|
|
"--enable-logging=stderr"
|
|
],
|
|
"x-aliases": ["CHROME_DEFAULT_ARGS"],
|
|
"description": "Default Chrome command-line arguments (static flags only, dynamic args like --user-data-dir are added at runtime)"
|
|
},
|
|
"CHROME_ARGS_EXTRA": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
"default": [],
|
|
"x-aliases": ["CHROME_EXTRA_ARGS"],
|
|
"description": "Extra arguments to append to Chrome command (for user customization)"
|
|
},
|
|
"CHROME_PAGELOAD_TIMEOUT": {
|
|
"type": "integer",
|
|
"default": 60,
|
|
"minimum": 5,
|
|
"x-fallback": "CHROME_TIMEOUT",
|
|
"description": "Timeout for page navigation/load in seconds"
|
|
},
|
|
"CHROME_WAIT_FOR": {
|
|
"type": "string",
|
|
"default": "networkidle2",
|
|
"enum": ["domcontentloaded", "load", "networkidle0", "networkidle2"],
|
|
"description": "Page load completion condition (domcontentloaded, load, networkidle0, networkidle2)"
|
|
},
|
|
"CHROME_DELAY_AFTER_LOAD": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"minimum": 0,
|
|
"description": "Extra delay in seconds after page load completes before archiving (useful for JS-heavy SPAs)"
|
|
},
|
|
"CHROME_CHECK_SSL_VALIDITY": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"x-fallback": "CHECK_SSL_VALIDITY",
|
|
"description": "Whether to verify SSL certificates (disable for self-signed certs)"
|
|
}
|
|
}
|
|
}
|