Nouveautés
Une seule lettre manquante suffit. Saisissez -contry-de dans un nom d'utilisateur proxy et la coquille passe inaperçue, ressemblant trait pour trait à une option valide.
Le port de proxy FourA répond à cela par une erreur 400 listant chaque clé reconnue. C'est un détail parmi d'autres d'un produit qui a quitté la version bêta le 15 septembre : une URL de proxy sur nos sorties pour n'importe quel client compatible (un navigateur, un outil de téléchargement, le scraper que vous utilisez déjà), sans aucun appel API à écrire. Vous créez un utilisateur proxy dans le Dashboard, vous collez la chaîne, et les tunnels ainsi que le trafic sont décomptés de votre forfait exactement comme les requêtes API.
Voici la grammaire complète, ainsi que la raison d'être de chaque règle.
Fonctionnement
Le port est disponible sur proxy.foura.ai:34004 et communique via HTTP CONNECT avec authentification Basic, vers les cibles sur les ports 443 et 80. Les identifiants sont des utilisateurs proxy, délibérément distincts de votre clé API : un handshake proxy transite en clair, et un utilisateur proxy peut recevoir un nouveau mot de passe sans que personne n'ait à modifier votre intégration API.
Tout ce qui suit l'identifiant est une liste de paires -key-value, dans n'importe quel ordre :
# Shared network, a German address, one sticky session for this job
curl -x "http://USERNAME-country-de-session-job42:PASSWORD@proxy.foura.ai:34004" \
https://example.com
# Premium network, an Android address in Germany, held 30 minutes
curl -x "http://USERNAME-network-premium-country-de-os-android-session-s1-lifetime-30:PASSWORD@proxy.foura.ai:34004" \
https://example.com
Shared correspond aux propres sorties de FourA : le choix par défaut, inclus dans votre forfait. Premium correspond aux adresses résidentielles, prélevées sur le trafic premium de votre forfait ainsi que sur vos éventuels achats supplémentaires. Sur le réseau partagé, -fallback-premium permet à une connexion de basculer vers une sortie premium lorsque la sortie partagée ne peut pas la prendre en charge. Cette option est désactivée sauf demande expresse de votre part, et elle ne se déclenche que tant qu'il vous reste du quota premium. L'activer par défaut reviendrait à décider, à votre place, de consommer ce quota.
Le paramètre Country est répétable, ainsi -country-de-country-fr définit un périmètre couvrant deux pays. La région, la ville, le réseau par numéro d'AS, l'appareil (windows, android, ios, mac) et lifetime (de 3 à 1440 minutes) sont réservés à l'offre premium. Si vous demandez une ville sur le réseau partagé, vous recevrez une erreur 400 plutôt qu'un traitement au mieux. Le réseau partagé est sélectionné par pays et rien de plus précis, car un filtre par ville qui échoue la plupart du temps est pire que l'absence totale de filtre.
-session-<name> (de 1 à 32 lettres, chiffres ou traits de soulignement) rend les connexions persistantes : chaque connexion portant ce nom partage une même adresse. Sur le réseau partagé, l'adresse est conservée sur une fenêtre glissante de dix minutes, elle reste donc active tant que vous l'utilisez. Sur le réseau premium, elle est conservée pendant la durée lifetime que vous avez définie, ou selon la valeur par défaut du réseau. Si vous omettez la session, chaque connexion partira d'une nouvelle adresse.
Il existe également des valeurs par défaut enregistrées. Le ciblage enregistré sur un utilisateur proxy dans le tableau de bord s'applique à chaque connexion qu'il établit, ce qui permet de réduire la chaîne aux simples identifiants. Le nom d'utilisateur reste prioritaire pour sa propre connexion, et any réinitialise une valeur enregistrée : -city-any demande l'ensemble de l'Allemagne à une clé configurée pour Munich. Les clients capables d'ajouter des headers sur une requête CONNECT (cURL le permet, avec --proxy-header) peuvent transmettre les mêmes options sous forme de X-Foura-Country, X-Foura-Session et autres, et un header l'emporte sur le nom d'utilisateur.
Impact
La plupart de ces changements répondent à des questions que vous n'avez plus besoin de vous poser.
Pourquoi ai-je été refusé ? Chaque refus survenant après la vérification de vos identifiants inclut un header X-Foura-Error contenant une explication sur une ligne. Une erreur 400 précise l'option concernée et les valeurs acceptées. Une erreur 429 indique laquelle des limites de votre forfait a été atteinte : tunnels ouverts simultanément, ouvertures de tunnel par minute, ou trafic standard pour la période de facturation.
À qui appartient le quota ? Au compte. Les tunnels et les ouvertures sont décomptés pour l'ensemble du compte plutôt que par utilisateur proxy, de sorte qu'un second identifiant ne donne pas droit à un second quota. Les octets sont décomptés de la bande passante de votre forfait, et les octets premium sont décomptés de votre quota premium au sein de ce total, sans jamais s'y ajouter. Sur un forfait vendu sous forme de crédits, le port dispose de ses propres gigaoctets inclus, que la page Facturation permet de recharger. Rien n'est décompté si aucun tunnel ne s'ouvre.
À qui appartient l'identifiant ? Il peut désormais appartenir à une organisation, ainsi le script de téléchargement d'une entreprise ne s'arrête pas au départ d'un collaborateur. Les membres l'utilisent et consultent son mot de passe ; les administrateurs et propriétaires le renouvellent, le désactivent ou modifient son ciblage ; seul le propriétaire peut le transférer.
Que fait-il ? Basculez le sélecteur de produit sur Aperçu, Métriques ou Activité vers Proxy : des tunnels dans les mêmes classes de résultats que vos requêtes d'API, le nombre de tunnels ouverts en ce moment, le temps de configuration et le trafic, répartis par utilisateur proxy, cible, pays de sortie ou IP client. Une session qui possède déjà son adresse se connecte généralement en bien moins d'une seconde.
Mais le port est un canal direct, et c'est le compromis. Votre client communique avec le site via le tunnel, donc les profils de navigateur, vos règles de validation et la gestion des pages interactives ne se trouvent pas sur ce chemin. Il mesure aussi les octets : une page de refus qui arrive par un tunnel ouvert est comptabilisée en octets comme une autre, alors que sur l'API, une requête qui échoue n'est pas facturée. Faites passer les octets par le port ; envoyez les pages qui résistent à l'API.
Pour les utilisateurs avancés
Une fois le quota premium épuisé, les trois routes vers ce réseau obtiennent délibérément trois réponses différentes. Une connexion qui spécifie -network-premium est refusée avec un 403 explicite, car un appelant servi silencieusement depuis un autre emplacement continuerait ses requêtes, puis chercherait sur sa facture une ligne premium inexistante. Le fallback n'est tout simplement pas utilisé, et une valeur par défaut premium enregistrée sur l'utilisateur proxy bascule sur le réseau partagé, de sorte que le tunnel s'ouvre toujours. Aucun des deux n'a choisi de consommer du quota sur cette connexion.
Trois combinaisons sont refusées d'emblée plutôt qu'honorées à moitié : un ciblage plus précis sur le réseau partagé, -fallback-premium combiné avec -network-premium, et un ciblage plus précis lorsqu'un fallback est armé. Le port utilise uniquement CONNECT, donc un client qui transmet une simple requête http:// au lieu de la tunneler reçoit un 405 (curl la tunnele avec --proxytunnel). Enfin, un navigateur contrôlé via le port doit toujours inclure un nom de session, car le chargement d'une seule page ouvre des dizaines de connexions.
Plusieurs workers, chacun sur sa propre adresse ? Donnez à chacun son propre nom de session :
import requests
TEMPLATE = "http://USERNAME-country-de-session-{name}:PASSWORD@proxy.foura.ai:34004"
def worker_session(name):
proxy = TEMPLATE.format(name=name)
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
return s
workers = [worker_session(f"w{i}") for i in range(4)]
print(workers[0].get("https://example.com").status_code)
Le Dashboard fait la meme chose a grande echelle : activez Sticky, choisissez la quantite, et l'onglet Connection string affiche une ligne par adresse, sous forme d'URL ou au format host:port:user:pass pour les gestionnaires de proxy. Un refus inattendu ? Ajoutez -sv a la commande curl et redirigez vers 2>&1 | grep -i x-foura-error. Chaque option est decrite dans la reference du port proxy, et la partie Dashboard dans Proxy Users.
Prochaines etapes
Le premier client que nous avons developpe sur les utilisateurs proxy est le notre. L'extension FourA Chrome route votre navigateur via l'un d'eux : choisissez le reseau et le pays, activez le bouton, et une ligne d'etat affiche l'adresse vue par les sites. Il s'agit d'une version beta, non disponible sur le Chrome Web Store, a installer en mode developpeur depuis la section Tools du Dashboard. Plus tard, la facturation par organisation rejoindra la roadmap publique, ce qui est important ici car le proxy user d'une organisation facture aujourd'hui son proprietaire.
Une URL proxy est le contrat d'integration le plus ancien qui existe, et tous vos outils le prennent deja en charge. L'essentiel a reussir n'a jamais ete le tunnel. C'est ce que la chaine qui le precede est autorisee a signifier, et ce qui se passe lorsque vous vous trompez.