{"ok":true,"message":"proxy running","flaresolverr_enabled":false,"flaresolverr_url":"http://flaresolverr:8191/v1","flaresolverr_hosts":"all hosts","clearance_cache_enabled":true,"clearance_cookie_names":["cf_clearance"],"clearance_cache_hosts":["analyzer.vecert.io","data.oecd.org","www.crisisgroup.org","www.migrationpolicy.org","www.oecd.org"],"solved_state_hosts":["analyzer.vecert.io","data.oecd.org","googleads.g.doubleclick.net","script.crazyegg.com","www.crisisgroup.org","www.migrationpolicy.org","www.oecd.org","www.shiptraffic.net","zoom.earth"],"throttled_hosts":["earthexplorer.usgs.gov","ims.cr.usgs.gov","zoom.earth"],"throttle_max_concurrent_per_host":1,"example_url_note":"Examples are relative; prefix them with the current proxy origin.","mode_examples":{"iframe":"/proxy?url=https%3A%2F%2Fexample.com%2F&__mode=iframe","proxy":"/proxy/https/flightradar24.com/?__mode=proxy","fs_proxy":"/proxy/https/analyzer.vecert.io/?__mode=fs-proxy&__fs_timeout=120000"},"profile_examples":{"tomtom_profile_1":"/proxy/https/plan.tomtom.com/en?__profile=1","shiptraffic_profile_1":"/proxy/http/www.shiptraffic.net/tankers?__profile=1","shiptraffic_profile_2":"/proxy/http/www.shiptraffic.net/tankers?__profile=2","travel_state_profile_3":"/proxy/https/travel.state.gov/content/travel/en/traveladvisories/traveladvisories.html?__profile=3","travel_state_profile_13":"/proxy/https/travel.state.gov/en/international-travel/travel-advisories.html?__profile=13","flightradar_known_good":"/proxy/https/www.flightradar24.com/?__mode=fs-proxy&__fs_timeout=300000&__fs_fallback=1","flightradar_profile_2":"/proxy/https/www.flightradar24.com/?__profile=2&__fs_timeout=300000","zoom_earth_profile_6":"/proxy/https/zoom.earth/maps/satellite/?__profile=6#view=-7.2,23.7,4z/date=2023-06-21,14:15,+2","here_spa_trial":"/proxy/https/wego.here.com/traffic/explore?map=-29.11563,25.26838,7,traffic&__profile=1&__runtime=spa","worldview_profile_2":"/proxy/https/worldview.earthdata.nasa.gov/?__profile=2","debug":"/proxy/http/www.shiptraffic.net/tankers?__profile=2&__debug=1","diagnose":"/diagnose?url=http%3A%2F%2Fwww.shiptraffic.net%2Ftankers&__profile=2&fetch=1","imf_datamapper_profile_11":"/proxy/https/www.imf.org/external/datamapper/NGDP_R_PCH@AFRREG/SSA/OEXP/OIMP?__profile=11"},"profile_presets":{"1":{"label":"maps-proxy","profile":"maps","defaults":{"__mode":"proxy"},"description":"maps runtime with the plain proxy; good first try for TomTom, Shiptraffic, and map-heavy SPAs"},"12":{"label":"maps-proxy-clean-location","profile":"maps","defaults":{"__mode":"proxy","__location":"upstream","__location_persist":"1"},"description":"profile 1 plus a persistent upstream-look-alike address bar, for plan.tomtom.com"},"2":{"label":"maps-fs-proxy","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"120000","__fs_fallback":"1"},"description":"maps runtime with FlareSolverr for document GETs and plain-proxy fallback"},"3":{"label":"direct-iframe","profile":"minimal","defaults":{"__mode":"iframe"},"description":"direct target iframe for sites that block the proxy path; cannot bypass upstream frame restrictions"},"4":{"label":"minimal-proxy","profile":"minimal","defaults":{"__mode":"proxy"},"description":"plain proxy with server-side rewrites only and no browser runtime"},"5":{"label":"protected-assets","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_lock":"1","__location":"iframe-upstream"},"description":"maps/FlareSolverr preset with a longer locked solve, no main-document plain-proxy fallback, and same-host protected asset retries"},"6":{"label":"maps-nav-guard","profile":"maps","defaults":{"__mode":"proxy","__compat":"zoom-earth","__fs_retry_document":"1"},"description":"maps/plain-proxy preset for Zoom Earth: disables its navigation-out guard and retries a Cloudflare-blocked main document through FlareSolverr"},"7":{"label":"protected-assets-plus","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_svg_assets":"1","__fs_xhr_assets":"1","__fs_strip_stale_init":"1","__force_utf8_decode":"1","__fs_lock":"1","__location":"iframe-upstream"},"description":"profile 5 plus SVG/AJAX asset retries, stale-init-marker stripping, and forced UTF-8 decoding for text responses"},"13":{"label":"protected-assets-plus-no-clearance-cache","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_svg_assets":"1","__fs_xhr_assets":"1","__fs_strip_stale_init":"1","__force_utf8_decode":"1","__fs_lock":"1","__location":"iframe-upstream","__fs_cache":"0","__location_persist":"1"},"description":"profile 7 plus disabled clearance-cache reuse and a persistent upstream address bar, dedicated to travel.state.gov"},"14":{"label":"protected-assets-plus-crisisgroup","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_svg_assets":"1","__fs_xhr_assets":"1","__fs_strip_stale_init":"1","__force_utf8_decode":"1","__fs_lock":"1","__location":"iframe-upstream"},"description":"profile 7, dedicated to crisisgroup.org's CrisisWatch page (SVG icons and per-country GeoJSON data)"},"8":{"label":"protected-assets-clean-url","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_lock":"1","__location":"iframe-upstream","__urlparams":"hidden"},"description":"profile 5 plus hiding our own __ control query params from the visible address bar, for SPAs like IMF DataMapper"},"9":{"label":"strip-leaked-self-paths","profile":"maps","defaults":{"__mode":"proxy","__compat":"strip-self-paths","__location":"upstream","__location_persist":"1"},"description":"maps/plain-proxy preset that strips leaked self-referential proxy paths and keeps a persistent upstream address bar, for intrepidtravel.com"},"10":{"label":"maps-fs-proxy-klaro-contextual","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"120000","__fs_fallback":"1","__compat":"klaro-contextual"},"description":"profile 2 plus a fallback click handler for Klaro's per-embed consent button, for migrationpolicy.org's Tableau embeds"},"11":{"label":"imf-datamapper-clean-location","profile":"maps","defaults":{"__mode":"fs-proxy","__fs_timeout":"300000","__fs_fallback":"0","__fs_retry_assets":"1","__fs_lock":"1","__urlparams":"hidden","__location":"upstream","__location_persist":"1","__fs_strip_stale_render":"1","__fs_defer_chart_layout":"1","__fs_prefetch_chart_data":"1"},"description":"profile 8 plus persistent address-bar rewriting, SVG url() rewriting, and stale-chart-markup stripping, for IMF DataMapper charts"},"15":{"label":"extract-html-embed","profile":"minimal","defaults":{"__mode":"proxy","__extract_embed":"data_unit"},"description":"Pulls just one Reach plc 'HtmlEmbed' content-unit (e.g. an interactive-map data-unit widget) out of the article and serves only that widget, discarding the surrounding page; override __extract_embed to target a different embedType (e.g. 'jotform'). Built for MyLondon's crime-map article's 'Dangerous Places' data-unit, which has no iframe of its own to point at directly."}},"profiles":{"standard":"current browser runtime and server rewrites; omitted __profile resolves here","minimal":"server-side rewrites only; no browser monkey-patch runtime","spa":"standard runtime plus idempotent durable-control preservation for generated proxy URLs","maps":"spa plus module/worker-oriented rewriting and service-worker stub by default","compat":"maps plus named compatibility patches; default patch set is gravito; opt-in zoom-earth is available"},"url_controls":{"__mode":"iframe for direct target iframe, proxy for plain proxy only, fs-proxy for FlareSolverr/proxy","__profile":"numeric presets 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, or named profiles standard, minimal, spa, maps, compat; omitted keeps current behavior","__runtime":"optional override: none, standard, spa, maps","__sw":"optional service-worker override: env, stub, allow, block","__location":"optional browser location override: proxy, upstream, iframe-upstream","__compat":"optional compatibility override: default, none, gravito, zoom-earth, strip-self-paths, klaro-contextual","__debug":"1 to inject browser diagnostics overlay and capture console/resource errors","__fs":"legacy control: 1 to enable FlareSolverr, 0 to disable","__fs_timeout":"timeout in milliseconds, for example 120000","__fs_url":"optional FlareSolverr API URL","__fs_fallback":"1 to fall back to normal proxy if FlareSolverr fails; fs-proxy defaults to fail clearly","__fs_assets":"1 to also send CSS/JS/JSON/XHR GETs through FlareSolverr; default is 0","__fs_retry_assets":"1 to retry same-host Cloudflare-blocked static assets through FlareSolverr after plain proxy fails; default is 0","__fs_retry_document":"1 to retry a Cloudflare-blocked MAIN DOCUMENT through FlareSolverr after a plain-proxy (__mode=proxy) fetch looks blocked; only applies under __mode=proxy, since __mode=fs-proxy already always solves the document up front - for a site whose edge only challenges intermittently, this keeps the fast plain-fetch path for the common case and only pays a solve's latency when the response actually looks blocked; default is 0","__fs_svg_assets":"1 to also retry same-host Cloudflare-blocked .svg assets specifically (requires __fs_retry_assets=1 too); other binary formats like png/woff are never retried, since FlareSolverr cannot faithfully reconstruct them","__fs_xhr_assets":"1 to also retry same-host Cloudflare-blocked extensionless fetch/XHR sub-requests (e.g. a JSON AJAX endpoint), requires __fs_retry_assets=1 too","__fs_strip_stale_init":"1 to strip data-*-initialized-style attributes from FlareSolverr-solved documents, since FlareSolverr's own browser session already ran the page's init scripts before capturing it, falsely signaling to a real visitor's fresh scripts that widgets are already initialized","__force_utf8_decode":"1 to decode HTML/CSS/JS as UTF-8 whenever the upstream Content-Type omits an explicit charset, instead of trusting the legacy HTTP/1.1 ISO-8859-1 default - that default silently mis-decodes non-ASCII bytes into mojibake (and can throw a SyntaxError that kills an entire script) for any charset-less text/* response fetched on the plain (non-FlareSolverr) path; a no-op for FlareSolverr-sourced responses, which always carry an explicit charset already","__fs_lock":"1 to serialize FlareSolverr solves per upstream host; useful for fragile protected pages","__fs_cache":"1 to opt into clearance-cache skip-solver behavior; default follows PROXY_FLARESOLVERR_CLEARANCE_CACHE","__fs_cache_refresh":"1 to force one fresh solve and replace cached clearance for this request","__urlparams":"optional: visible (default) or hidden. hidden redirects once to strip our __ controls from the address bar/location.search - for SPAs (e.g. IMF DataMapper) whose own code misbehaves when it reads unexpected query params back off window.location; the chosen controls are remembered server-side per upstream host instead","__location_persist":"1 to keep reapplying the __location=upstream/iframe-upstream cosmetic address-bar rewrite on every client-side history.pushState/replaceState, not just the initial page load - for SPAs (e.g. IMF DataMapper) whose own router matches routes against location.pathname and falls back to a default view whenever it doesn't start with the app's own mount path, which it never does through this proxy without this","note":"durable controls are propagated to rewritten proxy URLs, stripped before upstream requests, and solved cookies/User-Agent are replayed for fs-proxy asset requests"}}