Repository navigation
v1.6.0
Added
-
Browser modes —
headless,headed,auto.autostarts hidden and shows a window only after the unattended attempt fails, since a corrected headless browser clears everything a headed one does; the window is worth only the person it brings.headlessforbids one outright, for servers and containers. -
set_browser_slots(count, engine="")— bound concurrent browsers. Per engine, because a Firefox session cap says nothing about Chrome. -
scraper.failure— render a failure in English. This package producedLayer,Trait,Stanceand an exception taxonomy but no way to say what any of it meant, so every consumer wrote that mapping itself and two would disagree about the same failure.failure_kind,blocking_layer,status_code,is_permanent,headline,reads,status_noteandsummarisecover the objective half. Advice is deliberately absent: "configure a proxy in the crawler settings" names one application's UI.readsreturns a clause, not a sentence, so the consumer completes "It reads {trait}, so {remedy}." -
proxy=is honoured as an alias forproxies=. curl_cffi spells it in the singular and this package sits on both clients, so the near-miss was silently dropped — the request went direct while the caller believed it was proxied, and whatever came back was then read as evidence about the site.
Fixed
-
Too many browsers at once reported as a site block. Past the platform's limit Firefox refuses
session.newand Chrome exits, both surfacing asthe browser exited immediately. A survey of several hundred hosts recorded four working sites as hostile that way. Concurrency is now bounded, and exhaustion raisesTierUnavailableagainst the tier rather than the origin. -
An interactive solve could open a window nobody saw. Launched from a background process, a browser gets a taskbar entry without focus. Solvers now raise it —
browsingContext.activateorPage.bringToFrontfirst, then the platform (macOS by application, Windows viactypes, Linux viawmctrl/xdotool). Both halves are needed: the protocol targets the window, but an OS may refuse focus to a process that lacks it. The protocol still goes first, being the only route on Wayland. Best-effort; it cannot fail a solve.
Changed
headless=Falsenow meansauto, not always-headed. It asked for a person to be able to help, whichautogives without a window on solves that never needed one. Usemode="headed"for the old behaviour.