Python
requests, httpx, aiohttp, concurrence asynchrone
Docs · gateway, format du nom d’utilisateur, sessions, erreurs, limites
Tout ce qu’il faut pour envoyer la première requête, puis la référence à laquelle vous reviendrez : paramètres de ciblage, règles de session, codes d’erreur et limites.
Réponse rapide
Comment me connecter aux proxies CrawlRelay ?
Pointez n’importe quel client HTTP vers http://USERNAME:[email protected]:7777, ou SOCKS5 au port 7778. CrawlRelay, un service proxy résidentiel axé développeur, lit le ciblage et les sessions depuis le nom d’utilisateur : USERNAME-country-us-city-new_york-session-job1-ttl-30. Le trafic résidentiel coûte 1,50 $US pour 1 GB et 0,50 $US/GB dès 50 GB. Paiement en crypto, sans KYC.
| Hôte de la passerelle | gw.crawlrelay.com |
|---|---|
| Port HTTP / HTTPS | 7777 (sites HTTPS via CONNECT) |
| Port SOCKS5 | 7778 (utilisez socks5h:// pour que le DNS résolve à la sortie) |
| Authentification | Nom d'utilisateur et mot de passe de votre plan ou d'un sous-utilisateur, ou liste blanche IP (jusqu'à 10 IPs) |
| Format du nom d'utilisateur | USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes} |
| Durée de la session | jusqu’à 30 minutes ; l'IP peut changer plus tôt |
| URL de test | https://api.ipify.org renvoie l'IP de sortie en texte brut |
| API de gestion | https://crawlrelay.com/api/v1, Clés API révocables à tout moment (docs API) |
Copiez le nom d'utilisateur et le mot de passe depuis votre tableau de bord, puis lancez l'une de ces commandes. Chacune affiche l'adresse IP vue par le site, qui change généralement à chaque exécution.
curl -x http://USERNAME-country-us:[email protected]:7777 https://api.ipify.orgimport requests
proxy = "http://USERNAME-country-us:[email protected]:7777"
r = requests.get("https://api.ipify.org", proxies={"http": proxy, "https": proxy}, timeout=(10, 30))
print(r.text)import { ProxyAgent, fetch } from "undici";
const dispatcher = new ProxyAgent("http://USERNAME-country-us:[email protected]:7777");
const res = await fetch("https://api.ipify.org", { dispatcher });
console.log(await res.text());Commencez par le nom d'utilisateur dans votre tableau de bord et ajoutez les paramètres avec des tirets, dans l'ordre du format ci-dessus. Chaque paramètre est optionnel. Les valeurs sont en minuscules, et les noms de villes utilisent des underscores (new_york, sao_paulo). La disponibilité des villes varie.
| Objectif | Nom d'utilisateur |
|---|---|
| N'importe quel pays, rotation par connexion | USERNAME |
| Allemagne | USERNAME-country-de |
| Paris | USERNAME-country-fr-city-paris |
| Texas | USERNAME-country-us-state-tx |
| Un code postal | USERNAME-country-us-zip-10001 |
| Un fournisseur internet | USERNAME-country-us-asn-7922 |
| Même IP jusqu'à 30 minutes | USERNAME-country-gb-session-abc123-ttl-30 |
Si votre mot de passe contient @, : ou /, encodez-le en URL avant de le placer dans une URL proxy. La page d’erreur 407 montre comment faire.
Un nom d'utilisateur sans session- reçoit une IP du pool à chaque nouvelle connexion TCP, généralement différente. Un nom d'utilisateur avec session-<id>-ttl-<minutes> garde la même IP de sortie pour cet ID jusqu’à la fin du TTL ou que le proxy résidentiel se déconnecte.
Le guide des sessions détaille la réutilisation des connexions dans chaque bibliothèque.
Commencez par identifier qui répond : la passerelle ou le site derrière.
| Vous voyez | Envoyé par | Cause habituelle | Que faire |
|---|---|---|---|
| 407 | Passerelle | Identifiants incorrects ou mal encodés | Corrigez le nom d'utilisateur ou le mot de passe ; ne réessayez jamais à l'aveugle |
| ERR_TUNNEL_CONNECTION_FAILED | Navigateur | CONNECT refusé (souvent un 407 caché) | Passez les identifiants en champs, pas dans l’URL du serveur |
| 502 / 504 | Passerelle ou CDN | Sortie interrompue, cible lente ou hors service | Réessayez sur une nouvelle connexion, avec une limite |
| 403 | Site web | Mauvais pays, en-têtes, taux ou refus | Testez dans un navigateur ; ralentissez ou respectez le refus |
| 429 | Site web | Limite de fréquence | Respectez Retry-After ; diminuez la concurrence par hôte |
| SSL : WRONG_VERSION_NUMBER | Votre client | https:// devant l’URL du proxy | Utilisez http:// pour l’URL proxy |
Toutes les entrées 15 sont dans la référence d’erreur.
Dans le tableau de bord ou via l’API REST à https://crawlrelay.com/api/v1 avec une clé API. Clés API révocables à tout moment. Les principales tâches :
requests, httpx, aiohttp, concurrence asynchrone
Middleware, sessions par requête, AutoThrottle
Python et Node.js, proxy par contexte
Flag plus page.authenticate()
Proxy authentifié via un forwarder local
undici, axios, got, SOCKS5
HTTP, SOCKS5, débogage avec -v
Réutilisation de connexion, TTL, une IP par flux
Limites par hôte, débit et temporisation
CrawlRelay publie des guides à copier-coller pour Python (requests, httpx, aiohttp), Scrapy, Playwright, Puppeteer, Selenium, Node.js et curl, une référence des 15 erreurs proxy et une référence API REST avec échantillons curl, Python et Node.js. Chaque exemple utilise le vrai hôte et ports de la passerelle, chaque extrait est vérifié en syntaxe avant publication.
Non. L’authentification par nom d’utilisateur et mot de passe fonctionne depuis n’importe quelle machine, vous pouvez donc lancer le même scraper sur un laptop, un serveur ou un runner CI. Vous pouvez préférer ajouter jusqu’à 10 IP en liste blanche. Gardez les identifiants dans des variables d’environnement ou un gestionnaire de secrets, jamais dans le repo.
Soit votre nom d'utilisateur contient un ID de session, ce qui maintient volontairement une seule IP, soit votre client réutilise une connexion keep-alive. La rotation se fait à chaque nouvelle connexion. Retirez la partie session ou ouvrez une nouvelle connexion à chaque requête, comme expliqué dans le guide des sessions.
Utilisez le port HTTP (7777) pour le web scraping : chaque bibliothèque et navigateur le supporte avec authentification, et les sites HTTPS fonctionnent via des tunnels CONNECT. Utilisez SOCKS5 (7778) pour les outils qui ne parlent que SOCKS, avec socks5h:// pour que la résolution DNS se fasse à la sortie.
Faites une requête https://api.ipify.org via le proxy pour obtenir l'IP, puis vérifiez-la dans une base de données de géolocalisation fiable. Les bases de données divergent parfois sur certaines IP, surtout mobiles, donc vérifiez aussi le contenu fourni : la devise, la langue et les résultats locaux sont ce qui compte pour vos données.
Les plans sont facturés au GB et non à la requête, et les limites que vous rencontrerez en premier sont celles des cibles elles-mêmes. Rythmez chaque cible séparément et ralentissez en cas de réponses 429 et 503. Pour un crawl très important, contactez d'abord le support à [email protected].
À partir de 0,50 $US/GB · sans KYC
Commencez