20 Commits
Author SHA1 Message Date
germondai fac3445f74 chore(release): prepare v1.4.0 2026-08-10 19:21:14 +02:00
germondai 66e48fd5fe fix(api): support Prowlarr POST content metadata 2026-08-09 05:15:49 +02:00
germondai c2ab109fe5 fix: report effective URL after redirects 2026-08-08 18:24:29 +02:00
germondai 097565a19f chore(release): prepare v1.3.1 2026-08-02 15:51:35 +02:00
germondai 2fc1031874 docs: update API, architecture, proxy, deployment, and integration guides 2026-08-02 02:35:35 +02:00
germondai 3a4d7491b3 Merge pull request #37 from funkypenguin/fix/bound-restart-and-reclaim-stalled 2026-07-27 02:40:41 +02:00
germondai f08f5a2b44 chore(release): prepare v1.2.0 2026-07-26 16:18:47 +02:00
germondai f8c90f0c49 docs: replace dragonflydb references with redis 8.8 and reformat markdown 2026-07-11 17:00:29 +02:00
germondai 09bdd18b30 docs: update docs and README for Dragonfly and new structure 2026-07-10 08:31:54 +02:00
Erik Dasque 7d3204351c fix(tiers): recognize more block/error page variants, add Tier 4 captcha parity, surface proxy/timing info
Found while running trawl against a large batch of real-world URLs: several
cases where the API returned 200 with content that was actually a blocked
page, an empty challenge stub, or Firefox's own error page. Each was a
detection gap where a tier didn't recognize the failure and reported it as a
successful scrape.

- Recognize Firefox's about:neterror/about:certerror page (browser never
  reached a server), Cloudflare's static "you have been blocked" WAF-deny
  page, and a lean CF challenge stub (blank title/body, just the bootstrap
  script) — the stub check is gated on page size since the same script
  snippet also appears on ordinary, fully-loaded CF pages as bot-management
  telemetry.
- Wire the existing isBlocked() status-code check (403/429/202) into Tiers 2
  and 3 — previously only Tier 1 checked status code, so a generic non-CF WAF
  deny that escalated to a browser tier was reported as a success.
- Bring Tier 4 up to parity with Tier 3: captcha solving and the same block
  detection. Sites that need Tier 4 for IP reputation can just as easily have
  an in-page captcha widget.
- Add proxyUsed: boolean to the response, set from the actual proxy used by
  the winning tier — previously the only signal was inferring from tier === 4,
  which doesn't distinguish "no proxy" from Tier 3's datacenter proxy.
- Attach the per-tier timings array to thrown errors via a new ScrapeError,
  and return it in /scrape's error response. The array was already being
  built in memory; it just never survived the throw, so failed requests gave
  a flat error string with no way to see which tier failed or why.
- Add process-level uncaughtException/unhandledRejection handlers. One target
  site's page threw a JS error that Camoufox/Firefox reports in a shape
  playwright-core's dispatcher doesn't expect, which crashed the entire
  process and dropped every in-flight request across all clients.
- Update the native API docs for the new response fields and error shape.

All additive — no existing fields changed shape. Full existing test suite
passes (58/58), and this is rebuilt/smoke-tested against latest dev.
2026-07-07 15:58:54 +00:00
GermondandGitHub 8d69e660c3 Merge branch 'main' into fix/pr-8-hardening 2026-07-06 01:33:13 +02:00
germondai 59f78f38e7 docs: document method/body support and header sanitisation 2026-07-06 01:12:30 +02:00
germondai 9261d5d92f docs: update references to renamed PORT env var 2026-07-05 18:06:12 +02:00
germondai 0bbbb3f987 docs: document proxy pool config, rotation, and per-request override 2026-07-05 16:41:01 +02:00
germondai 59ba779d3c docs: document BROWSER_ACQUIRE_TIMEOUT_MS and HTTP 429 on pool exhaustion 2026-06-30 00:22:57 +02:00
germondai 55f3fc8664 docs: add custom headers reference page and update API docs 2026-06-26 22:05:47 +02:00
germondai 4e442d69d2 docs: add health and metrics API reference 2026-06-18 08:25:00 +02:00
germondai 5878ff99a2 docs: add FlareSolverr compatibility reference 2026-06-17 14:30:00 +02:00
germondai 59354bad29 docs: add native API endpoint reference 2026-06-17 11:45:00 +02:00
germondai a00ed29213 docs: add API reference overview 2026-06-17 09:10:00 +02:00