github germondai/trawl v1.9.0

3 hours ago

Highlights

  • Faster repeat requests: reuse browser-verified Cloudflare and Anubis clearance over HTTP without another browser navigation. Every request still fetches fresh content, with browser fallback when clearance is rejected.
  • Less unnecessary browser work: reduce repeated challenge checks, overlap supported widget verification with page settling, and improve Cloudflare, Turnstile, GeeTest and Anubis flows.
  • More reliable page delivery: preserve delayed JavaScript content, avoid passive reCAPTCHA v3 false positives, and keep cached sessions bound to their proxy.
  • More control: configure the default scrape deadline, choose whether to solve embedded widgets, or opt into Firefox TLS/HTTP2 impersonation while keeping Bun fetch as the default.
  • Refreshed release stack: compatible dependency updates, updated standard and baseline images, and clearer deployment and performance documentation.

Major changes

  • fc1aa5f and e11ad5a add automatic Cloudflare and Anubis HTTP clearance reuse. 03eb092 extends replay to other direct sessions only for a verified URL and matching document content, and avoids repeated HTTP attempts for known JavaScript shells (#222, #229).
  • 68b1701, 6d02547 and ba420c7 reduce unnecessary challenge waits, overlap widget verification with page settling and streamline GeeTest drags. f1f34bc preserves delayed JavaScript content (#222).
  • e100e2d and 8519904 separate page delivery from optional embedded CAPTCHA completion. FlareSolverr-compatible /v1 requests prioritize page content; native and MCP scraping expose solveEmbeddedCaptchas (#222).
  • 7c93b84 and 9c9ecb2 bound Cloudflare recovery and retain time for residential fallback. db12f68 recognizes Turnstile tokens consumed during widget removal (#219, #221).
  • a2023ea preserves proxy identity in cached sessions, 5996492 honors client Accept-Encoding, and 679b66b fixes MITM certificate serial encoding (#212, #218, #217).
  • 868ffc6 captures supported Cloudflare Challenge Page parameters for the optional 2Captcha fallback without a site profile. Paid-provider acceptance remains unverified (#220).
  • d5a426c adds SCRAPE_MAX_TIMEOUT_MS across scraping entry points. ed08d4f adds opt-in TIER1_TRANSPORT=wreq; Bun fetch remains the default (#214, #217, #231).

d63a6ea updates Bun to 1.4.3, camoufox-js to 0.13.0 and Nuxt to 4.6.2. Node.js is used for web/docs builds; the scraper service remains on Bun. Existing benchmark reports retain their original measurement date and build provenance.

Thanks to @HenrINC and @DuLerWeil for their contributions.

Full changelog: v1.8.0...v1.9.0

Don't miss a new trawl release

NewReleases is sending notifications on new releases.