Tous les articles

FourA Digest, du 7 au 14 août 2026

Auto récupère la session fournie par la page d'entrée d'un site, puis ouvre la page profonde que vous souhaitez. Browser valide les cases à cocher Cloudflare lors de requêtes simultanées.

Points forts

Beaucoup de sites livrent leur page d'accueil à tout le monde et verrouillent tout un clic plus loin. Auto passe par la porte d'entrée maintenant: il prend la session que cette page d'entrée distribue, puis demande la page que vous vouliez en la transportant. Browser a reçu le travail le plus lourd cette semaine. Il résout le défi de la case à cocher de Cloudflare quand plusieurs requests atteignent la même page en même temps, et quand une page reste fermée, il signale ce qu'il a vu au lieu d'un seul mot plat.

Nouveautés

Auto ouvre les pages qui se cachent derrière une session

Une annonce eBay refuse une request à froid sur chaque route que nous avons. La même URL s'ouvre quand la request transporte le cookie jar que la page d'entrée d'eBay remet à tout visiteur. Pas de connexion, pas de compte emprunté, rien que vous ne pourriez faire à la main dans un onglet.

Auto le fait pour vous maintenant. Quand une sortie atteint l'origine et se voit toujours refuser la page profonde, Auto récupère la racine du site via cette même sortie, conserve tous les cookies qui reviennent, et demande à nouveau. La response vous indique que cela s'est produit: le barreau gagnant affiche warmup.

Mais le coût est la partie intéressante. Cette session revient portable, le jar n'est donc pas soudé à la sortie qui l'a obtenu. Les lectures suivantes rejouent via /api/proxy et atterrissent sur /api/single à 2 crédits. C'est la même chaîne d'escalade puis de rejeu sur laquelle nous avons écrit pour l'autorisation de Cloudflare, avec les propres cookies de session d'un fournisseur remplaçant cf_clearance.

Limité exprès: deux essais par request, sur des sorties différentes, uniquement après que l'URL profonde a déjà échoué, et uniquement quand la sortie a atteint l'origine en premier lieu. Donc un site qui nous bloque simplement paie deux sous-appels supplémentaires une fois, pas une boucle. Plus de détails sur la façon dont l'échelle choisit ses barreaux dans l'article sur Auto.

Browser résout les défis de case à cocher quand les requests se chevauchent

Browser résout maintenant le widget de case à cocher de Cloudflare sur des requests concurrentes vers la même page. Trois à la fois sur un site d'actualités derrière Turnstile: 5.2s, 5.8s, 9.1s.

Deux changements mineurs ont suivi. Une pression compte uniquement une fois que le widget a réellement disparu, car Cloudflare réémet son défi plus souvent que vous ne le pensez (la première pression n'est régulièrement pas la fin de la conversation). Et une page qui passe signale defenseSolved: true sur l'appel qui l'a validée, ce qui correspond au même appel facturé pour la résolution.

Une page bloquée vous dit ce que le solveur a vu

"Timeout" vous oriente vers la latence. La plupart du temps, la latence n'est pas le problème et la réponse se trouve une sortie plus loin.

Quand Cloudflare rejette une résolution, il réémet le défi et dépose son propre marqueur de réessai dans le jar. Browser lit ce marqueur. Au lieu d'attendre la fin du temps imparti, il répond en environ 17 secondes, en nommant le fournisseur, les pressions qu'il a effectuées et si l'autorisation a été accordée:

Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)

L'une de ces lignes vous indique d'envoyer la request par un autre moyen. L'autre ne vous dit rien.

Les erreurs de la couche API sont également plus claires. Une request qui dépasse le délai d'attente revient avec un timeout, un service injoignable revient comme indisponible, et aucune des deux n'est décrite comme un problème de proxy lorsque la request ne contenait aucun proxy. timeout_ms lors d'un appel Browser est respecté jusqu'aux 120 secondes complètes que l'API accepte, de sorte qu'une cible lente obtient le budget que vous avez défini et vous lisez le propre verdict du moteur plutôt que celui de la passerelle. Les paramètres sont listés dans la référence de l'API.

Détails de facturation et correction d'une facture dans son mois d'émission

Les factures bulgares impriment un représentant de l'entreprise (MOL) dans la case du destinataire. Rien dans le système ne le collectait, cette ligne restait donc toujours vide. Les détails de facturation comportent désormais ce champ.

La table des factures propose également de mettre à jour les détails d'une facture qui est encore dans son mois d'émission et dont les détails figés diffèrent de votre profil de facturation actuel. La boîte de dialogue nomme chaque champ qui change et sa nouvelle valeur, indique clairement que le numéro, les dates et les montants restent inchangés, et la confirmation vaut consentement de votre part, enregistré de notre côté. Une facture dans cette fenêtre sans rien à modifier affiche "Modifiable jusqu'au" suivi de sa date, de sorte que cette fenêtre est une chose que vous pouvez voir plutôt que de le découvrir plus tard.

Sous le capot

Chaque script exécuté par le Dashboard est servi depuis notre propre origine, et la connexion ne vous redirige que vers un chemin sur ce site.

Les déploiements du service de rendu se font un serveur à la fois, et chaque serveur doit servir une vraie page avant que le suivant ne soit modifié.

Sur le portail d'état, l'endpoint des incidents sert les éléments ouverts et résolus via son API publique, correspondant à ce que la page liste.

Un refus qui se nomme lui-même correspond à un seul appel. Une attente qui se termine par un "Timeout" est une supposition sur la prochaine étape à essayer, facturée au même prix. Les erreurs sont une surface de produit, et cette semaine nous avons commencé à les traiter comme telle.