AlleNeuVerbessertBehoben
Behoben

Auto no longer accepts challenge pages as success

If you passed a negative validate to /api/auto (like {data: {fail: ['"Due to legal reasons"']}}), a Cloudflare 'Just a moment' interstitial could slip through as a cached success because the fail-list didn't happen to match its text. Auto now rejects challenge pages before applying your validate rules, and it swaps the bad exit and re-solves instead of scoring it.

Behoben

Long foura_auto calls now complete through the hosted MCP

If you set a long timeout on foura_auto through the hosted MCP server, the request could time out at the edge before your call finished. That's fixed. Full-budget auto calls now run their 180-second budget end to end.

Behoben

Auto spreads concurrent load across multiple exits

If you've been hitting 429s when firing many concurrent Auto calls at one target, those calls used to funnel onto a single cached exit because the warm path picked the score-favourite and replayed once. Auto now opens additional sessions on demand and routes each call to the least-loaded exit, so a burst fans out across multiple proxy IDs instead of hammering one. Measured locally: a 100-call burst on a no-cookie portable host now spreads across the grown pool within seconds.

Behoben

Clean Cloudflare pages skip the browser solve

Cloudflare injects a passive script even on pages that pass cleanly, and Auto used to treat any reference to it as an active challenge and run a full browser solve anyway. Now only true interstitial markers (the 'just a moment' page and friends) trigger the browser path; a clean 200 comes back from the cheaper proxy rung. Auto also follows up to 5 redirects by default (configurable via followRedirects).

Behoben

Browser captures the real status after Cloudflare clears

When a Cloudflare-protected target served a real geo-block page (451) after the challenge passed, the Browser product was reporting it as a 200 because the watcher hardcoded the cleared status. The watcher now reads the actual post-clearance Document, so a 200 stays 200, a 451 surfaces as 451, and Auto rejects the wrong content and keeps searching for an exit that genuinely matches your validate rules.

Behoben

Cmd+K opens on non-Latin keyboards

The Cmd+K (Ctrl+K) shortcut now opens the command palette and search modal regardless of keyboard layout. We were matching the typed character (к on a Cyrillic layout), so anyone on a non-Latin layout got nothing. Now we match the physical key. Fixed across the main site, the blog, and the docs.

Behoben

Auto requests stop 504-ing on cold solves

A cold Auto solve can run several minutes (proxy grind plus a browser solve). Our HTTP edge was capping requests at 2 minutes and returning a plain HTML 504, so the longest solves looked like a gateway failure even when the orchestrator was still working. We extended the edge timeout past Auto's worst-case run and switched /api/ error pages to JSON, so any error from any layer reads as JSON your client can parse.

Behoben

Auto amortizes to 2 credits on repeat requests

Cookie-reusable sites (bet365 was the canary) were sticking on the expensive browser solve at 15 credits per request instead of dropping to the cheap 2-credit replay after the first solve. Two bugs: the latch fired on any transient transport error, and a successful browser replay never refreshed the session cookies. Fixed both. Repeat requests on a cookie-reusable site now cost 2 credits after the first solve, exactly as the pricing implies.

Behoben

Cross-Origin-Zugriff auf die API eingeschränkt

Wir haben den Cross-Origin-Zugriff eingeschränkt, sodass nur noch foura.ai die API mit Credentials aufrufen kann. Zudem haben wir einen Input-Filter auf dem Metrics-Endpoint gehärtet und ein Entwicklungs-Fallback-Secret entfernt. An bestehenden Integrationen ändert sich nichts.

Behoben

Eigene Validate-Regeln zählen als Erfolg

Wenn du validate.status.accept für einen Request gesetzt hast, behandelt die Engine einen akzeptierten Nicht-200-Status als sauberen Erfolg. Die Activity-Anzeige hat diese bisher noch als Fehler markiert, was deine Nutzungsstatistiken verfälscht hat. Die Ergebnisse folgen jetzt deiner Validate-Entscheidung, sodass ein von dir akzeptierter 403-Status als Erfolg und nicht als App-Fail angezeigt wird.

Behoben

Nicht-UTF-8-Seiten werden jetzt sauber decodiert

Wenn du kyrillische, chinesische, japanische oder andere Nicht-UTF-8-Seiten über Single gescrapt hast, kam der Body bisher als Mojibake zurück. Wir haben zuvor jede Response erzwungen als UTF-8 decodiert, bevor du die Raw-Bytes sehen konntest. Jetzt lesen wir das Charset aus der Response (Content-Type, dann <meta charset>, dann UTF-8-Fallback) und decodieren es korrekt. Danke an Alexandar Kanchev (Sensika) für die Meldung.

Behoben

Fake-Proxys abgefangen, die deinen Request zurückspiegeln

Einige Proxys da draußen leiten deinen Request gar nicht wirklich weiter. Sie spiegeln ihn als Klartext-Server-Dump zurück und versuchen, den Inhalt abzugreifen. Wir erkennen dieses Muster jetzt, bevor die Response deinen Code erreicht, sodass Single, Browser und Proxy Finder alle einen echten Fehler (oder Retry) statt des Mülls zurückgeben.

Behoben

Neu gefundene Proxies gelangen schneller in den Pool

Wir haben eine Verzögerung behoben, die neu entdeckte Proxies vor der Validierung warten ließ. Proxy Finder prüft sie jetzt sofort, sodass der Pool durch mehr aktive, funktionierende Proxies in Rotation frischer bleibt.

Behoben

Playground-Cookies folgen RFC 6265 Host-Only-Regeln

Host-Only-Cookies gelangten an Subdomains. Wir erfassen das Domain-Attribut jetzt korrekt und haben in der Parsed-Ansicht ein HO-Badge für den (seltenen) Host-Only-Fall hinzugefügt. Die Raw-Ansicht entspricht dem, was der Upstream gesendet hat: Domain=.example.com für Domain-Cookies, keine Domain=-Zeile für Host-Only.

Behoben

Playground-Formularfelder entsprechen dem echten API-Schema

Der Browser-Endpoint akzeptiert nur acht Inputs (url, userAgent, headers, cookies, proxy, timeout_ms, checkStatus, checkText). Der Playground hatte zusätzliche Optionen wie wait_selector und viewport angezeigt, die auf dem Übertragungsweg unbemerkt verworfen wurden. Jedes Feld ist jetzt schema-konform: Browser erzwingt GET, blendet die Body-Textarea aus und der Raw-Tab zeigt das exakte JSON, das die API erreicht, plus einen cURL-Reproduzierer.