Tous les articles

Contrôle des redirections et mode raw buffer

L'API de FourA prend désormais en charge les limites de redirection configurables et les responses binaires brutes. Deux options qui changent la gestion des cas limites de scraping en conditions réelles.

Les chaînes de redirection cassent les scrapers. Les responses binaires sont corrompues lorsqu'elles sont décodées sous forme de texte. Deux problèmes qui surviennent constamment une fois dépassée l'étape « récupérer une page, analyser le HTML ».

Nous avons déployé deux nouvelles options de request pour gérer ces deux cas : followRedirects et returnBuffer. Elles sont désormais disponibles sur l'API.

Comment ça marche

Contrôle des redirections avec followRedirects

La plupart des API de scraping gèrent les redirections sous forme de booléen : les suivre ou non. Cela fonctionne jusqu'à ce que vous rencontriez une chaîne de redirection qui boucle, ou que vous ayez besoin de la response 302 intermédiaire elle-même pour extraire un paramètre de suivi.

L'option followRedirects de FourA prend un entier entre 0 et 20. Omettez-la (ou définissez-la sur 0), et vous récupérez la response de redirection brute, headers compris. Définissez-la sur 5, et la request suit jusqu'à cinq sauts avant de renvoyer la page finale.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/short-link",
    "followRedirects": 3,
    "unblocker": true
  }'

Cela suit jusqu'à trois redirections. Si la chaîne se résout en deux sauts, vous obtenez la page finale. Si elle est plus longue que trois, vous obtenez le résultat du troisième saut.

La distinction est plus importante qu'on ne le pense. Les sites d'e-commerce redirigent via des URL de suivi avant d'arriver sur la page produit. Vous voulez suivre ces redirections. Mais les réseaux d'affiliation et les réducteurs d'URL créent parfois des chaînes de six, sept ou huit sauts. Et certaines boucles de redirection ne se résolvent jamais. Limiter à un nombre spécifique vous permet de collecter des données sans rester bloqué dans une boucle infinie qui épuise le timeout de votre request.

Auparavant, la solution consistait à envoyer une request avec les redirections désactivées, à analyser manuellement le header Location, puis à envoyer une autre request. Cela représentait au moins deux appels API, deux fois plus de latence et du code à maintenir. C'est maintenant un seul appel avec un nombre.

Responses binaires brutes avec returnBuffer

Lorsque vous collectez des images, des PDF ou des payloads protobuf, le décodage de texte détruit les données. La bibliothèque HTTP suppose que la response est du texte, applique une détection de charset et altère silencieusement chaque octet qui ne correspond pas. Le format protobuf devient illisible. Les headers d'image sont corrompus. Vous vous retrouvez avec des fichiers corrompus sans message d'erreur explicite pour comprendre pourquoi.

returnBuffer indique à l'API d'ignorer complètement le décodage de texte.

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product-image.jpg",
    "returnBuffer": true
  }'

Le corps de la response est renvoyé sous forme d'octets bruts (encodés en base64 dans les responses JSON). Décodez-le de votre côté et vous obtenez exactement ce que le serveur a envoyé. Pas d'hypothèses de charset, pas de conversion d'encodage, pas de corruption silencieuse.

C'était l'un des tickets de support les plus fréquents : des utilisateurs collectant des images de produits ou des catalogues PDF et obtenant des fichiers impossibles à ouvrir. La solution était toujours la même, mais il existe désormais un paramètre dédié plutôt qu'un contournement.

Impact

Ces deux fonctionnalités réduisent le nombre d'appels API par tâche. followRedirects élimine les boucles manuelles de suivi des redirections. returnBuffer élimine le cycle « récupérer, constater la corruption, récupérer à nouveau avec des paramètres différents ».

Pour les cibles à forte redirection (liens d'affiliation, réducteurs d'URL, chaînes de suivi e-commerce), nous avons constaté une baisse de 40 à 60 % du nombre de requests lors des premiers tests lorsque les utilisateurs passent d'une gestion manuelle des redirections à followRedirects. Et pour les tâches de collecte binaire (images de produits, téléchargements de documents), returnBuffer transforme un contournement en plusieurs étapes en une option unique (premiers résultats).

Ce ne sont pas des fonctionnalités tape-à-l'œil. C'est le genre de chose à laquelle on ne pense pas jusqu'à ce que le scraper plante à 3 heures du matin parce qu'un site a ajouté un saut de redirection supplémentaire dans son tunnel d'achat.

Pour les utilisateurs avancés

Combinez followRedirects avec la validation des responses pour un contrôle précis des chaînes de redirection. Suivez les redirections, mais faites échouer la request si la destination finale rencontre un obstacle :

curl -X POST "https://eu.api.foura.ai/v1/request" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/12345",
    "followRedirects": 5,
    "unblocker": true,
    "validate": {
      "status": { "fail": [403, 503] },
      "data": { "fail": ["Access Denied", "captcha"] }
    }
  }'

Cela suit jusqu'à cinq redirections, puis vérifie la response finale. Si le site vous a redirigé vers une page CAPTCHA ou un message d'accès refusé, la request échoue proprement. Pas de données inutiles à filtrer en aval.

Pour la collecte binaire, associez returnBuffer à des requests HEAD lorsque vous devez vérifier les types de contenu avant de télécharger des fichiers volumineux. FourA gère correctement HEAD (évitant ainsi les erreurs libcurl courantes en interne), ce qui vous permet d'inspecter les headers sans récupérer le corps. Vérifiez le Content-Type, décidez s'il vaut la peine d'être téléchargé, puis effectuez la request complète avec returnBuffer: true.

Et si vous utilisez des tâches de navigateur pour des cibles gourmandes en JavaScript, notez que ces options s'appliquent au moteur HTTP direct. Les requests de navigateur gèrent les redirections via la navigation intégrée de Chrome, qui les suit par défaut sans limite.

Et ensuite ?

Nous travaillons à exposer davantage de contrôles au niveau de la request via l'API : résolution DNS personnalisée, ajustement du timeout par phase et options de gestion des certificats. L'objectif est d'offrir toute la puissance de curl-impersonate via une interface REST propre, sans la surcharge d'infrastructure.

Si vous avez besoin d'une option spécifique, nous sommes à l'écoute. Le tableau de bord montre déjà comment vos requests se comportent avec ces nouvelles options, afin que vous puissiez mesurer la différence vous-même.