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 réponses binaires brutes. Deux options qui changent la façon dont vous gérez les cas particuliers du scraping dans le monde réel.

Les chaînes de redirection bloquent les scrapers. Les réponses binaires sont corrompues lorsqu'elles sont décodées en tant que texte. Deux problèmes qui surviennent constamment une fois que vous avez dépassé l'étape de récupération d'une page et d'analyse du HTML.

Nous avons publié deux nouvelles options de requête pour gérer les deux : followRedirects et returnBuffer. Elles sont maintenant disponibles sur l'API.

Fonctionnement

Contrôle des redirections avec followRedirects

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

L'option followRedirects de FourA accepte un entier entre 0 et 20. Omettez-la (ou définissez-la sur 0), et vous obtenez la réponse de redirection brute, avec tous les headers. Définissez-la sur 5, et la requête suit jusqu'à cinq sauts avant de renvoyer ce sur quoi elle atterrit.

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, vous obtenez la page finale. Si elle est supérieure à trois, vous obtenez le résultat du troisième saut.

La distinction compte plus que vous ne le pensez. Les sites e-commerce redirigent via des URL de suivi avant d'atterrir sur la page produit. Vous voulez les suivre. Mais les réseaux d'affiliation et les raccourcisseurs d'URL créent parfois des chaînes allant jusqu'à six, sept ou huit sauts. Et certaines boucles de redirection ne se résolvent jamais. Le plafonnement à un nombre spécifique signifie que vous collectez des données sans rester bloqué dans une boucle infinie qui consomme le timeout de votre requête.

Auparavant, la solution de contournement consistait à envoyer une requête avec les redirections désactivées, à analyser manuellement le header Location et à envoyer une autre requête. Cela représente deux appels d'API au minimum, le double de latence et du code que vous devez maintenir. Maintenant, c'est un seul appel avec un nombre.

Réponses binaires brutes avec returnBuffer

Lorsque vous collectez des images, des PDF ou des payloads protobuf, le décodage textuel détruit les données. La bibliothèque HTTP suppose que la réponse est du texte, applique la détection du jeu de caractères et altère silencieusement chaque octet qui ne correspond pas. Protobuf devient illisible. Les headers d'image se cassent. Vous vous retrouvez avec des fichiers corrompus et aucun message d'erreur évident pour expliquer pourquoi.

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

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 réponse revient sous forme d'octets bruts (encodés en base64 dans les réponses JSON). Décodez-le de votre côté et vous obtenez exactement ce que le serveur a envoyé. Aucune supposition de jeu de caractères, aucune conversion d'encodage, aucune corruption silencieuse.

C'était l'un des tickets de support les plus fréquents que nous recevions : des utilisateurs collectant des images de produits ou des catalogues PDF et obtenant des fichiers qui ne s'ouvraient pas. Le correctif était toujours le même, mais il y a maintenant un indicateur pour cela au lieu d'une solution de contournement.

Impact

Les deux fonctionnalités réduisent le nombre d'appels d'API par tâche. followRedirects élimine les boucles de suivi manuel des redirections. returnBuffer élimine le cycle de récupération, constat de corruption, et nouvelle récupération avec des paramètres différents.

Pour les cibles fortement redirigées (liens d'affiliation, raccourcisseurs d'URL, chaînes de suivi e-commerce), nous avons vu le nombre de requêtes chuter de 40 à 60 % lors des premiers tests lorsque les utilisateurs sont passés de la gestion manuelle des redirections à followRedirects. Et pour les tâches de collecte de binaires (images de produits, téléchargements de documents), returnBuffer transforme une solution de contournement en plusieurs étapes en une seule option (premiers résultats).

Ce ne sont pas des fonctionnalités tape-à-l'œil. C'est le genre de chose à laquelle vous ne pensez pas jusqu'à ce que votre scraper tombe en panne à 3h du matin car un site a ajouté un saut de redirection supplémentaire à son flux de paiement.

Pour les utilisateurs avancés

Combinez followRedirects avec la validation des réponses pour un contrôle précis des chaînes de redirection. Suivez les redirections, mais faites échouer la requête si la destination finale se heurte à un mur :

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 réponse finale. Si le site vous a redirigé vers une page CAPTCHA ou un mur d'accès refusé, la requête échoue proprement. Aucune donnée indésirable à filtrer en aval.

Pour la collecte de binaires, associez returnBuffer à des requêtes HEAD lorsque vous devez vérifier les types de contenu avant de télécharger de gros fichiers. FourA gère correctement HEAD, vous pouvez donc inspecter les headers sans récupérer le corps de la réponse. Vérifiez le Content-Type, décidez si le téléchargement en vaut la peine, puis effectuez la requête complète avec returnBuffer: true.

Et si vous utilisez des tâches de navigateur pour les cibles fortement basées sur JavaScript, notez que ces options s'appliquent au moteur HTTP direct. Les requêtes du navigateur gèrent les redirections via la navigation intégrée du navigateur, qui les suit par défaut sans aucune limite.

Prochaines étapes

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

Si vous avez besoin d'une option spécifique, nous sommes à votre écoute. Le tableau de bord montre déjà les performances de vos requêtes avec ces nouvelles options, vous pouvez donc mesurer la différence par vous-même.