Proxy API
Un réseau de proxy résidentiel avec sessions persistantes et un endpoint unique à port fixe. À utiliser lorsque Smart AI Proxy n'est pas assez flexible : accès direct au pool d'IP avec rotation sous votre contrôle.
Routage plus rapide, évitement des bannissements piloté par l'IA, moins de paramètres à configurer. Proxy Backconnect est déprécié, mais les intégrations existantes continuent de fonctionner : aucune fermeture n'est prévue.
Endpoint
# Username = your token + optional session/country qualifiers
# Password = blankUtilisation de base
curl -x 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000' \
'https://httpbin.org/ip'import requests
proxies = {
'http': 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN:@proxy.crawlbase.com:9000',
}
res = requests.get('https://httpbin.org/ip', proxies=proxies)
print(res.text)Par défaut, chaque requête passe par une IP résidentielle différente : rotation pure.
Sessions persistantes
Pour épingler des requêtes à une seule IP, ajoutez un identifiant de session à votre nom d'utilisateur. Le même identifiant de session renvoie la même IP pendant environ 30 minutes.
# Format: TOKEN-session-SESSION_ID
curl -x 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000' \
'https://shop.example.com/cart'import requests
# Format: TOKEN-session-SESSION_ID
proxies = {
'http': 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000',
}
res = requests.get('https://shop.example.com/cart', proxies=proxies)
print(res.text)const { fetch, ProxyAgent } = require('undici');
// Format: TOKEN-session-SESSION_ID
const dispatcher = new ProxyAgent('http://YOUR_TOKEN-session-checkout42:@proxy.crawlbase.com:9000');
const res = await fetch('https://shop.example.com/cart', { dispatcher });
console.log(await res.text());require 'net/http'
# Format: TOKEN-session-SESSION_ID
uri = URI('https://shop.example.com/cart')
http = Net::HTTP.new(uri.host, uri.port, 'proxy.crawlbase.com', 9000, 'YOUR_TOKEN-session-checkout42', '')
http.use_ssl = true
puts http.get(uri.request_uri).bodyCiblage par pays
# Format: TOKEN-country-XX
curl -x 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000' \
'https://www.amazon.de'
# Combine: country + session
curl -x 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000' \
'https://www.amazon.de/cart'import requests
# Format: TOKEN-country-XX
proxies = {
'http': 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000',
}
res = requests.get('https://www.amazon.de', proxies=proxies)
print(res.text)
# Combine: country + session
proxies = {
'http': 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000',
'https': 'http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000',
}
res = requests.get('https://www.amazon.de/cart', proxies=proxies)
print(res.text)const { fetch, ProxyAgent } = require('undici');
// Format: TOKEN-country-XX
const country = new ProxyAgent('http://YOUR_TOKEN-country-DE:@proxy.crawlbase.com:9000');
const home = await fetch('https://www.amazon.de', { dispatcher: country });
console.log(await home.text());
// Combine: country + session
const session = new ProxyAgent('http://YOUR_TOKEN-country-DE-session-cart-1:@proxy.crawlbase.com:9000');
const cart = await fetch('https://www.amazon.de/cart', { dispatcher: session });
console.log(await cart.text());require 'net/http'
def fetch(url, user)
uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port, 'proxy.crawlbase.com', 9000, user, '')
http.use_ssl = true
http.get(uri.request_uri).body
end
# Format: TOKEN-country-XX
puts fetch('https://www.amazon.de', 'YOUR_TOKEN-country-DE')
# Combine: country + session
puts fetch('https://www.amazon.de/cart', 'YOUR_TOKEN-country-DE-session-cart-1')Qualificateurs de nom d'utilisateur
Référence de tous les modificateurs de nom d'utilisateur disponibles, combinés avec des tirets.
| Format | Effet |
|---|---|
TOKEN | Par défaut : IP aléatoire par requête |
TOKEN-country-XX | IPs du pays XX (ISO 3166) |
TOKEN-session-NAME | Persistance sur une IP pendant environ 30 min |
TOKEN-country-XX-session-NAME | Session persistante au sein d'un pays |
IPs statiques et géolocalisation
Lorsque vous devez conserver la même IP de sortie sur plusieurs requêtes (parcours de paiement multi-étapes, connexion à un compte + scraping, tout ce qui dépend de la reconnaissance du même client par le site cible), Backconnect peut verrouiller une IP statique et renvoyer le port et la durée de vie de la session. Le proxy maintient alors cette IP liée à votre token tant que vous continuez à l'utiliser dans la fenêtre de session.
L'endpoint IP statique est limité à 1 requête toutes les 5 minutes par pays (ou 1 toutes les 5 minutes au total si aucun pays n'est spécifié). Mettez en cache le port reçu par votre client : ne le redemandez pas à chaque crawl.
Les IPs statiques et le ciblage par pays peuvent ne pas être disponibles sur tous les plans Backconnect, et la disponibilité par pays varie selon le palier. Si vous recevez une réponse non autorisée, vérifiez votre plan ou contactez le support avant de réessayer.
Obtenir une IP statique
Renvoie un port à utiliser avec proxy.crawlbase.com, ainsi que le nombre de secondes pendant lequel la liaison reste active. Le minuteur de session se prolonge automatiquement tant que vous continuez à envoyer du trafic via ce port dans la fenêtre.
curl 'https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN'
# Response
# { "port": 1234, "host": "proxy.crawlbase.com", "session_time": 10 }import requests
res = requests.get('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN'))IP statique depuis un pays spécifique
Passez un code pays ISO 3166 à 2 lettres (US, GB, DE, IT, RU, …) pour fixer l'IP statique à cette zone géographique. Si aucun port n'est actuellement libre dans le pays demandé, la réponse contient une erreur : reculez et réessayez en respectant la limite par bucket de pays.
curl 'https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR'
# Response
# { "port": 4551, "host": "proxy.crawlbase.com", "session_time": 10 }import requests
res = requests.get('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/static?token=YOUR_TOKEN&country=FR'))Liste blanche d'IP
Backconnect prend en charge la liste blanche d'IP : laissez les IP sortantes de votre serveur s'authentifier auprès du proxy sans envoyer le token à chaque requête. Utile pour les pipelines à IP fixe qui ne veulent pas d'identifiants dans le code, et seule façon d'utiliser Backconnect depuis des environnements qui ne peuvent pas transmettre d'en-tête Proxy-Authorization.
Trois endpoints, tous sous /proxy/whitelist_ips, différenciés par la méthode HTTP. Les modifications mettent jusqu'à 1 minute à se propager.
La gestion de la liste blanche peut ne pas être disponible sur tous les plans, et un plafond par plan limite le nombre d'IPs pouvant être ajoutées à la fois. Une réponse non autorisée signifie que votre palier n'inclut pas la fonctionnalité ; contactez le support pour passer à un plan supérieur.
Ajouter une IP à la liste blanche
curl -X POST 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'import requests
res = requests.post('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
print(res.text)const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123', {
method: 'POST',
});
console.log(await res.text());require 'net/http'
res = Net::HTTP.post(URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'), nil)
puts res.bodyRetirer une IP de la liste blanche
curl -X DELETE 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123'import requests
res = requests.delete('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
print(res.text)const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123', {
method: 'DELETE',
});
console.log(await res.text());require 'net/http'
uri = URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN&ip=123.123.123.123')
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.delete(uri.request_uri) }
puts res.bodyVoir les IPs en liste blanche
Renvoie la liste actuelle des IPs en liste blanche pour votre token, au format JSON.
curl 'https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN'import requests
res = requests.get('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN')
print(res.json())const res = await fetch('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN');
console.log(await res.json());require 'net/http'
puts Net::HTTP.get(URI('https://api.crawlbase.com/proxy/whitelist_ips?token=YOUR_TOKEN'))Backconnect vs Smart AI Proxy
| Smart AI Proxy | Backconnect | |
|---|---|---|
| Cas d'usage | Mode facile : routage automatique, contournement anti-bot | Accès direct au pool d'IP, rotation personnalisée |
| Rendu JS | Disponible | Non (proxy brut) |
| Réessai automatique | Oui | Non, à gérer vous-même |
| Sessions persistantes | Via en-tête | Via nom d'utilisateur |
| Idéal pour | La plupart des utilisateurs | Scrapers personnalisés, recherche réseau |
Backconnect est l'outil de plus bas niveau. Si vous n'avez pas de raison précise de l'utiliser, Smart AI Proxy donne de meilleurs résultats avec moins d'effort.