Highlights
Auto a été déployé en production cette semaine. Pointez-le vers n'importe quelle URL et il parcourt une échelle sensible aux coûts (probe, recherche d'un point de sortie, résolution par browser, rejeu économique) puis renvoie le contenu ainsi que la session qui l'a obtenu. Une résolution à froid de Cloudflare Turnstile sur minfin.bg prend environ 5 secondes via Auto ; l'appel suivant est rejoué via Single pour 2 crédits. Nous avons également ajouté 6 langues sur le blog, la documentation et le portail de mises à jour, passant ainsi de 7 à 13.
What's New
Auto : un endpoint, quatre produits, sensible aux coûts
POST /api/auto est disponible. Vous lui passez une URL et il choisit le bon produit (Single, Proxy Finder ou Browser), gère les challenges Cloudflare lorsqu'ils se présentent, et renvoie la response ainsi qu'un objet session contenant l'ID du proxy, les cookies et l'User-Agent qui ont fonctionné. Réutilisez la session renvoyée lors du prochain appel et Auto rejouera la requête via Single pour 2 crédits au lieu de devoir effectuer une nouvelle résolution complète.
Chaque response contient désormais une trace meta pour vous permettre de voir quel niveau a fonctionné, si une protection a été résolue, combien de sous-appels ont été nécessaires et le total de crédits dépensés. Configurez vos propres règles validate et Auto les appliquera à chaque niveau, pas seulement au dernier, de sorte qu'une page de blocage géographique renvoyée avec un code de transport 200 ne soit plus considérée comme un succès comme c'était le cas auparavant.
Le playground du Dashboard s'est enrichi d'un onglet Auto intégrant timeout_ms, ignoreProxies, returnSession et forceProxy, vous permettant de tester Auto depuis un formulaire avant de l'intégrer dans votre code.
6 new languages
L'espagnol, le français, le japonais, le coréen, le portugais brésilien et le russe ont été ajoutés au blog, à la documentation et au portail de mises à jour, ce qui porte nos sites publics de 7 à 13 langues. Le contenu est traduit par un pipeline prenant en compte les rôles : les libellés de navigation reçoivent une consigne privilégiant la concision sur la traduction littérale afin que la barre latérale reste courte, tandis que le corps des articles reçoit une consigne de préservation du markdown pour que les blocs de code et les titres restent intacts.
Le sélecteur de langue a également été reconstruit. Les drapeaux ont disparu (le drapeau de l'Espagne exclut les 20 autres pays hispanophones, et la même logique s'applique au portugais, à l'arabe et à l'anglais). Les noms natifs portent désormais l'information, et chaque option affiche également son nom dans la langue active de l'interface utilisateur, de sorte que vous puissiez trouver "Deutsch" sous la forme "немски" depuis un navigateur bulgare. Saisissez du texte dans le champ de recherche situé en haut pour filtrer les 13 locales et trouver celle que vous souhaitez, utilisez les touches fléchées pour vous déplacer, puis appuyez sur Entrée pour changer. Chaque option est un véritable <a href> avec hreflang et lang, permettant aux moteurs de recherche et aux crawlers d'IA de suivre chaque version linguistique.
Cloudflare handling : ce qui a réellement été corrigé
Auto gère désormais quatre situations Cloudflare qui laissaient auparavant passer une mauvaise response :
- L'interstitiel "Just a moment" renvoyé avec un code de transport 200 n'est plus comptabilisé comme un succès. Auto passe à un niveau de résolution supérieur au lieu de vous renvoyer la page de challenge.
- Les challenges non interactifs (le passage automatique "Checking your browser" de marathonbet) s'exécutent côté client après la clearance. Browser interroge le DOM en temps réel et finalise la requête dès que
cf_clearanceest obtenu, au lieu de déclencher un timeout sur une response de premier niveau vide. - Le véritable statut post-clearance est respecté. Un blocage géographique que Cloudflare applique après la réussite du challenge renvoie un code 451, et non un code 200 avec un corps suspect.
- La résolution de Turnstile interactif (minfin.bg) s'effectue de bout en bout. Auto tente d'abord une résolution par browser avec sortie directe (un endpoint de sortie de confiance passe Turnstile là où les sorties de datacenters gratuites voient le challenge s'intensifier), puis se replie sur l'utilisation intensive de proxy en cas d'échec.
MCP : foura_auto et découverte publique
Le serveur MCP s'est enrichi d'un outil foura_auto qui reproduit le comportement de /api/auto. Passez-lui une URL, obtenez le contenu et une session en retour. La découverte (outils, prompts, capacités) est désormais accessible sans authentification afin que les agents puissent l'explorer avant de s'authentifier, et la carte /llms.txt est accessible via proxy à la racine. La page de destination a été déplacée vers foura.ai/mcp pour préserver l'équité des liens, et le sous-domaine redirige les navigateurs via une redirection 301 vers cette adresse.
Under the Hood
Nous avons renforcé la limite SSRF autour des fetchers. Un pare-feu de sortie au niveau du noyau empêche les deux services émetteurs de request d'ouvrir des connexions vers des plages d'adresses privées, CGNAT, link-local et de metadata cloud. La vérification au niveau de l'application couvrait déjà l'URL, désormais les chemins de niveau inférieur ne peuvent plus rien laisser passer non plus. Le champ proxy d'une request subit le même traitement : un hôte proxy fourni par le client qui se résout en une adresse privée est rejeté avant que la request ne soit émise.
Le journal d'activité ne stocke plus jamais d'URL de proxy brute, même lorsqu'un client en a envoyé une. La response que vous voyez contient toujours l'ID opaque du proxy en base36, et le payload stocké correspond. Nous avons également supprimé le header x-powered-by de chaque response de l'API.
Numbers
- La résolution interactive de Turnstile sur minfin.bg : code 200 avec le contenu du ministère en environ 5 secondes, puis 2 crédits par rejeu via la session en cache.
- Sur une cible soumise à une rate limit sous charge concurrente, Auto se répartit désormais sur plusieurs sorties (4 sorties distinctes utilisées sur un hôte à sortie fixe, 21 des 24 rejeux à 2 crédits) au lieu d'accumuler chaque request sur une seule sortie.
- 13 langues en ligne sur le blog, la documentation et les mises à jour.
Auto représente la forme de l'API vers laquelle nous avons tendu tout au long du trimestre. Pointez vers une URL, obtenez la response, conservez la session. Le travail intéressant se situe désormais aux limites : mesurer à quel point l'échelle sensible aux coûts s'amortit sur votre trafic réel, et trouver les modèles de validation qui capturent les cas de faux positifs de succès auxquels personne ne pense.